编号:06第1页共16页河北工业大学计算机软件技术基础(VC)2012年课程设计报告学院城市学院班级电信类C1201姓名学号成绩____一、题目:机房收费管理系统(06)二、设计思路1、总体设计1)分析程序的功能根据这个机房收费管理系统,实现对学生上机收费的管理。通过对学生信息的录入,可查询该学生的上机信息(学号、班级、姓名、上机起始时间),从而对学生的上机费用进行计算管理。同时还可以显示机器的使用情况。2)系统总体结构该系统主要分为六个模块功能,分别为“进入用户选择界面”、“输入功能”、“计算功能”、“查询功能”、“显示机器使用情况”、“退出”。当输入学生信息后,系统会提供一台电脑并按照顺序编号,从学生上机开始计时,当学生下机时计算上机时间从而计算出上机的费用,当查询学生上机信息时,输入该生电脑编号时,会显示该生的(班级、学号、姓名)。同时还可查询机器使用的情况信息。机房收费管理系统学生信息管理学生上机管理机房运行管理学生信息录入学生信息查询学生上下机时间学生上机费用机器使用情况机器添加与维护编号:06第2页共16页功能模块函数名称用户选择UserChoice输入功能Input计算功能Compute查询学生信息功能FindStudent显示机器使用功能FindCompute退出CanQuit2、各功能模块的设计:说明各功能模块的实现方法1)UserChoice模块该函数返回到用户最初的选择界菜单。要实现的功能是询问用户要选择的功能选项(1、输入学生信息2、计算机是费用3、查询学生上机情况4、显示机器使用情况、5退出),然后判断用户输入是否合法,若合法则继续,不合法则提示用户的输入有误,要求用户请重新输入。代码参见UserChoice函数2)Input模块该函数可输入多名学生信息。根据学生的信息(学号、班级、姓名)进行录入,录入完成后相应的会得到该生的上机时间。代码参见Input函数3)Compute模块该函数计算的的是用户上机时间和上机的费用。当输入要查询的电脑编号时,会计算出并且显示出要查询学生的信息和该生使用计算机的时间以及花费的费用。代码参见Compute函数4)FindStudent模块该函数返回的是录入的学生信息。输入想要查询电脑编号时,会相应的显示出该生的信息。代码参见FindStudent函数5)FindCompute模块该函数返回的是机器的使用情况信息。当输入想要查询电脑编号时,会显示该机器“正在使用”还是“当前空闲”。代码参见FindCompute函数6)CanQuit模块该函数返回的是是否退出。询问用户是否退出系统若选y或Y则不退出继续操作返回用户选择界面否则任意键退出系统。代码参见CanQuit函数编号:06第3页共16页7)创新设计部分创新设计部分分为三部分。一是运用了包含在stdlib.h中的system函数,修改控制台的颜色信息,程序中我改为白字蓝底的模式system(“color1f”),从而使后台界面有所优化。第二个是也运用了包含在stdlib.h中的system函数——清屏功能,system(“cls”),此功能使得界面看起来更加清楚,能够使用户更加清晰直接的的看到自己所要输入和查询的信息,用起来更加方便简洁。三是运用for循环使得输入、查询、显示等功能可连续使用无需返回主菜单,并且针对性较强,可查询指定的学生信息。3、设计中主要困难及解决方案在设计中主要遇到了以下几个问题,一是过多的数据和菜单显得页面太乱,通过上网查资料和与同学的讨论,最终用“清屏system(“cls”)”的这个功能解决了这个问题。二是如何获取系统时间从而得出上机时间,这个问题也是本程序的最大的一个难点,经过各种查询和多方打听终于了解到你须得有“time_tt=time(0);”的声明,函数原型:time_ttime(time_t*timer)函数用途:得到机器的日历时间或者设置日历时间头文件:time.h。三是一开始在运行过程中,输入或查询一个信息后就提示是返回主菜单还是退出系统。。。对于一定数量的的信息输入查询就显得太过繁琐了,所以在每个功能函数中加入了for循环,提示是否继续输入信息或是否继续查询信息,否则退回到主界面。4、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能①、输入学生信息(学号、班级、姓名)时会显示上机时间并存入系统②、当学生下机时,会显示下机时间从而得出上机时长,并计算期上机费用③、期间可查询学生上机情况④、显示机器使用情况(“正在使用”或“电脑空闲”)⑤、在每个功能界面都有退出程序(可随时退出和继续)2)准备的测试数据及运行结果编号:06第4页共16页◆主菜单编号:06第5页共16页◆输入功能编号:06第6页共16页◆查询功能◆显示机器使用情况编号:06第7页共16页编号:06第8页共16页◆上机计费功能三、程序清单1)main主函数编号:06第9页共16页voidmain(){system(color1f);//修改控制台颜色while(true){UserChoice();if(CanQuit())break;}}2)UserChoice函数intUserChoice(){intn;chara;while(true){cout*************欢迎使用机房收费管理系统*************\n;cout\n请选择您所需的功能\n;cout1.输入学生信息\n;cout2.计算机时费用\n;cout3.查询学生上机情况\n;cout4.显示机器使用情况\n;cout5.退出\n;cout\n请输入您的选项:;cinn;cout\n;if(n==1||n==2||n==3||n==4||n==5)break;elsecout您的输入有误,请输入1,2,3,4,5中的一个数字。\n;}switch(n){case1:{for(;;){Input();cout是否继续输入?(y/n)endl;编号:06第10页共16页cina;if(a=='n')break;}break;}case2:{for(;;){Compute();cout是否继续查询?(y/n);cina;if(a=='n')break;}break;}case3:{for(;;){FindStudent();cout是否继续查询?(y/n);cina;if(a=='n')break;}break;}case4:{for(;;){FindComputer();cout是否继续显示机器使用情况?(y/n);cina;if(a=='n')break;}break;}break;编号:06第11页共16页case5:break;}returnn;}3)Input函数voidInput(){system(cls);//清屏time_tt=time(0);charhour[3],minute[3],second[3];intn;//用来保存电脑编号for(n=0;n30;n++){if(comp[n].f==0){comp[n].f=1;break;}}cout***请输入上机学生的学号、班级、姓名、上机起始时间:\n;cout学号:;cincomp[n].stus.num;//机器.学生.cout班级:;cincomp[n].stus.banji;cout姓名:;cincomp[n].stus.name;comp[n].stus.flag=1;strftime(hour,sizeof(hour),%H,localtime(&t));//获取系统时间小时,赋值给hour;comp[n].stus.start.hour=atoi(hour);//把获取的char类型的hour值转换为int类型,并赋值给comp[n].stus.finish.hourstrftime(minute,sizeof(minute),%M,localtime(&t));comp[n].stus.start.minute=atoi(minute);strftime(second,sizeof(second),%S,localtime(&t));comp[n].stus.start.second=atoi(second);编号:06第12页共16页cout\n=================学生信息==================\n\n;cout学生电脑编号:(请记住您的电脑编号):n\n;cout学号:;coutcomp[n].stus.num\n;cout班级:;coutcomp[n].stus.banji\n;cout姓名:;coutcomp[n].stus.name\n;cout上机起始时间:;coutcomp[n].stus.start.hour:;coutcomp[n].stus.start.minute:;coutcomp[n].stus.start.second\n;cout\n===========================================\n\n;}4)Compute函数voidCompute(){system(cls);time_tt=time(0);charhour[3],minute[3],second[3];intn;cout请输入电脑编号:;cinn;strftime(hour,sizeof(hour),%H,localtime(&t));comp[n].stus.finish.hour=atoi(hour);strftime(minute,sizeof(minute),%M,localtime(&t));comp[n].stus.finish.minute=atoi(minute);strftime(second,sizeof(second),%S,localtime(&t));comp[n].stus.finish.second=atoi(second);inth=comp[n].stus.finish.hour-comp[n].stus.start.hour;intm=comp[n].stus.finish.minute-comp[n].stus.start.minute;ints=comp[n].stus.finish.second-comp[n].stus.start.second;if(s0){s=60+s;m--;}if(m0){m=60+m;h--;编号:06第13页共16页}cout\n=================学生信息==================\n\n;cout学号:;coutcomp[n].stus.num\n;cout班级:;coutcomp[n].stus.banji\n;cout姓名:;coutcomp[n].stus.name\n;cout\n===========================================\n;cout\n==============上机时间以及费用===============\n\n;cout上机起始时间:;coutcomp[n].stus.start.hour:;coutcomp[n].stus.start.minute:;coutcomp[n].stus.start.second\n;cout下机时间:;coutcomp[n].stus.finish.hour:;coutcomp[n].stus.finish.minute:;coutcomp[n].stus.finish.second\n;cout上机时长:;couth:;coutm:;couts