机房收费管理系统.docx
- 文档编号:24074396
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:12
- 大小:76.07KB
机房收费管理系统.docx
《机房收费管理系统.docx》由会员分享,可在线阅读,更多相关《机房收费管理系统.docx(12页珍藏版)》请在冰豆网上搜索。
机房收费管理系统
1、题目:
设计一个机房收费管理系统
二、设计思路
1、总体设计
1)分析程序的功能:
设计一个机房收费系统,实现对学生上机收费的管理,从而方便学校机房的管理。
2)系统总体结构:
每一次运行的过程可以由这几部分完成:
输入:
输入学生的上机学号,班级、姓名上级起始时间;计算:
计算每个学生的上机费用;查询:
查找学生上机信息并显示(班级、学号、姓名);显示:
显示机器使用情况信息
总共四个步骤:
模块
函数名称
输入学生信息
Input
查询学生上机情况
Findstunum
计算机时费用
Calculate
显示机器使用情况
Computer
对于每一次运行,关注的数据有三个:
(1)学生的信息
(2)计算机时费用(3)学生上机情况;
对于统计信息需要三个:
(1)学生上机信息并显示(班级、学号、姓名)
(2)显示机器使用情况信息(3)上机学生的学号、班级、姓名、上机起始时间;
这几组数据内部联系很大,所以考虑把他们封装为结构体变量。
机器使用信息需要记录两个:
(1)机器使用的标记
(2)使用机器的学生。
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。
机房收费系统可利用菜单(界面制作switch语句)使用户选择各个功能模块,而后可根据不同的选项进入到不同的功能模块进行执行。
结束程序,选择y之外的任何字母或数字,如果想让程序循环执行,则选择y。
以上功能模块分别用函数来实现,然后由主函数main来调用。
表示信息
成员名称
表示信息
成员名称
时
hour
学号
num
分
minute
班级
class
秒
second
姓名
name
机器使用标记
f
上机起始时间
start,finish
使用机器学生
Studentstus
上机标志
flag
2、各功能模块的设计:
说明各功能模块的实现方法
1)Input模块
该函数为输入学生信息:
学号,姓名,班级,上机起始时间,并对学生是否上机做标记(flag为1,f为1为上机),人数与上机数一致。
2)Findstunum模块
查询功能:
当输入的学号与学生信息中的学号相同时,则输出该生学号,班级,姓名和上下时间,若该生未下机,则下机时间显示0。
下机功能:
询问是否下机,用switch语句控制,若下机则要求输入下机时间,不下机则退出。
3)Calculate(计算)模块
该模块中,由于时、分、秒三个时间单位不统一,首先要统一单位,均用秒做单位(1h=3600s1min=60s),然后判断上机时间是否满一小时,不满一小时按一小时收费,超过一小时再进行计算。
不足一小时按一小时收费,整小时则每小时1元收费。
代码参见Calculate(计算)函数。
4)calout(输出)模块
输出上机学生学号,班级,姓名,若下机显示消费金额,没下机显示“未下机”。
5)computer模块
首先计算机使用情况信息:
通过标记判断机器是否在使用,机器在使用则显示学生信息,机器未使用则显示学生已下机。
通过标记判断机器是否在使用,机器在使用则显示学生信息,机器未使用则显示学生已下机。
2)查询功能:
采取输入的学号与学生信息中的学号是否对应相等来判断。
4、你所设计的程序最终完成的功能
1)说明你编制的程序能完成的功能
输入功能:
输入上机学生的学号,班级,姓名,上机起始时间。
计算功能:
计算每个学生的上机费用,每小时1元。
查询功能:
查找学生上机信息并显示(班级、学号、姓名)
显示机器使用情况信息。
2)准备的测试数据及运行结果
三、程序清单
1)main函数
//主函数
voidmain()
{
while(y)
{
cout<<"选择功能"< cout<<"0输入现在时间"< cout<<"1输入学生信息"< cout<<"2按学号查找"< cout<<"3电脑使用情况"< cout<<"4上机费用"< cout<<"5结束程序"< cout<<"请输入"; cin>>a; switch(a) { case0: time();break; case1: input();break; case2: findstunum();break; case3: computer();break; case4: calout();break; case5: y=0;break; } } } } 2)Input函数 voidinput() { while (1) { cout<<"输入学生的学号班级姓名上机起始时间h-m-s"< cin>>stu[renshu].num>>stu[renshu].banji>>stu[renshu].name>>stu[renshu].start.hour >>stu[renshu].start.minute>>stu[renshu].start.second; stu[renshu].flag=1; comp[renshu].f=1; strcpy(comp[renshu].stus.num,stu[renshu].num); comp[renshu].stus.banji=stu[renshu].banji; strcpy(comp[renshu].stus.name,stu[renshu].name); cout<<"1.继续输入0.结束输入"< cin>>flag; renshu++; if(flag! =1) break;//跳出输入循环 } } 3)Findstunum函数 voidfindstunum() { inta; charxh[10]; cout<<"请输入要查找的学号: "; cin>>xh; for(inti=0;i if(strcmp(stu[i].num,xh)==0) { cout<<"显示学生的学号班级姓名上下时间"< cout< stu[i].start.hour< stu[i].finish.hour< cout<<"是否下机? "< cout<<"1是2否"< cin>>a; switch(a) { case1: { cout<<"输入下机时间h-m-s"< cin>>stu[i].finish.hour>>stu[i].finish.minute>>stu[i].finish.second; stu[i].flag=2; comp[i].f=2; break; } case2: break; } } for(i=0;i if(strcmp(stu[i].num,xh)! =0) cout<<"=====不存在! ! ====="< } doublecal(inti) { intc; doublea,d; c=(((stu[i].finish.hour*3600+stu[i].finish.minute*60+stu[i].finish.second)- (stu[i].start.hour*3600+stu[i].start.minute*60+stu[i].start.second))/3600); d=(((stu[i].finish.hour*3600+stu[i].finish.minute*60+stu[i].finish.second)- (stu[i].start.hour*3600+stu[i].start.minute*60+stu[i].start.second))*1.0000/3600); if(c==0) a=1.0000; if(c>0) { if(d-c>0) a=(c+1)*1.00000; if(d-c==0) a=c*1.00000; } returna; } 4)Computer函数 voidcomputer() { cout<<"=====计算机的使用情况====="< cout<<"计算机编号使用的学生的学号班级姓名"< for(inti=0;i<30;i++) { if(comp[i].f==2) cout< elseif(comp[i].f==1) cout< else cout< } } 5)Calculate函数 doublecal(inti) { intc; doublea,d; c=(((stu[i].finish.hour*3600+stu[i].finish.minute*60+stu[i].finish.second)- (stu[i].start.hour*3600+stu[i].start.minute*60+stu[i].start.second))/3600); d=(((stu[i].finish.hour*3600+stu[i].finish.minute*60+stu[i].finish.second)- (stu[i].start.hour*3600+stu[i].start.minute*60+stu[i].start.second))*1.0000/3600); if(c==0) a=1.0000; if(c>0) { if(d-c>0) a=(c+1)*1.00000; if(d-c==0) a=c*1.00000; } returna; } 6)Calout函数 voidcalout()//计算机时费用 { cout<<"显示学生的学号班级姓名消费金额"< for(inti=0;i { if(stu[i].flag==1) cout< if(stu[i].flag==2) cout< } } 7)Time函数 voidtime() { inth,m,s; cout<<"时间格式h-m-s"< cin>>h>>m>>s; for(inti=0;i if(stu[i].finish.hour! =0||stu[i].finish.minute! =0||stu[i].finish.second! =0)//如果有结束时间,将不对结束时间赋值 ; else//没有结束时间,赋当前时间值 { stu[i].finish.hour=h; stu[i].finish.minute=m; stu[i].finish.second=s; } } 四、对该设计题目有何更完善的方案 1、对自己完成程序进行自我评价。 能独立思考程序并在他人协助下完成程序编写与调试,不能很好的运用所学的知识解决程序中所出现的问题。 通过对课程的设计,使我知道自身的不足,以及C++的深奥,相信自己会在假期中增强对C++的了解及应用. 2、对课题提出更完善的方案 加入创新元素就更好了,以后自己在这方面多努力。 五、收获及心得体 对输入的数据要进行合理性检验,例如数组中存储了30台计算机的信息,用户进行选择时,必须在这个范围内。 由于知识上的缺陷会导致常常出现同样的错误,应认真与人交流汲取知识,自我完善;新的知识可能导致程序的大量简化,思路更清楚结构,结构更简单,应不停的学习,并通过练习提高能力。 程序的编写真的很无聊,很难,在自己努力以及求助他人编完程序以后看着自己的劳动成果,心里是甜的! 日期: 2012年6月28日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机房 收费 管理 系统