C语言程序设计职工工作量统计系统设计.docx
《C语言程序设计职工工作量统计系统设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计职工工作量统计系统设计.docx(24页珍藏版)》请在冰豆网上搜索。
C语言程序设计职工工作量统计系统设计
学院
程序设计工程训练报告
C语言程序设计职工工作量统计系统设计
课程名称C语言程序设计工程训练
姓名
院(系)信息科学与技术学院
专业班级
学号
指导教师
教务处制
1需求分析
设计职工工作量统计系统,使之能提供以下功能:
●系统以菜单方式工作
●输入职工工号和完成的产品数量,允许同一职工有多次输入
●对其完成的产品数量实现累计。
程序按完成数量对他们排序,并确定他们的名次
●完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)
●要求程序用有序链表存储数据信息。
2系统总框图和功能模块说明
2.1系统总框图
图1系统总框图
2.2功能模块说明
1、输入信息模块,完成信息录入功能,把用户从终端键盘输入的信息(工作量,工号,姓名)保存在系统中。
2、浏览信息模块,完成信息输出功能,把系统中已经保存的信息输出,查看排名等
3、初始化系统模块,完成系统初始化操作。
4.输出模块,按需求输出信息。
5、退出系统模块,完成关闭程序操作。
6、修改信息模块,包括修改或添加或删除职工工作量,姓名等信息。
3系统设计
3.1主要结构体
#include
#include
#include
classstu
{
charname[20];
doublemuch,sum;
public:
stu()
{
}
stu(charn[20],doublemuc)
{
strcpy(name,n);
much=muc;
}
doublegetsum()
{
sum=much;
returnsum;
}
friendvoidmain();
};
3.2主要功能函数
输入信息函数
此模块是输入职工信息模块的函数,输入职工的姓名,工号,及工作量。
do{
switch(p)
{
case'0':
{
charc;
charname[20];doublemuch;
do{
cout<<"请输入职工姓名"<cin>>name;
cout<<"请输入产品数量:
"<cin>>much;
file[j]=newofstream("d:
\\document",ios:
:
ate);
*file[j]<<"姓名"<j++;
s[i]=newstu(name,much);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<cin>>c;
flag2=0;
修改工作量函数
此模块要求修改,删除工作量的函数
{
cout<<"请输入您要增加的职工的姓名:
"<cin>>name;
cout<<"请输入产品数量"<cin>>much;
file[j]=newofstream("d:
\\document",ios:
:
ate);
*file[j]<<"姓名"<j++;
s[i]=newstu(name,much);
i++;
}
{
do{
cout<<"请输入您要删除的职工姓名:
"<cin>>name;
for(inth=0;h
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
{cout<<"请输入您要修改的职工的姓名:
"<cin>>name;
for(inth=0;h
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新完成的产品数量:
"<cin>>mat;
s[h]->much+=mat;
cout<<"数据添加成功!
";
}
查询模块函数
此函数提供查询职工工作量,及排名的功能
do{
intflag=0;
cout<<"请输入你要查询的职工姓名"<cin>>n;
for(intj=0;j
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的职工是:
"<<(*s[j]).name<cout<<(*s[j]).name<<"的总产品数量是"<<(*s[j]).getsum()<}
for(intk=0;k
{
cout<"<<""<name<<"总产品数量:
"<<""<<(*s[k]).getsum()<}
break;
}
case'7':
{
intt;stub;
cout<<"本系统所有职工排名如下:
"<for(intx=0;x{
t=x;
for(inty=x+1;y
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!
=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
3.3关键函数流程图
主函数流程图:
输入模块流程图
修改模块函数流程图
4.系统调试及运行界面
显示菜单
输入职工信息界面
输出职工工作量排名
删除职工信息界面
添加职工信息界面
5.设计总结(课程设计心得与体会)
经过几天的C语言课程设计,感觉自己收获不少!
这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。
其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:
返回值函数和不返回值函数两者在主函数中的调用是不同的…………
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。
由于这是第一次进行设计,写文档,难免会写得不好!
请见谅!
!
6.程序代码
#include
#include
#include
classstu
{
charname[20];
doublemuch,sum;
public:
stu()
{
}
stu(charn[20],doublemuc)
{
strcpy(name,n);
much=muc;
}
doublegetsum()
{
sum=much;
returnsum;
}
friendvoidmain();
};
voidmain()
{
cout<<"请选择您需要的操作!
"<cout<<"操作:
"<cout<<"(0)职工数据录入"<cout<<"
(1)增加职工人员"<cout<<"
(2)删除职工人员"<cout<<"(3)新完成的需要添加的产品数量数据"<cout<<"查询:
"<cout<<"(4)按总产品数量查询"<cout<<"(5)按职工姓名查询"<cout<<"(6)输出所有职工的数据"<cout<<"生产量排名名次"<cout<<"(7)按职工生产的总产品数量查询排名"<cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!
"<charp;charw;
stu*s[50];
ofstream*file[50];
inti=0;
intj=0;
boolflag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!
请重新输入:
"<}while(flag2==0);
do{
switch(p)
{
case'0':
{
charc;
charname[20];doublemuch;
do{
cout<<"请输入职工姓名"<cin>>name;
cout<<"请输入产品数量:
"<cin>>much;
file[j]=newofstream("d:
\\document",ios:
:
ate);
*file[j]<<"姓名"<j++;
s[i]=newstu(name,much);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<cin>>c;
flag2=0;
do
{
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case'1':
{
charname[20];doublemuch;
charc;
do
{
cout<<"请输入您要增加的职工的姓名:
"<cin>>name;
cout<<"请输入产品数量"<cin>>much;
file[j]=newofstream("d:
\\document",ios:
:
ate);
*file[j]<<"姓名"<j++;
s[i]=newstu(name,much);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<cin>>c;
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
}while(c=='y');
break;
}
case'2':
{
charname[20];boolflag3=0;charc;
do{
cout<<"请输入您要删除的职工姓名:
"<cin>>name;
for(inth=0;h
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!
请检查输入的正确性!
";
cout<<"要继续删除吗?
(y/n)"<cin>>c;
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
}while(c=='y');
break;
}
case'3':
{
charname[20];doublemat;flag2=0;
charc;
do
{
cout<<"请输入您要修改的职工的姓名:
"<cin>>name;
for(inth=0;h
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新完成的产品数量:
"<cin>>mat;
s[h]->much+=mat;
cout<<"数据添加成功!
";
}
}
if(flag2==0)
{
cout<<"您要修改的职工本来就不存在!
请检查重新输入!
"<}
cout<<"想继续修改吗(y/n)"<cin>>c;
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
}while(c=='y');
break;
}
case'4':
{
doublet;charc;
do
{
intflag1=0;
cout<<"请输入你要查询职工的总产品数量"<cin>>t;
for(intq=0;q
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的职工是:
"<<(*s[q]).name<}
}
if(flag1==0)
cout<<"对不起!
您要查询的职工不存在!
"<cout<<"您想继续查询吗?
(y/n)"<cin>>c;
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
}
while(c=='y');
break;
}
case'5':
{
charn[20];intj=0;charc;
do{
intflag=0;
cout<<"请输入你要查询的职工姓名"<cin>>n;
for(intj=0;j
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的职工是:
"<<(*s[j]).name<cout<<(*s[j]).name<<"的总产品数量是"<<(*s[j]).getsum()<}
}
if(flag==0)
cout<<"对不起!
您要查询的职工不存在!
"<cout<<"您想继续查询吗?
(y/n)"<cin>>c;
if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c;
}
}
while(c=='y');
break;
}
case'6':
{
cout<<"本系统所有职工数据如下:
"<if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!
"<for(intk=0;k
{
cout<"<<""<name<<"总产品数量:
"<<""<<(*s[k]).getsum()<}
break;
}
case'7':
{
intt;stub;
cout<<"本系统所有职工排名如下:
"<for(intx=0;x{
t=x;
for(inty=x+1;y
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!
=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!
";
for(intk=0;k
{
cout<"<<""<name
<<"总产品数量:
"<<""<getsum()<}
break;
}
case'9':
{
intt;stub;
cout<<"本系统所以职工总产品数量排名如下:
"<for(intx=0;x{
t=x;
for(inty=x+1;y
{
if((s[t]->much)<(s[y]->much))
t=y;
if(t!
=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!
";
for(intk=0;k
{
cout<"<<""<name
<<"产品数量:
"<<""<getsum()<}
break;
}
}
cout<<"您想继续进行其他操作吗?
(y/n)"<boolflag4=0;
do
{
cin>>w;
if(w!
='y'&&w!
='n')
cout<<"指令错误!
请重新输入!
"<else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码:
(0)职工数据录入;
(1)增加职工人员;
(2)删除职工人员;(3)新完成需要添加的产品数量数据;(4)按总产品数量查询;(5)按职工姓名查询;(6)输出所有职工的数据;(7)按职工生产的总产品数量查询排名"<cin>>p;
}while(w=='y');
for(intx=0;x
{
deletes[x];
cout<<"删除所有数据成员"<}
程序设计工程训练成绩评定标准表
明细项目
评分等级(含系数)
评分分值
实际得分
考勤
A
(1)
B(0.8)
C(0.5)
D(0.0)
10
工程项目规范
A
(1)
B(0.8)
C(0.5)
D(0.2)
10
工程训练报告
A
(1)
B(0.8)
C(0.5)
D(0.2)
30
设计作品质量
A
(1)
B(0.8)
C(0.5)
D(0.2)
45
材料收集情况
A
(1)
B(0.8)
C(0.5)
D(0.2)
5
综合评分
优
90-100
良
80-89
中
70-79
合格
60-69
不合格
0-59
该生成绩为:
,指导老师(签名):
评定日期:
年月日