c++课程设计保安值班安排系统_第1页
c++课程设计保安值班安排系统_第2页
c++课程设计保安值班安排系统_第3页
c++课程设计保安值班安排系统_第4页
c++课程设计保安值班安排系统_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录一 课程设计目的 4二 课程设计任务和内容 4三 系统设计方案 5 3.1系统详细描述53.2功能模块划分6四 系统实现与测试64.1 主菜单模块实现66694.2 排班模块实现101010184.3 输入资料模块实现2021244.4 查询资料模块实现4.4.1流程图254.4.2代码274.4.3模块测试274.5 删除资料模块实现4.5.1流程图284.5.2代码294.5.3模块测试314.6 修改资料模块实现4.7 查询工龄模块实现4.7.1流程图324 .7.2代码324.7.3模块测试344.8 查询休息时间模块实现4.8.1流程图344.8.2代码344.8.3模块测试3

2、54.9 输出资料模块实现4.9.1代码364.9.2模块测试384.10 修改密码模块实现4.10.1流程图394.10.2代码404.10.3模块测试414.11 退出模块实现4.11.1代码42五 程序调试中出现的问题及解决方法42六 参考文献42七 附录42一、课程设计的目的1) 学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2) 全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序

3、设计风格。3) 掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。4) 在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。2、 课程设计任务和内容学校有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日,每个人先选择自己的休息,然后经过分析和商量,列出有关的可能的方案。系统的创建与实施可以为生活区或者企业提供很方便的服务。便于保安人员的工作服务。管

4、理员可以修改值班的信息以及基本的信息。同时为了使每个人都满意,可以实施轮流的方案,这样每个人就处于平等的优势,当然保安人员可以请假或者经过他们自己的商量,暂时的替班。三 系统设计方案 3.1系统详细描述软件使用说明:保安值班安排系统主要有四个功能:第一 保安排班管理,管理员可以通过登录界面进入信息界面查看保安人员的值班信息;第二 管理员管理,管理员可以通过信息修改表修改保安人员的值班信息:第三 保安排班查询.,保安人员可以通过登陆界面查询值班情况:第四程 序管理权限的设置,即管理员和保安人员的登陆后进入的界面不同。基本要求有下面几点:1该程序要求应该是能够输入每人选择的休息日期,由于工作需要进

5、行轮休制度,一星期中每人只能休息一天。2先让每一个人选择自己认为合适的休息日,判断是否符合条件3此程序可以打印轮休的所有可能方案。当然使每个人都满意。4每个人先给出自己的想休息的星期天,然后,经过商量,让主管人员给出可能的方案。概要设计:3.2流程图如图3.2:开始排班输入资料查询删除资料更改资料查询工龄查询休息时间输出资料修改密码退出 图3.2输入相应数字可进入相应菜单,删除和更改资料需要输入密码。四 系统实现与测试4.1 主菜单 41.1流程图开始输出可选择项判断是否退出结束退出输入选择的项目进行选择的操作 int main()int m;string p;int t=1;while(t!

6、=0)system(cls);cout*欢迎进入排班系统*endl;cout# * #endl;cout# * #endl;cout# * #endl;cout# *快乐排班* #endl;cout# * #endl;cout# * #endl;cout# * #endl;cout*欢迎进入排班系统*endl;cout排班请输入1;输入资料请输入2;查询请输入3;删除资料endl请输入4;更改资料请输入5;查询工龄请输入6;查询休息endl时间请输入7;输出资料请输入8;修改密码请输入9;退出endl请输入0m;if(m=1)case1();else if(m=2)if(case0()=0)c

7、ase2();else if(m=3)case3();else if(m=4)if(case0()=0)case4();else if(m=5)if(case0()=0)case2();else if(m=6)case6();else if(m=7)case7();else if(m=8)case8();else if(m=9)case9();else if(m=0)t=0;elsecout无该选项请重新选择!endl;cout输入任意数值返回主菜单。p;return 0;测试如下:4.2 模块一:排班模块开始输出主页面输入1输出输入选择输入选择输出可能方案If(保存)输入选择的方案保存voi

8、d case1(void)int m,i;string o;int z7;int j,k,h,n=0,flag=1;int a,b,c,d,e,f,g;int achoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;int q77;int A7;cout*欢迎进入排班系统*endl;cout# 特别注意! #endl;cout# 请各位工作人员输入自己想要轮休的日期 #endl;cout# 请先选择你要选择的次数 #endl;cout# 再选择你要轮休的日期 #endl;cout# #endl;cout# #endl;cout# #end

9、l;cout*欢迎进入排班系统*endl;cout请赵输入你想选择的次数endl;scanf(%d,&achoice);cout请赵输入轮休日期endl: ;for(j=0;jachoice;j+)scanf(%d,&qj0);cout请钱输入你想选择的次数endl;scanf(%d,&bchoice);cout请钱输入轮休日期endl: ;for(j=0;jbchoice;j+)scanf(%d,&qj1);cout请孙输入你想选择的次数endl;scanf(%d,&cchoice);cout请孙输入轮休日期endl: ;for(j=0;jcchoice;j+)scanf(%d,&qj2);

10、cout请李输入你想选择的次数endl;scanf(%d,&dchoice);cout请李输入轮休日期endl: ;for(j=0;jdchoice;j+)scanf(%d,&qj3);cout请周输入你想选择的次数endl;scanf(%d,&echoice);cout请周输入轮休日期endl: ;for(j=0;jechoice;j+)scanf(%d,&qj4);cout请吴输入你想选择的次数endl;scanf(%d,&fchoice);cout请吴输入轮休日期endl: ;for(j=0;jfchoice;j+)scanf(%d,&qj5);cout请陈输入你想选择的次数endl;s

11、canf(%d,&gchoice);cout请陈输入轮休日期endl: ;for(j=0;jgchoice;j+)scanf(%d,&qj6);for(a=0;aachoice&qa0!=0;a+) for(b=0;bbchoice&qb1!=0;b+)for(c=0;ccchoice&qc2!=0;c+)for(d=0;ddchoice&qd3!=0;d+)for(e=0;eechoice&qe4!=0;e+)for(f=0;ffchoice&qf5!=0;f+)for(g=0;ggchoice&qg6!=0;g+)A0=qa0; A1=qb1; A2=qc2; A3=qd3; A4=qe4

12、; A5=qf5; A6=qg6;flag=1;for(k=0;k6;k+)for(h=k+1;h7;h+)if(Ak=Ah) flag=0; if(flag=1)cout得到以下组合:endl;cout赵: ; cout星期A0endl;cout钱: ; cout星期A1endl;cout孙: ; cout星期A2endl;cout李: ; cout星期A3endl;cout周: ; cout星期A4endl;cout吴: ; cout星期A5endl;cout陈: ; cout星期A6endl;cout ;n+;if(n=0)cout对不起,你们的选择不能实现排班,请重新选择!endl;e

13、lse cout保存请输入1;cout退出请输入0m;if(m=0)cout ;else if(m=1)cout请按次序和选择的方案输入休息日endl;for(i=0;izi; fstream outfile(f1.txt,ios:out); if(!outfile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(i=0;i=6;i+)outfilezi ;outfile.close();cout已保存!endl;cout请输入任意值返回主菜单。o;输入1回车将分别请钱、赵、孙、李、周、吴、陈输入选择次数和轮休日期然后自动排班,输入2选择方案并保存数据。

14、 图4 4.3 模块二:输入资料模块输入1输出主页面开始 输入密码If(正确)输出请输入资料输入资料If(保存)保存void case2(void)int n,t;string i;struct baoanint num;string name;char sex;int age;string telephone;int day;int days;string addr;baoan8;fstream infile(f2.txt,ios:in);if(!infile)coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;nbaoann.numbaoann.n

15、amebaoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ;infile.close();cout请按提示输入信息按回车确认。endl;coutn;if(n=8)cout无此工号请重新输入n;baoann.num=n;;coutbaoann.sex;coutbaoann.telephone;coutbaoann.age;coutbaoann.day;coutbaoann.days;coutbaoann.addr;cout输入以下资料:endl;coutbaoann.num ba

16、 baoann.sex baoann.telephone baoann.age baoann.day baoann.days baoann.addrendl;cout确认请输入2;重新输入请输入1t;if(t=2)fstream outfile(f2.txt,ios:out);if(!outfile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;n=7;n+)outfilebaoann.num baoann.sex baoann.telephone baoann.age baoann.day baoan

17、n.days baoann.addr ;outfile.close();cout已储存!endl;else if(t=1)cout未储存请重新选择!endl;cout请输入任意值返回主菜单。i;输入2将要求输入密码输入正确密码后将提示输入各种信息男m女w,输入后将要求输入2保存数据,输入1将不保存。4.4 模块三:查询模块开始输出主菜单输入3输入查询工号输出信息void case3(void)int n;string i;struct baoanint num;string name;char sex;int age;string telephone;int day;int days;stri

18、ng addr;baoan8;fstream infile(f2.txt,ios:in); if(!infile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;baoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ;infile.close();cout信息按工号、姓名、性别、 、年龄、休息日、工龄、地址如下:endl;for(n=1;n=7;n+)coutbaoann.num baoann.

19、sex baoann.telephone baoann.age baoann.day baoann.days baoann.addrendl;cout请输入任意值返回主菜单!i;输入3本模块查询所有信息从“f2.txt”中读取信息并显示信息按工号、姓名、性别、 、年龄、休息日、工龄、地址显示。4.5 模块四:删除资料模块开始输出主菜单输入4输入密码 否 是If(输入0)If(正确) 否输入删除工号void case4(void)int n;string i;struct baoanint num;string name;char sex;int age;string telephone;int

20、 day;int days;string addr;baoan8;fstream infile(f2.txt,ios:in); if(!infile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;baoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ;infile.close();cout请输入要删除的工号:n;baoann.num=0;=x;baoann.sex=x;baoann.teleph

21、one=0;baoann.age=0;baoann.day=0;baoann.days=0;baoann.addr=x;fstream outfile(f2.txt,ios:out);if(!outfile)coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;n=7;n+)outfilebaoann.num baoann.sex baoann.telephone baoann.age baoann.day baoann.days baoann.addr ;outfile.close();cout已删除!endl请输入任意值返回主

22、菜单i;输入4要求输入密码输入正确密码后输入要删除信息的工号然后将删除该工号下所有信息!4.6 模块五:修改资料模块和模块2相似 图4.64.7 模块六:查询工龄从“f2.txt”文件夹中提取信息输出工龄开始输出主菜单输入6从文件提取信息输出所有工龄void case6(void)int n;string i;struct baoanint num;string name;char sex;int age;string telephone;int day;int days;string addr;baoan8;fstream infile(f2.txt,ios:in); if(!infile)

23、 coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;baoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ;infile.close();for(n=1;n=7;n+)的工龄为:;coutbaoann.days天endl;cout请输入任意值返回主菜单!i;4.8 模块七:查询休息时间从“f2.txt”文件夹中提取信息输出休息时间开始输出主菜单输入6从文件提取信息输出所有工龄void case

24、7(void)int i;string o;int a7;fstream infile(f1.txt,ios:in); if(!infile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(i=0;iai;coutendl钱周a0休息;赵周a1休息;孙周a2休息;李周a3休息;周周a4休息;吴周a5休息;陈周a6休息endlendlendl;infile.close();cout输入任意值返回主菜单o;4.9 模块八:输出模块从“f2.txt”文件夹中提取信息输出到“f3.txt”中将输出所有信息4.9.1代码void case8(void)int n;

25、string i;struct baoanint num;string name;char sex;int age;string telephone;int day;int days;string addr;baoan8;fstream infile(f2.txt,ios:in); if(!infile) coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;baoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ;infile

26、.close();fstream outfile(f3.txt,ios:out);if(!outfile)coutopen error!endl请退出程序并检查相应数据文件!endl;for(n=1;n=7;n+)outfile工号为:baoann.num的性别为:baoann.sex, 为:baoann.telephone,年龄为:baoann.age,休息日为:baoann.day,工龄为:baoann.days,地址为:baoann.addrendl;cout已输出到“f3.txt”文件中endl输入任意值返回主菜单。i;4.9.2测试4.10 模块九:修改密码输入

27、10输入原密码判断是否争确输入0返回输入新密码保存void case9(void)int s;string a,b,i;s=case0();while(s=0)cout请输入新密码:a;cout请再次输入密码:b;if(a=b)cout修改成功!endl;fstream outfile(f4.txt,ios:out);if(!outfile)coutopen error!endl请退出程序并检查相应数据文件!endl;outfilea;outfile.close();s=1;cout请输入任意值返回主菜单!i;else cout输入错误请重新输入!endl;管理员才有权限修改和删除资料需要密码

28、,修改密码先要输入正确密码然后输入两次新密码后保存新密码。4.11 模块十:退出int main()int m;string p;int t=1;while(t!=0)system(cls);cout*欢迎进入排班系统*endl;cout# * #endl;cout# * #endl;cout# * #endl;cout# *快乐排班* #endl;cout# * #endl;cout# * #endl;cout# * #endl;cout*欢迎进入排班系统*endl;cout排班请输入1;输入资料请输入2;查询请输入3;删除资料endl请输入4;更改资料请输入5;查询工龄请输入6;查询休息e

29、ndl时间请输入7;输出资料请输入8;修改密码请输入9;退出endl请输入0m;if(m=1)case1();else if(m=2)if(case0()=0)case2();else if(m=3)case3();else if(m=4)if(case0()=0)case4();else if(m=5)if(case0()=0)case2();else if(m=6)case6();else if(m=7)case7();else if(m=8)case8();else if(m=9)case9();else if(m=0)t=0;elsecout无该选项请重新选择!endl;cout输入任

30、意数值返回主菜单。p;return 0;五 程序调试中出现的问题及解决方法1. 曾在选择时输入字母会死循环 解决方法把整形定义为字符串;2. 修改密码时忘记密码无法退出 解决方法添加了个退出函数;3. 找不到保存文件时陷入死循环 解决方法输出找不到数据文件;六 参考文献1谭浩强,C+程序设计,清华大学出版社, 2011。2郑莉,C+程序设计(第三版),清华大学出版社, 2005。 3钱能,C+程序设计教程,清华大学出版社, 2004。4武俊亮,visual c+课程设计与系统开发案例,清华出版社。5黄维通,Visual C+程序设计教程,清华大学出版社, 2005。七 附录(源代码)#incl

31、ude #include #include using namespace std;int case0()int s=1;string a,b,c; c=0;fstream infile(f4.txt,ios:in);if(!infile)coutopen error!endl请退出程序并检查相应数据文件!a;infile.close();while(s=1)cout请输入密码:b;if(b=a)s=0;else if(b=c)s=2;else cout密码错误请重新输入!退出请输入0。endl;return s;void case1(void)int m,i;string o;int z7;

32、int j,k,h,n=0,flag=1;int a,b,c,d,e,f,g;int achoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;int q77;int A7;cout*欢迎进入排班系统*endl;cout# 特别注意! #endl;cout# 请各位工作人员输入自己想要轮休的日期 #endl;cout# 请先选择你要选择的次数 #endl;cout# 再选择你要轮休的日期 #endl;cout# #endl;cout# #endl;cout# #endl;cout*欢迎进入排班系统*endl;cout请赵输入你想选择的次数e

33、ndl;scanf(%d,&achoice);cout请赵输入轮休日期endl: ;for(j=0;jachoice;j+)scanf(%d,&qj0);cout请钱输入你想选择的次数endl;scanf(%d,&bchoice);cout请钱输入轮休日期endl: ;for(j=0;jbchoice;j+)scanf(%d,&qj1);cout请孙输入你想选择的次数endl;scanf(%d,&cchoice);cout请孙输入轮休日期endl: ;for(j=0;jcchoice;j+)scanf(%d,&qj2);cout请李输入你想选择的次数endl;scanf(%d,&dchoice);cout请李输入轮休日期endl: ;for(j=0;jdchoice;j+)scanf(%d,&qj3);cout请周输入你想选择的次数endl;scanf(%d,&echoice);cout请周输入轮休日期endl: ;for(j=0;jechoice;j+)scanf(%d,&qj4);cout请吴输入你想选择的次数endl;scanf(%d,&fchoice);cout请吴输入轮休日期endl: ;for(j=0;jf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论