《C++机房收费系统文档.docx》由会员分享,可在线阅读,更多相关《C++机房收费系统文档.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、辽宁工程技术大学C语言课程设计报告题目: 专业年级: 学号: 姓名: 指导教师: 20 15 年 7 月 问题定义选定的题目内容:选题十二:机房收费管理系统(1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。 (2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位) (3)修改功能:修改学生上机的个人档案(如:增添) (4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。 实际完成的软件功能:(1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。
2、 (2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位) (3)修改功能:修改学生上机的个人档案(如:增添) (4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案(5)显示功能:显示全部机器的使用信息开发工具 Visual C+ 6.0数据结构 /(1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。 /(2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位) /(3)修改功能:修改学生上机的个人档案(如:增
3、添)/(4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。#include #include #include #include struct time-/*时间*/int hour;int minute;int second;typedef struct-/*学生信息*/char num20;-/*学号*/char banji; -/*班级*/int flag; -/*用来标注学生是否上机*/char name20; -/*姓名*/struct time kaishi,jiesu;-/*上机起始时间*/Student;Student stu50; -/
4、*信息库*/struct computer-/*机器信息*/int f; -/*用来标注这台机器是否使用*/Student stut; -/*使用这台机器的学生*/com30; -/*30台机器*/int k;int main_menu()-/*主菜单*/char c;dosystem(cls);-/*清屏*/printf(t机房收费管理系统n);printf(t 1.输入学生信息 n);printf(t 2.上机时间 n);printf(t 3.下机时间 n); printf(t 4.查询上机时间及费用 n);printf(t 5.电脑使用情况显示 n);printf(t 0.退出系统 n)
5、;printf(tn);printf(t请选择菜单序号(0-5): );c=getchar();while(c5); -/*判断输入是否合法*/return(c-0);int input(Student stu,int n) -/*输入学生信息*/int i=0;char sign=0;while(sign!=n&sign!=N) -/*判断是否继续输入学生信息*/getchar();-/*吃掉回车*/printf(ntt 学号:);gets(stun+i.num);printf(tt 班级:);scanf(%s,&stun+i.banji);getchar();printf(tt 姓名:);
6、gets(stun+i.name);printf(tt 继续输入? 是请按Y,否请按N:);scanf(%c,&sign);stun+i.flag=0; -/*初始化为未上机*/i+;return(n+i);void shangji(Student stu,int n) -/*上机*/char num_t20,name_t20;int i,s;doprintf(ntt 使用姓名输入1ntt 使用学号输入2ntt 请输入序号:);scanf(%d,&s);while(s!=1&s!=2);getchar();if(s=1)printf(tt 请输入姓名:);gets(name_t);for(i=
7、0;in;i+)-/*查找信息库中是否有该学生信息*/if(strcmp(stui.name,name_t)=0)break;elseprintf(tt 请输入学号:);gets(num_t);for(i=0;in;i+)if(strcmp(stui.num,num_t)=0)break;if(i=n)printf(tt 无该生记录!请输入该生信息后再上机!n);return;else if(stui.flag=1)printf(tt 该生正在上机!n);return;elsefor(k=0;k30;k+)if(comk.f=0)comk.f=1; -/*该台机器标记为使用*/printf(t
8、t请输入上机时间(当前时间):);scanf(%d:%d:%d,&stui.kaishi.hour,&stui.kaishi.minute,&stui.kaishi.second);stui.flag=1; -/*该生标记为上机*/comk.stut=stui; -/*记录使用这台机器的学生信息*/break;if(k=30)printf(tt 机器全部使用中,请稍后再上机!n);void calculate(Student stu) -/*上机时间及费用计算*/int t;struct time timet;if(stu.jiesu.secondstu.kaishi.second)if(st
9、u.jiesu.minute=0)stu.jiesu.hour-=1;stu.jiesu.minute=59;elsestu.jiesu.minute-=1;timet.second=stu.jiesu.second+60-stu.kaishi.second;elsetimet.second=stu.jiesu.second-stu.kaishi.second;if(stu.jiesu.minutestu.kaishi.minute)stu.jiesu.hour-=1;timet.minute=stu.jiesu.minute+60-stu.kaishi.minute;elsetimet.mi
10、nute=stu.jiesu.minute-stu.kaishi.minute;timet.hour=stu.jiesu.hour-stu.kaishi.hour;if(timet.second=0&timet.minute=0)t=timet.hour;elset=timet.hour+1; -/*不满一小时按一小时算*/printf(tt 该生上机用时%d小时,费用为%d元n,t,t);void xiaji(Student stu,int n) -/*下机*/char num_t20,name_t20;int i,s;doprintf(ntt 使用姓名输入1ntt 使用学号输入2ntt 请
11、输入序号:);scanf(%d,&s);while(s!=1&s!=2);getchar();if(s=1)printf(tt 请输入姓名:);gets(name_t);for(i=0;in;i+)if(strcmp(stui.name,name_t)=0)break;elseprintf(tt 请输入学号:);gets(num_t);for(i=0;in;i+)if(strcmp(stui.num,num_t)=0)break;if(i=n)printf(tt 没有这个学生!n);return;else if(stui.flag=0)printf(tt 该生未上机或已下机!n);return
12、;elseprintf(tt 请输入下机时间(当前时间):);scanf(%d:%d:%d,&stui.jiesu.hour,&stui.jiesu.minute,&stui.jiesu.second);calculate(stui); -/*计算并输出上机费用*/stui.flag=0; -/*该生标记为未上机*/for(k=0;k3;k+)-/*将刚下机同学使用的机器标记为未使用*/if(strcmp(comk.stut.num,stui.num)=0)comk.f=0; -/*该机器标记为未使用*/break;void chaxun(Student stu,int n) -/*上机时间查
13、询*/char num_t20,name_t20;int i,s;doprintf(ntt 使用姓名输入1ntt 使用学号输入2ntt 请输入序号:);scanf(%d,&s);while(s!=1&s!=2);getchar();if(s=1)printf(tt 请输入姓名:);gets(name_t);for(i=0;in;i+)if(strcmp(stui.name,name_t)=0)break;elseprintf(tt 请输入学号:);gets(num_t);for(i=0;in;i+)if(strcmp(stui.num,num_t)=0)break;if(i=n)printf(
14、tt 记录无此学生!n);return;else if(stui.flag=1)printf(tt 该生正在上机,上机起始时间为:%d:%d:%dn,stui.kaishi.hour,stui.kaishi.minute,stui.kaishi.second);elseprintf(tt 该生未上机或下机!n);void qingkuang()-/*全部机器使用情况显示*/printf(t 机器号 是否使用 使用者 学号 班级 上机时间n);printf(t-n);for(k=0;k30;k+)if(comk.f=0)printf(t%02d否-:-:-n,k+1);elseprintf(t%
15、02d是%-10s%-10s%2s%02d:%02d:%02dn,k+1,comk.stut.name,comk.stut.num,comk.stut.banji,comk.stut.kaishi.hour,comk.stut.kaishi.minute,comk.stut.kaishi.second);printf(t);system(pause);-/*屏幕显示内容停留一段时间,直到继续操作为止*/int main()-/*主函数*/int n=0;for(k=0;k30;k+)-/*全部机器标记为未使用*/comk.f=0;for(;)switch(main_menu()case 1:s
16、ystem(cls);printf(*输入学生信息*n);n=input(stu,n);break;case 2:system(cls);printf(*学生上机*n);shangji(stu,n);printf(tt);system(pause);break;case 3:system(cls);printf(*学生下机*n);xiaji(stu,n);printf(tt);system(pause);break;case 4:system(cls);printf(*查询上机时间及费用*);chaxun(stu,n);printf(tt);system(pause);break;case 5
17、:system(cls);printf(*电脑使用情况显示*n);qingkuang();break;case 0:system(cls);printf(*感谢使用机房收费管理系统,欢迎下次使用!*);printf(tt);system(pause);exit(0);return 0;算法描述 程序调试情况 1.在调试过程中发现自己犯了很多细节性的错误,比如标点符号的错误,然后一个一个发现,修正,过程很冗杂,都要怪自己在编写的时候不细心,挺后悔的,以后在做一件事的时候就要认真,以避免不必要的麻烦。 2此外,若只是最后对学生的信息进行系统的上机时间和下机时间的输入就使得学生在使用计算机时无法查询
18、自己上机的相关信息。最后通过上机时学生信息的查找(增添)并输入该学生的上机时间(当前时间),下机时学生信息查找且输入下机时间(当前时间),使得学生能更好的查询自己使用计算机的情况。 3.考虑到现实因素,机房的计算机数目有限,不能不受限制的使用。因此,我对该题目所做的要求进行了拓展,即显示所有计算机的使用情况,这样能更直观的了解当前机房所有计算机的使用情况。 课程设计总结 在做这次课程设计的过程中,我遇到了很多的困难;在发现解决这些问题的过程中,我收获了宝贵的经验:1) 在设计程序之前,要认真阅读题目及要求,对你所设计的题目和内容有一个系统的了解,知道所设计的题目和内容包含那些资源。2) 设计程
19、序过程中,最重要的是要有一个清晰的思路和一个完整的软件流程图。所以,先把设计原理与整体思路弄清楚,再把流程图画出来,按照流程图一步步的编程,这样做起来井井有条,事半功倍。3) 在设计程序时,不要浮躁 ,要有耐心,按照错误提示一步步修改,切记“反复修改,不断改进”是程序设计的必经之路;不要因为错误多就气馁,切记发现错误也是取得成绩的一种。4) 要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。5) 在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,避免在跌倒过的地方再次跌倒。6) 在设计过程中,若有些问题是自己尽力思考后仍不能解决的,要向老师或同学请教。参考文献或网站 C程序设计(第四版) 谭浩强 著C程序设计(第四版)学习辅导 谭浩强 著