C语言程序设计职工工作量统计系统设计.docx
- 文档编号:7664029
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:24
- 大小:372.52KB
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< "<<""< "<<""<<(*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< "<<""< "<<""<<(*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< "<<""< <<"总产品数量: "<<""< } 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< "<<""< <<"产品数量: "<<""< } 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 该生成绩为: ,指导老师(签名): 评定日期: 年月日 name<<"总产品数量:name<<"总产品数量:namegetsum()<namegetsum()<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 职工 工作量 统计 系统 设计