机房收费管理系统.docx
- 文档编号:3068974
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:11
- 大小:77.23KB
机房收费管理系统.docx
《机房收费管理系统.docx》由会员分享,可在线阅读,更多相关《机房收费管理系统.docx(11页珍藏版)》请在冰豆网上搜索。
机房收费管理系统
一、题目:
设计一个机房收费管理系统
二、设计思路
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输入现在时间"〈〈endl; cout<〈"1输入学生信息”<〈endl; cout〈<”2按学号查找”〈〈endl; cout〈〈”3电脑使用情况”<〈endl; cout〈<”4上机费用”<〈endl; 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"〈〈endl; 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< banji<<’\t’〈〈stu[i]。 name〈<'\t'〈< stu[i].start。 hour〈〈stu[i].start.minute〈 start。 second<〈"——-"〈〈 stu[i]。 finish。 hour〈 finish。 minute〈 cout〈〈”是否下机? "<〈endl; 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〈renshu;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〈<"=====计算机的使用情况====="<〈endl; cout〈〈"计算机编号使用的学生的学号班级姓名”< for(inti=0;i〈30;i++) { if(comp[i]。 f==2) cout< elseif(comp[i].f==1) cout<〈i<〈'\t'<〈comp[i]。 stus。 num〈〈’\t'<〈comp[i].stus.banji<〈’\t'<〈comp[i].stus。 name<〈endl; 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<<"显示学生的学号班级姓名消费金额"<〈endl; for(inti=0;i〈renshu;i++) { if(stu[i]。 flag==1) cout< banji<<'\t'〈 name<<'\t'〈 if(stu[i].flag==2) cout< } } 7)Time函数 v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机房 收费 管理 系统