“风险分担游戏”实验报告
一、实验名称:
“风险分担游戏”实验
二、实验日期:
20xx年11月19日10:00~11:50
三、实验目的和要求:
实验目的:通过“风险分担游戏”软件实验,使学生理解供应链库存策略中的“风险分担”效应。
实验要求:遵守实验纪律,实验前熟悉“风险分担游戏”软件的使用。
四、实验内容:
模拟管理有风险分担功能的集中化库存系统以及没有风险分担功能的非集中化库存系统,比较两个系统的绩效。
五、实验仪器、设备及材料:
计算机,安装Windows XP和“风险分担游戏”实验软件。
六、实验原理:
传统模式下每一个零售商独立持有库存和安全库存,将会比让库存和安全库存都共享使用的总库存水平要高。风险分担系统使几个零售商建立联合库存,能保持一个比较低水平的库存,也能在提供相同服务水平的情况下使成本更低。“风险分担游戏”通过模拟,比较集中式和分散式系统的绩效。
七、实验步骤:
1、启动“风险分担游戏”游戏程序
2、根据程序中事先提供的数据,在相应的输入空格中输入数据,满足初步需求
3、按照零售商响应发出订单
4、通过发货满足订单
5、程序自动计算成本、收入、服务水平
八、实验原始纪录:
图1 最后一轮状态图
图2 订单报告1
图3 订单报告2
图4 需求汇总1
图5 需求汇总2
九、实验数据计算结果及分析:
通过模拟10周“风险分担”试验,我们可以得出集中式系统和分散化系统的第11周库存量、收入、成本上的比较如表1。
表1
通过表上的数据我们可以明显看到集中式系统比分散系统的绩效好,虽然相对100%的分散化系统,集中式系统服务满足率只有98%,但集中式系统的利润优势更大,而且集中式系统的库存量也较低,使得库存成本也较分散化系统低。从上诉的几方面优势中,我们最终得出了集中式更适合分担风险。
十、思考题:
为什么集中式库存管理模式可带来风险分担的优势?
答:首先风险分担说明了需求汇集会减少需求的变动,因为当把不同地区的需求汇集起来,一个顾客的高需求很可能会被另一个顾客的低需求所补偿。需求变动的减少使得安全库存减少,从而降低了平均库存。集中式库存管理模式正是利用这样的模式分担了风险,而在分散化系统中,在不同市场的仓库之间重新分配库存的过程几乎是不可能的。
在安全库存方面,集中式系统相对分散化系统,安全库存会减少,而这种减少的数量依赖于一些参数(变异系数,不同市场的相关需求度)。
在服务水平上,由于服务水平的提高依赖于变异系数和不同市场的相关需求度。当集中式系统和分散化系统拥有同样的总安全库存时,集中式系统的服务水平相对较高。
在管理费用上,由于规模经济的因素,集中式系统相对分散化系统而言,所需要的管理费用较少。
从上述几方面我们可以得出集中式库存管理模式可带来风险分担的优势,但是由于分散化系统中,仓库距离顾客更近,其所需的相应时间要少于集中式系统。由于存在从工厂到仓库和从仓库到顾客的运输成本,分散化系统和集中式系统在这两种运输成本中拥有各自的优势,因此在总运输成本上,分散化系统和集中式系统很难直观判断谁更优。
十一、实验结论
通过“风险分担游戏”实验模拟,比较集中式和分散式系统的绩效,我们可以明显看到集中式系统比分散系统的绩效好,从而可以得出集中式库存管理模式可带来风险分担的优势。经过自己动手将我们所了解到的仅仅限于书本上的理论知识,进一步深入理解。在实验的过程中遇到的困难,我们通过和师的沟通交流都一一得到解决。
《数据结构》实验报告
题 目: 连子游戏
班 级:
姓 名:
学 号:
完成日期:
1.任务描述
在围棋盘上轮流放棋子,当两个同颜色的棋子的连线上有一个其他颜色的棋子时,该棋子被拿掉。被拿掉的棋子不可再使用。当一方最先无棋子可走时,则失败,同时另一方获胜。编程实现可供两人玩的该游戏。
功能要求
1.棋盘大小由玩家指定,棋子黑白两色,双方棋子数相等,数量由玩家指定,但不大于棋盘上可布棋子数。
2.一方胜利后,允许玩家选择重新开始游戏或退出。
2.需求分析
这个题目就是要要求完成一个两人小游戏的开发,游戏的规则很简单,就是要求在类似于五子棋的棋盘之上进行,当任意两个同色子之间全都是异色的棋子的时候,将中间的棋子拿掉。另,要求用户可以输入棋盘大小和棋子总数,并且在最后的时候允许用户选择是否继续游戏。
三、程序设计
1.概要设计
(1)各函数的定义:
1、void load(void)
无输入输出;
将文件夹中的图片调入程序,并将其用一维数组存储起来,以待调用;
2、void print1(void)
无输入输出;
在面板的右侧画出当前执子色;
3、void draw(int x, int y, char a)
无输入输出;
将数组map【】【】中存储的信息打印到屏幕上;
4、bool judge(int x, int y, )
输入:鼠标点击的横纵坐标所化成的xy值;
输出:当前位置为空返回1,当前位置有子返回0;
功能:判断当前落子位置是否已有子;
5、bool win(void)
输入:无;
输出:棋盘上已满返回0,棋盘上有空位返回1;
功能:判断棋盘是否已满;
6、bool quit(void)
输入:无;
输出:当棋盘上仍有棋子存在且剩余的有棋子的时候返回1,否则返回0;
功能:判断当前有子可下且下了有意义;
7、bool ask(void)
输入:无;
输出:白子黑子数目及是否继续的选项;
功能:判断游戏的输赢及是否继续游戏;
8、void play(void)
无输入输出;
进行游戏;
2.流程图
4.详细设计
#include <graphics.h>
#include <cstdio>
/*******************************定义全局变量*****************************/
char map[25][25]//棋盘
IMAGE img[6];//保存图片
int black, white;/双方的棋子数
char today; //当前轮到谁走
int ppp; //棋子总数
int kkk;//棋盘大小
int shang,xia,zuo,you,zuoshang,zuoxia,youshang,youxia;
/**********************************定义函数*****************************/
void load(void) //加载图片到数组
{
loadimage(&img[0], "图片\\黑空.jpg");
loadimage(&img[1], "图片\\白空.jpg");
loadimage(&img[2], "图片\\黑子黑空.jpg");
loadimage(&img[3], "图片\\黑子白空.jpg");
loadimage(&img[4], "图片\\白子黑空.jpg");
loadimage(&img[5], "图片\\白子白空.jpg");
}
void print(void) //画棋盘
{
int x, y;
black = white = 0;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
switch(map[x][y])
{
case 0:
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[0]);
else
putimage(30 * y, 30 * x, &img[1]);
break;
case 'B':
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[2]);
else
putimage(30 * y, 30 * x, &img[3]);
black++;
break;
case 'W':
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[4]);
else
putimage(30 * y, 30 * x, &img[5]);
white++;
break;
}
}
inline void print1(void) //画当前谁走的
{
setcolor(WHITE);
int a1,b1,c1,d1,a2,b2,c2,d2;
a1=30*kkk+30;
b1=30*kkk/4-30;
c1=30*kkk+60;
d1=kkk/4*30;
a2=a1;
b2=kkk/4*3*30;
c2=c1;
d2=30*kkk/4+30;
bar(a1,b1,c1,d1);
bar(a2,b2,c2,d2);
if(today == 'B')
putimage(a1,b1, &img[3]);
else
putimage(a2,b2, &img[4]);
}
void draw(int x, int y, char a) //下当前子判断应否将棋子拿掉
{
char b = ((a == 'B') ? 'W' : 'B'); //敌方子
int x1, y1, x2, y2;
bool sign = false; //是否越过敌方子
for(x1 = x - 1; x1 >= 0 && map[x1][y]; x1--) //判断上方
{
if(map[x1][y] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1; x2 > x1; x2--){
map[x2][y] = 0;
shang=1;
}
}
break;
}
}
sign = false;
for(x1 = x + 1; x1 < kkk && map[x1][y]; x1++) //判断下方
{
if(map[x1][y] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1; x2 < x1; x2++){
map[x2][y] = 0;
xia=1;
}
}
break;
}
}
sign = false;
for(y1 = y - 1; y1 >= 0 && map[x][y1]; y1--) //判断左方
{
if(map[x][y1] == b)
sign = true; //先要越过至少一个异色子
else
{
if(sign)
{
for(y2 = y - 1; y2 > y1; y2--){
map[x][y2] = 0;
zuo=1;
}
}
break;
}
}
sign = false;
for(y1 = y + 1; y1 < kkk && map[x][y1]; y1++) //判断右方
{
if(map[x][y1] == b)
sign = true;
else
{
if(sign)
{
for(y2 = y + 1; y2 < y1; y2++){
you=1;
map[x][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x - 1, y1 = y - 1; x1 >= 0 && y1 >= 0 && map[x1][y1]; x1--, y1--) //左上方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1, y2 = y - 1; x2 > x1 && y2 > y1; x2--, y2--){
zuoshang=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x + 1, y1 = y + 1; x1 < kkk && y1 < kkk && map[x1][y1]; x1++, y1++) //右下方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1, y2 = y + 1; x2 < x1 && y2 < y1; x2++, y2++){
youxia=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x + 1, y1 = y - 1; x1 < kkk && y1 >= 0 && map[x1][y1]; x1++, y1--) //左下方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1, y2 = y - 1; x2 < x1 && y2 > y1; x2++, y2--){
zuoxia=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x - 1, y1 = y + 1; x1 >= 0 && y1 < kkk && map[x1][y1]; x1--, y1++) //右上方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1, y2 = y + 1; x2 > x1 && y2 < y1; x2--, y2++){
youshang=1;
map[x2][y2] = 0;
}
}
break;
}
}
map[x][y] = a;
print();
ppp--;
}
bool judge(int x, int y) //判断当前是否可以落下,同draw函数
{
if(map[x][y]){ //如果当前不是空的返回假值
return false;
}else
return true;
}
bool win(void) //判断是否有空可走
{
int x, y;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
if(judge(x, y, today))
return true;
return false;
}
bool quit(void) //判断是否有棋可下且下过之后有意义(当前执子色所在棋盘上没有对应的棋子则游戏无意义)
{
int x, y;
bool b = false, w = false;
for(x = 0; x < kkk&&ppp>0; x++)
for(y = 0; y < kkk; y++)
{
if(map[x][y] == 'B')
b = true;
else if(map[x][y] == 'W')
w = true;
}
return(b && w);
}
bool ask(void) //弹出对话框进行判断选择
{
HWND wnd = GetHWnd();
int key;
char str[30] = "黑:", s[2];
sprintf(s, "%d", black);
strcat(str, s);
strcat(str, " 白:");
sprintf(s, "%d", white);
strcat(str, s);
strcat(str, "\n是否重新开始?");
if(black == white)
key = MessageBox(wnd, str, "和局", MB_YESNO | MB_ICONQUESTION);
else if(black > white)
key = MessageBox(wnd, str, "黑胜", MB_YESNO | MB_ICONQUESTION);
else
key = MessageBox(wnd, str, "白胜", MB_YESNO | MB_ICONQUESTION);
if(key == IDYES)
return true;
else
return false;
}
void play(void) //游戏过程
{
MOUSEMSG m;
int x,y;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
map[x][y] = 0;
int mm,nn;
mm=kkk/2;//居中坐标
nn=kkk/2-1;
map[nn][mm] = map[mm][nn] = 'B';
map[nn][nn] = map[mm][mm] = 'W';//初始化最初棋盘上的四个子
today = 'B';
print();
print1();
do
{
do
{
while(true)
{
m = GetMouseMsg(); //获取鼠标消息
if(m.uMsg == WM_LBUTTONDOWN){
shang,xia,zuo,you,zuoshang,zuoxia,youshang,youxia=0;
break;
} //如果左键点击
}
x = m.y / 30;
y = m.x / 30;//将鼠标定义的位置转换为xy的数值
if(judge(x, y, today)) //如果当前位置有效
{
draw(x, y, today); //下子
today = ((today == 'B') ? 'W' : 'B');
print1(); //交换
}
}while(win() && quit()); //如果当前无棋可走且无处可走
today = ((today == 'B') ? 'W' : 'B');
print1();
}while(win() && quit()&&ppp>0); //三层判断
}
int main(void) //主函数
{
int l,j;
do
{
closegraph();
printf("请输入棋盘的大小");
scanf("%d",&kkk);
int i,o;
for(i=0;i<kkk;i++){
for(o=0;o<kkk;o++)
map[i][o]=0;
}
printf("请输入双方的棋子总数:");
scanf("%d",&ppp);
l=30*(kkk+3);
j=30*kkk;
initgraph(l,j);
load();
setbkcolor(WHITE);
cleardevice();
play();
}while(ask());
closegraph();
return 0;
}
6.实验心得
本次的课程设计实验让我学到了很多,首先学到的是我们在编程时不要总是把它当成一个任务在编,而是要真正的去考虑使用者对程序的需求以及一些对应的特殊情况,不能题目中没有详细的说明就忽略掉。比如一些输入不合法以及一些程序中现实上不合理的情况都应该想到并解决。
此次的试验相当麻烦,由于这个题目中要求用到图形界面而我们并没有对图形编辑MFC有足够的了解,学习的时候发现影响因素太多,于是从网上找到了这种将图形带入数组中,根据横纵坐标平铺而成图像的方法来完成任务,其中,由于横纵坐标换算的缘故,一旦将图形的大小改变,跟着窗口大小、鼠标坐标定位、贴图位置都会发生一系列的变换十分繁琐,所以以后在编程的过程之中应当对于整体有一个清晰的认知,才方便运作。
7.使用说明
由于牵扯到了图形界面,vc需要装graphics.h方可正常编译否则会出错,可直接安装easyx,win xp/8皆可运行此文件
8.附录
#include <graphics.h>
#include <cstdio>
/*******************************定义全局变量*****************************/
char map[25][25]; //棋盘
IMAGE img[6]; //保存图片
int black, white; //双方的棋子数
char today; //当前轮到谁走
int ppp;
int kkk;
int shang,xia,zuo,you,zuoshang,zuoxia,youshang,youxia;
/**********************************定义函数*****************************/
void load(void) //加载图片
{
loadimage(&img[0], "图片\\黑空.jpg");
loadimage(&img[1], "图片\\白空.jpg");
loadimage(&img[2], "图片\\黑子黑空.jpg");
loadimage(&img[3], "图片\\黑子白空.jpg");
loadimage(&img[4], "图片\\白子黑空.jpg");
loadimage(&img[5], "图片\\白子白空.jpg");
}
void print(void) //画棋盘
{
int x, y;
black = white = 0;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
switch(map[x][y])
{
case 0:
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[0]);
else
putimage(30 * y, 30 * x, &img[1]);
break;
case 'B':
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[2]);
else
putimage(30 * y, 30 * x, &img[3]);
black++;
break;
case 'W':
if((x + y) % 2)
putimage(30 * y, 30 * x, &img[4]);
else
putimage(30 * y, 30 * x, &img[5]);
white++;
break;
}
}
inline void print1(void) //画当前谁走的
{
setcolor(WHITE);
int a1,b1,c1,d1,a2,b2,c2,d2;
a1=30*kkk+30;
b1=30*kkk/4-30;
c1=30*kkk+60;
d1=kkk/4*30;
a2=a1;
b2=kkk/4*3*30;
c2=c1;
d2=30*kkk/4+30;
bar(a1,b1,c1,d1);
bar(a2,b2,c2,d2);
if(today == 'B')
putimage(a1,b1, &img[3]);
else
putimage(a2,b2, &img[4]);
}
void draw(int x, int y, char a) //下当前子
{
char b = ((a == 'B') ? 'W' : 'B'); //敌方子
int x1, y1, x2, y2;
bool sign = false; //是否越过敌方子
for(x1 = x - 1; x1 >= 0 && map[x1][y]; x1--) //判断上方
{
if(map[x1][y] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1; x2 > x1; x2--){
map[x2][y] = 0;
shang=1;
}
}
break;
}
}
sign = false;
for(x1 = x + 1; x1 < kkk && map[x1][y]; x1++) //判断下方
{
if(map[x1][y] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1; x2 < x1; x2++){
map[x2][y] = 0;
xia=1;
}
}
break;
}
}
sign = false;
for(y1 = y - 1; y1 >= 0 && map[x][y1]; y1--) //判断左方
{
if(map[x][y1] == b)
sign = true;
else
{
if(sign)
{
for(y2 = y - 1; y2 > y1; y2--){
map[x][y2] = 0;
zuo=1;
}
}
break;
}
}
sign = false;
for(y1 = y + 1; y1 < kkk && map[x][y1]; y1++) //判断右方
{
if(map[x][y1] == b)
sign = true;
else
{
if(sign)
{
for(y2 = y + 1; y2 < y1; y2++){
you=1;
map[x][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x - 1, y1 = y - 1; x1 >= 0 && y1 >= 0 && map[x1][y1]; x1--, y1--) //左上方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1, y2 = y - 1; x2 > x1 && y2 > y1; x2--, y2--){
zuoshang=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x + 1, y1 = y + 1; x1 < kkk && y1 < kkk && map[x1][y1]; x1++, y1++) //右下方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1, y2 = y + 1; x2 < x1 && y2 < y1; x2++, y2++){
youxia=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x + 1, y1 = y - 1; x1 < kkk && y1 >= 0 && map[x1][y1]; x1++, y1--) //左下方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x + 1, y2 = y - 1; x2 < x1 && y2 > y1; x2++, y2--){
zuoxia=1;
map[x2][y2] = 0;
}
}
break;
}
}
sign = false;
for(x1 = x - 1, y1 = y + 1; x1 >= 0 && y1 < kkk && map[x1][y1]; x1--, y1++) //右上方
{
if(map[x1][y1] == b)
sign = true;
else
{
if(sign)
{
for(x2 = x - 1, y2 = y + 1; x2 > x1 && y2 < y1; x2--, y2++){
youshang=1;
map[x2][y2] = 0;
}
}
break;
}
}
map[x][y] = a;
print();
ppp--;
}
bool judge(int x, int y) //判断当前是否可以落下,同draw函数
{
if(map[x][y]){ //如果当前不是空的返回假值
return false;
}else
return true;
}
bool win(void) //判断是否有棋可走
{
int x, y;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
if(judge(x, y ))
return true;
return false;
}
bool quit(void) //判断是否有棋
{
int x, y;
bool b = false, w = false;
for(x = 0; x < kkk&&ppp>0; x++)
for(y = 0; y < kkk; y++)
{
if(map[x][y] == 'B')
b = true;
else if(map[x][y] == 'W')
w = true;
}
return(b && w);
}
bool ask(void) //弹出对话框
{
HWND wnd = GetHWnd();
int key;
char str[30] = "黑:", s[2];
sprintf(s, "%d", black);
strcat(str, s);
strcat(str, " 白:");
sprintf(s, "%d", white);
strcat(str, s);
strcat(str, "\n是否重新开始?");
if(black == white)
key = MessageBox(wnd, str, "和局", MB_YESNO | MB_ICONQUESTION);
else if(black > white)
key = MessageBox(wnd, str, "黑胜", MB_YESNO | MB_ICONQUESTION);
else
key = MessageBox(wnd, str, "白胜", MB_YESNO | MB_ICONQUESTION);
if(key == IDYES)
return true;
else
return false;
}
void play(void) //游戏过程
{
MOUSEMSG m;
int x,y;
for(x = 0; x < kkk; x++)
for(y = 0; y < kkk; y++)
map[x][y] = 0;
int mm,nn;
mm=kkk/2;
nn=kkk/2-1;
map[nn][mm] = map[mm][nn] = 'B';
map[nn][nn] = map[mm][mm] = 'W';
today = 'B';
print();
print1();
do
{
do
{
while(true)
{
m = GetMouseMsg(); //获取鼠标消息
if(m.uMsg == WM_LBUTTONDOWN){
shang,xia,zuo,you,zuoshang,zuoxia,youshang,youxia=0;
break;
} //如果左键点击
}
x = m.y / 30;
y = m.x / 30;
if(judge(x, y)) //如果当前位置有效
{
draw(x, y, today); //下子
today = ((today == 'B') ? 'W' : 'B');
print1(); //交换
}
}while(win() && quit()); //如果当前无棋可走
today = ((today == 'B') ? 'W' : 'B');
print1();
}while(win() && quit()&&ppp>0); //双层判断
}
int main(void) //主函数
{
int l,j;
do
{
closegraph();
printf("请输入棋盘的大小:");
scanf("%d",&kkk);
int i,o;
for(i=0;i<kkk;i++){
for(o=0;o<kkk;o++)
map[i][o]=0;
}
printf("请输入双方的棋子总数:");
scanf("%d",&ppp);
l=30*(kkk+3);
j=30*kkk;
initgraph(l,j);
load();
setbkcolor(WHITE);
cleardevice();
play();
}while(ask());
closegraph();
return 0;
}
/***********************************THE END************************************/
广东金融学院实验报告课程名称风险评估附页康和电气设备制造有限公司电气设备制造业行业风险识别与管理案例分析电气设备制造业有如下特点1…
风险评估实验报告实验班级与专业系专业实验报告人学号实验一完成日期年月日实验二完成日期年月日实验三完成日期年月日实验四完成日期年月日…
松江区中心医院实验室风险评估报告20XX年度评估小组成员:***实验室质量与安全第一责任人签名:日期:一、实验室风险评估内容概述1…
风险评估实验报告实验班级与专业实验小组成员报告人实验一完成日期实验二完成日期实验三完成日期实验四完成日期实验五完成日期广东金融学院…
广东金融学院实验报告课程名称风险评估附页一财产风险分析20xx年北京奥运会开幕式火灾风险分析电气火灾风险损失暴露类型财产损失暴露的…
万全镇郑楼小学王积奖长达近两个星期的浙师大(平阳点)中小学体育教师90学时培训结束了,本次培训共有学员100人,都是脱产学习,理论…
我厂根据近几年来永胜县的果脯资源十分丰富,由于我县加大退耕还林和实施天保工程的力度,经济林果种植业的步伐逐步加快和农业产业化开发的…
徐夕锋xx年是学校事业发展兴旺发达的一年,学校在中考、高考、校园建设、学校内务管理等各方面均取得了显著的成绩。一年来本人在党总支及…
XXXX煤矿顶板会战工作总结根据XXXX公司煤炭事业部《关于开展20xx年秋冬百日安全活动的通知》(XXXX煤安【20xx】27号…
覃塘区交通局军(警)民共建精神文明工作总结覃塘区交通局作为20xx-20xx年区级文明单位,是区人民政府主管公路和水路交通行业的工…