1、最新c+课程设计保安排班系统汇总c+课程设计保安排班系统 计算机学院网络工程专业程序设计综合课程设计报告(2010/2011学年 第一学期)* *学生班级: 网络工程102001学生学号: * * 2011年 12月30日一、课程设计的目的1)学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3)掌握程序设计中的常用算法和C语言的
2、编程技巧和上机调试程序的方法。4)在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。二、课程设计的任务学校有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日,每个人先选择自己的休息,然后经过分析和商量,列出有关的可能的方案。系统的创建与实施可以为生活区或者企业提供很方便的服务。便于保安人员的工作服务。管理员可以修改值班的信息以及基本的信息。同时为了使每个人都满
3、意,可以实施轮流的方案,这样每个人就处于平等的优势,当然保安人员可以请假或者经过他们自己的商量,暂时的替班。三 系统设计方案 3.1系统详细描述本保安值班安排系统主要有以下四个功能:1)保安排班管理,管理员可以通过登录界面进入信息界面查看保安人员的值班信息;2)管理员管理,管理员可以通过信息修改表修改保安人员的值班信息:3)保安排班查询.,保安人员可以通过登陆界面查询值班情况:4)程序管理权限的设置,即管理员和保安人员的登陆后进入的界面不同。本系统基本操作要求有以下几点:1)该程序要求应该是能够输入每人选择的休息日期,由于工作需要进行轮休制度,一星期中每人只能休息一天。2)先让每一个人选择自己
4、认为合适的休息日,判断是否符合条件3)此程序可以打印轮休的所有可能方案。当然使每个人都满意。4)每个人先给出自己的想休息的星期天,然后,经过商量,让主管人员给出可能的方案。3.2模块结构图系统模块设计的模块结构图如下:开始排班输入资料查询删除资料更改资料查询工龄查询休息时间输出资料修改密码退出 图3.1主模块图注释:输入相应数字可进入相应菜单,删除和更改资料需要输入密码。四 系统实现与测试4.1 主菜单 4.1.1主菜单流程图 图4.1主菜单流程图4.1.2主菜单代码int main() int m; string p; int t=1; while(t!=0) system(cls); co
5、ut*欢迎进入排班系统*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)case2(
6、); 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; else cout无该选项请重新选择!endl; cout输入任意数值返回主菜单。p; return 0;4.1.3主菜单测试运行本保安排班安排系统,进入主菜单界面(如图4.2):图4.2主菜单测试图4.2排班
7、模块的实现4.2.1排班流程图 图4.3排班模块流程图4.2.2排班模块代码void 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; cou
8、t# 再选择你要轮休的日期 #endl; cout# #endl; cout# #endl; cout# #endl; cout*欢迎进入排班系统*endl; cout请赵输入你想选择的次数achoice; cout请赵输入轮休日期endl: ; for(j=0;jqj0; cout请钱输入你想选择的次数endl; scanf(%d,&bchoice); cout请钱输入轮休日期endl: ; for(j=0;jqj1; cout请孙输入你想选择的次数cchoice; cout请孙输入轮休日期endl: ; for(j=0;jqj2; cout请李输入你想选择的次数dchoice; cout请
9、李输入轮休日期endl: ; for(j=0;jqj3; cout请周输入你想选择的次数echoice; cout请周输入轮休日期endl: ; for(j=0;jqj4; cout请吴输入你想选择的次数fchoice; cout请吴输入轮休日期endl: ; for(j=0;jqj5; cout请陈输入你想选择的次数gchoice; cout请陈输入轮休日期endl: ; for(j=0;jqj6; for(a=0;aachoice&qa0!=0;a+) for(b=0;bbchoice&qb1!=0;b+) for(c=0;ccchoice&qc2!=0;c+) for(d=0;ddcho
10、ice&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; 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
11、星期A2endl; cout李: ; cout星期A3endl; cout周: ; cout星期A4endl; cout吴: ; cout星期A5endl; cout陈: ; cout星期A6endl; cout ; n+; if(n=0) cout对不起,你们的选择不能实现排班,请重新选择!endl; else 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) couto
12、pen error!endl请退出程序并检查相应数据文件!endl; for(i=0;i=6;i+) outfilezi ; outfile.close(); cout已保存!endl; cout请输入任意值返回主菜单。o;4.2.3排班模块测试输入1回车将分别请钱、赵、孙、李、周、吴、陈输入选择次数和轮休日期然后自动排班,输入2选择方案并保存数据。(如图4.4) 图4.4排班模块测试图1 图4.5排班模块测试图2 图4.6排班测试图3图4.7排班测试图44.3输入资料模块4.3.1输入资料模块流程图 N Y 图4.8输入资料模块流程图4.3.2输入资料模块代码void case2(void)
13、 int n,t; string i; struct baoan int 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.namebaoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.da
14、ysbaoann.addr; ; infile.close(); cout请按提示输入信息按回车确认。endl; coutn; if(n=8) cout无此工号请重新输入n; baoann.num=n; coutbaoann.name; coutbaoann.sex; coutbaoann.telephone; coutbaoann.age; coutbaoann.day; coutbaoann.days; coutbaoann.addr; cout输入以下资料:endl; coutbaoann.num baoann.name baoann.sex baoann.telephone baoan
15、n.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.name baoann.sex baoann.telephone baoann.age baoann.day baoann.days baoann.addr ; outfile.close();
16、 cout已储存!endl; else if(t=1) cout未储存请重新选择!endl; cout请输入任意值返回主菜单。i;4.3.3输入资料模块测试输入2将要求输入密码输入正确密码后将提示输入各种信息男m女w,输入后将要求输入2保存数据,输入1将不保存。测试如图4.9。图4.9输入资料模块图4.4查询模块实现4.4.1查询模块流程图图4.10查询模块流程图4.4.2查询模块代码void case3(void) int n; string i; struct baoan int num; string name; char sex; int age; string telephone;
17、int day; int days; string addr; baoan8; fstream infile(f2.txt,ios:in); if(!infile) coutopen error!endl请退出程序并检查相应数据文件!endl; for(n=1;nbaoann.numbaoann.namebaoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ; infile.close(); cout信息按工号、姓名、性别、电话、年龄、休息日、工龄、地址如下:endl; for(n=1;n=7;n+) cou
18、tbaoann.num baoann.name baoann.sex baoann.telephone baoann.age baoann.day baoann.days baoann.addrendl; cout请输入任意值返回主菜单!i;4.4.3查询模块测试输入3本模块查询所有信息从“f2.txt”中读取信息并显示信息按工号、姓名、性别、电话、年龄、休息日、工龄、地址显示。 图4.12查询模块测试图4.5删除资料模块4.5.1删除资料流程图图4.13删除资料流程图4.5.2删除资料代码void case4(void) int n; string i; struct baoan int n
19、um; 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.namebaoann.sexbaoann.telephonebaoann.agebaoann.daybaoann.daysbaoann.addr; ; infile.close(); cout请
20、输入要删除的工号:n; baoann.num=0; baoann.name=x; baoann.sex=x; baoann.telephone=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.name baoann.sex baoann.telephone baoann.
21、age baoann.day baoann.days baoann.addr ; outfile.close(); cout已删除!endl请输入任意值返回主菜单i;4.5.3删除资料测试输入4要求输入密码输入正确密码后输入要删除信息的工号然后将删除该工号下所有信息!图4.14删除资料测试图4.6修改资料模块本模块结构与输入资料模块模块相同,流程图参考图4.8。(测试图如图4.15)图4.15修改资料模块测试图4.7查询工龄模块的实现从“f2.txt”文件夹中提取信息输出工龄4.7.1查询工龄流程 图图4.16查询工龄流程图4.7.2查询工龄代码void case6(void) int n; string i; struct baoan int 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.namebaoann.s