1、机房收费管理系统一、题目:设计一个机房收费管理系统二、设计思路1、总体设计1)分析程序的功能:设计一个机房收费系统,实现对学生上机收费的管理,从而方便学校机房的管理.2)系统总体结构:每一次运行的过程可以由这几部分完成:输入:输入学生的上机学号,班级、姓名上级起始时间;计算:计算每个学生的上机费用;查询:查找学生上机信息并显示(班级、学号、姓名);显示:显示机器使用情况信息 总共四个步骤:模块函数名称输入学生信息Input查询学生上机情况Findstunum计算机时费用Calculate显示机器使用情况Computer对于每一次运行,关注的数据有三个:(1)学生的信息 (2)计算机时费用 (3
2、)学生上机情况;对于统计信息需要三个: (1)学生上机信息并显示(班级、学号、姓名) (2) 显示机器使用情况信息 (3)上机学生的学号、班级、姓名、上机起始时间;这几组数据内部联系很大,所以考虑把他们封装为结构体变量.机器使用信息需要记录两个:(1)机器使用的标记 (2)使用机器的学生。根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。机房收费系统可利用菜单(界面制作switch语句)使用户选择各个功能模块,而后可根据不同的选项进入到不同的功能模块进行执行。结束程序,选择y之外的任何字母或数字,如果想让程序循环执行,则选择y.以上功能模块分别用函数来实现,然后由主函数main来调用
3、。表示信息成员名称表示信息成员名称时hour学号num分minute班级class秒second姓名name机器使用标记f上机起始时间start,finish使用机器学生Student stus上机标志flag2、各功能模块的设计:说明各功能模块的实现方法1)Input模块该函数为输入学生信息:学号,姓名,班级,上机起始时间,并对学生是否上机做标记(flag为1,f为1为上机),人数与上机数一致.2)Findstunum模块查询功能:当输入的学号与学生信息中的学号相同时,则输出该生学号,班级,姓名和上下时间,若该生未下机,则下机时间显示0。下机功能:询问是否下机,用switch语句控制,若下机
4、则要求输入下机时间,不下机则退出。3)Calculate(计算)模块该模块中,由于时、分、秒三个时间单位不统一,首先要统一单位,均用秒做单位(1h=3600s 1min=60s),然后判断上机时间是否满一小时,不满一小时按一小时收费,超过一小时再进行计算.不足一小时按一小时收费,整小时则每小时1元收费.代码参见Calculate(计算)函数.4)calout(输出)模块输出上机学生学号,班级,姓名,若下机显示消费金额,没下机显示“未下机”。5)computer模块首先计算机使用情况信息:通过标记判断机器是否在使用,机器在使用则显示学生信息,机器未使用则显示学生已下机.通过标记判断机器是否在使用
5、,机器在使用则显示学生信息,机器未使用则显示学生已下机。2)查询功能:采取输入的学号与学生信息中的学号是否对应相等来判断.4、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能输入功能:输入上机学生的学号,班级,姓名,上机起始时间.计算功能:计算每个学生的上机费用,每小时1元。查询功能:查找学生上机信息并显示(班级、学号、姓名)显示机器使用情况信息。2)准备的测试数据及运行结果三、程序清单1)main函数/主函数void main() while (y) cout”选择功能”endl; cout0输入现在时间endl; cout”1输入学生信息endl; cout”2按学号查找”en
6、dl; cout”3电脑使用情况”endl; cout4上机费用”endl; cout5结束程序endl; coutsturenshu.numsturenshu。banjisturenshu。namesturenshu。start.hour sturenshu。start。minutesturenshu。start。second; sturenshu.flag=1; comprenshu。f=1; strcpy(comprenshu.stus。num,sturenshu。num); comprenshu。stus.banji=sturenshu。banji; strcpy(comprenshu
7、.stus。name,sturenshu.name); cout1.继续输入 0。结束输入”flag; renshu+; if (flag!=1) break; /跳出输入循环 3)Findstunum函数void findstunum() int a; char xh10; cout”请输入要查找的学号 :”; cinxh; for(int i=0;irenshu;i+) if(strcmp(stui.num,xh)=0) cout”显示学生的 学号 班级 姓名 上下时间”endl; coutstui.numtstui.banjitstui。namet stui.start.hourstui
8、.start.minutestui.start。second”-” stui。finish。hourstui。finish.minutestui.finish。secondendl; cout是否下机?”endl; cout”1 是 2否”endl; cina; switch (a) case 1: cout”输入下机时间 hm-s”stui.finish。hourstui。finish。minutestui.finish。second; stui。flag=2; compi.f=2; break; case 2:break; for(i=0;irenshu;i+) if(strcmp(stu
9、i.num,xh)!=0) cout=不存在!=”endl;double cal(int i) int c; double a,d; c=(((stui.finish。hour3600+stui.finish.minute*60+stui.finish。second) (stui.start。hour*3600+stui.start.minute60+stui。start。second)/3600); d=((stui。finish.hour*3600+stui。finish。minute60+stui.finish.second) (stui.start.hour3600+stui。star
10、t。minute*60+stui.start。second)*1.0000/3600); if(c=0) a=1。0000; if(c0) if(dc0) a=(c+1)1.00000; if(d-c=0) a=c*1。00000; return a;4)Computer函数void computer() cout”=计算机的使用情况=endl; cout”计算机编号 使用的学生的学号 班级 姓名 endl; for(int i=0;i30;i+) if(compi.f=2) coutit”学生已下机endl; else if(compi.f=1) coutitcompi。stus。numtc
11、ompi。stus.banjitcompi。stus。nameendl; else coutit该计算机未被使用”0) a=(c+1)1.00000; if(dc=0) a=c*1。00000; return a;6)Calout函数void calout() /计算机时费用 cout显示学生的 学号 班级 姓名 消费金额endl; for(int i=0;irenshu;i+) if(stui。flag=1) coutstui.numtstui.banjitstui.nametcal(i)t”未下机”endl; if(stui.flag=2) coutstui。numtstui.banjit
12、stui。nametcal(i)endl; 7)Time函数void time() int h,m,s; cout”时间格式hm-shms; for(int i=0;irenshu;i+) if(stui。finish.hour!=0stui。finish。minute!=0|stui.finish。second!=0) /如果有结束时间,将不对结束时间赋值 ; else /没有结束时间,赋当前时间值 stui。finish。hour=h; stui。finish.minute=m; stui。finish。second=s; 四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。能
13、独立思考程序并在他人协助下完成程序编写与调试,不能很好的运用所学的知识解决程序中所出现的问题。通过对课程的设计,使我知道自身的不足,以及C+的深奥,相信自己会在假期中增强对C+的了解及应用。2、对课题提出更完善的方案加入创新元素就更好了,以后自己在这方面多努力。五、收获及心得体对输入的数据要进行合理性检验,例如数组中存储了30台计算机的信息,用户进行选择时,必须在这个范围内。由于知识上的缺陷会导致常常出现同样的错误,应认真与人交流汲取知识,自我完善;新的知识可能导致程序的大量简化,思路更清楚结构,结构更简单,应不停的学习,并通过练习提高能力。程序的编写真的很无聊,很难,在自己努力以及求助他人编完程序以后看着自己的劳动成果,心里是甜的!日期: 2012年6月28日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1