课程设计报告课程设计题目:机房收费管理系统学号:2013052112姓名:刘名专业:信息与计算科学班级:信息131指导教师:孙雪莲2015年3月18日1.实验题目:《机房收费管理系统》设计任务(1)输入功能:输入30名学生的学号、班级、姓名、上机起止时间。(2)计算功能:计算每个学生的上机费用。(上机费用=上机时间*1.0/h,不足一小时按一小时计算)(3)查询功能:按条件(班级、学号、姓名、上机时间)显示学生信息。2.实验时间,地点实验时间:15周实验地点:软件楼2083.实验目的:通过对基本数据类型、语句、数组、函数、结构、指针以及文件等的操作,使学生全面掌握结构化程序设计的基本方法。4.实验要求:从课程设计的目的出发,通过课程设计的各个环节,达到以下教学要求:(1)进一步掌握C语言程序设计的基本思想和方法;(2)掌握结构化程序设计的基本原理及应用;5.实验思路:需求分析:根据机房收费管理设计的要求,需要设计三个功能,分别是输入功能,计算功能和查询功能。在输入功能方面,需要把学号、班级、姓名、上机时间等输入进系统中。在计算功能方面,需要计算出每个学生的上机所用的费用。在查询功能方面,要能够按照查询条件,查询出相应的班级、学号、姓名、上机时间等学生信息。在设计工程中,把每个功能使用自定义函数的方式书写,并最后用switch语句在主函数中调用,使用模块化设计的总体思路。流程图为:主菜单查询输入计算学号班级姓名上机时间学号班级姓名上机时间上机费用6.实现过程:#includestdio.h/*I/O函数*/#includestring.h/*字符串函数*/#includestdlib.h/*标准库函数*/structtime/*定义时间结构*/{inthour;/*时*/intminute;/*分*/};typedefstructSTUDENT/*定义学生信息结构*/{intno;/*学号*/charcla[10];/*班级*/charname[10];/*姓名*/inttime_hour;/*上机时间*/inttime_minute;structtimebegin,end;/*嵌套时间结构*/};structSTUDENTstudent[30];staticinti=0;/*全局静态变量*/voidinsert();/*输入功能函数*/voidend_money();/*结账功能函数*/voidselect_no();/*学号查询功能函数*/voidselect_name();/*姓名查询功能函数*/voidselect_cla();/*班级查询功能函数*/intmain()/*主函数*/{inti;for(;;)/*主菜单*/{printf(\t\t*********************************\n);printf(\t\t*********机房收费管理系统********\n);printf(\t\t*********************************\n);printf(1.---------------输入学生信息:\n);printf(2.---------------结账:\n);printf(3.---------------按学号查询:\n);printf(4.---------------按班级查询:\n);printf(5.---------------按姓名查询:\n);printf(6.---------------退出系统:\n);printf(\n\n^^^^^^^^^^^^^^^^^^^^^^^编程人员:刘忠杨^^^张鼎^^^^^^^^^^^^^^^^^^^^^^^^^^^^);printf(\n\n请选择功能:);scanf(%d,&i);switch(i)/*选择分支结构*/{case1:{system(cls);insert();}break;case2:{system(cls);end_money();}break;case3:{system(cls);select_no();}break;case4:{system(cls);select_cla();}break;case5:{system(cls);select_name();}break;case6:{return0;}}}system(pause);return0;}voidinsert()/*输入功能*/{printf(请输入学号:);scanf(%d,&student[i].no);printf(请输入姓名:);scanf(%s,&student[i].name);printf(请输入班级:);scanf(%s,&student[i].cla);printf(请输入上机时间:);scanf(%d:%d,&student[i].begin.hour,&student[i].begin.minute);i=i+1;system(pause);system(cls);}voidend_money()/*计算功能*/{intm,minute,hour;/*保存时间*/intno;printf(请输入学号:);scanf(%d,&no);for(m=0;mi;m++){if(no==student[m].no){printf(请输入%d的下机时间:,no);scanf(%d:%d,&student[m].end.hour,&student[m].end.minute);if(student[m].end.minutestudent[m].begin.minute){minute=student[m].end.minute+60-student[m].begin.minute;hour=student[m].end.hour-1-student[m].begin.hour;student[m].time_hour=hour;student[m].time_minute=minute;}else{minute=student[m].end.minute-student[m].begin.minute;hour=student[m].end.hour-student[m].begin.hour;student[m].time_hour=hour;student[m].time_minute=minute;}if(minute0){hour=hour+1;printf(上机时间为:%d:%d费用为:%d,student[m].time_hour,student[m].time_minute,hour);}else{printf(上机时间为:%d:%d费用为:%d,student[m].time_hour,student[m].time_minute,hour);}}}system(pause);system(cls);/*清屏*/}Voidselect_no()/*按学号查询功能*/{intno;intm;printf(请输入学号:);scanf(%d,&no);for(m=0;mi;m++){if(no==student[m].no){printf(学号为%d\t,student[m].no);printf(班级为%s\t,student[m].cla);printf(姓名为%s\t,&student[m].name);printf(上机开始时间为%d:%d\t,student[m].begin.hour,student[m].begin.minute);printf(上机结束时间为%d:%d\t,student[m].end.hour,student[m].end.minute);printf(上机时间为:%d:%d\n\t,student[m].time_hour,student[m].time_minute);}elseif(m==i){printf(没有该记录:\n);}}system(pause);system(cls);/*清屏*/}voidselect_cla()/*按班级查询功能*/{charcla[10];intm;printf(请输入班级:);scanf(%s,cla);for(m=0;mi;m++){if(!strcmp(cla,student[m].cla)){printf(学号为%d\t,student[m].no);printf(班级为%s\t,student[m].cla);printf(姓名为%s\t,&student[m].name);printf(上机开始时间为%d:%d\t,student[m].begin.hour,student[m].begin.minute);printf(上机结束时间为%d:%d\t,student[m].end.hour,student[m].end.minute);printf(上机时间为:%d:%d\n,student[m].time_hour,student[m].time_minute);}elseif(m==i){printf(没有该记录:\n);}}system(pause);system(cls);/*清屏*/}voidselect_name()/*按姓名查询功能*/{charname[10];intm;printf(请输入姓名:);scanf(%s,name);for(m=0;mi;m++){if(!strcmp(name,student[m].name))/*字符串的比较非0为真执行*/{printf(学号为%d\t,student[m].no);printf(班级为%s\t,student[m].cla);printf(姓名为%s\t,&student[m].name);printf(上机开始时间为%d:%d\t,student[m].begin.hour,student[m].begin.minute);printf(上机结束时间为%d:%d\t,student[m].end.hour,student[m].end.minute);printf(上机时间为:%d:%d\n,student[m].time_hour,student[m].time_minute);}elseif(m==i){printf(没有该记录:\n);}}system(pause);system(cls);/*清屏*/}7.实验总结:根据机房收费管理系统的需求分析和设计要求,这次通过C语言程序设计,实现了本系统的基本功能,分别是信息的输入,查询和计算。虽然实现了这三大基本功能,但是这次的程序设计也还是存在着一些不足之处,由于是新接触编程设计,自身对于学习的知识点也存在着一些模糊的概念。所以,在对于程序的模块化设计方面,认识也有待加强,代码变量使用过多,占用内存大,有很大的优化方向。在实现功能的过程中,并没有用到指针和链表等高级C语言编程方式,这也是这次编程需要改进的地方。8.心得体会通过对机房收费管理系统的编写,更加掌握了C语言的基本语法,巩固了本学期所学的C语言知识。同时在C的设计过程中,对C语言运用循环,自定义函数等方面的思想有了更加深刻的认识,体会到了高级编程的强大,对以后编写程序有了很好的初步认识。通过这周的课程设计,也认识到自己对于C语言的一些不足之处,在对书本的知识点还有些掌握的不够透彻,在一些编程的地方可以更加优化代码,以最少的代码实现最强大的功能。在指针和链表方面,以后也还需要和老师同学探讨,让以后的C语言编程中能够合理的运用这些C语言里的精华内容。