机房收费管理系统
2011-5-22
1. 设计目的
(1) 通过对机房收费管理程序的编写加深对C语言的掌握。加深掌握条件语句,循环语
句,函数调用,结构体等。
(2) 通过对机房收费管理系统程序的编写,提高自己,对C语言有了更深一步的认识。 2. 函数调用关系
main-menu函数:输出机房管理系统菜单
input函数:输入若干个学生的学号、班级和姓名
online函数:学生上机,输入上机学生学号或姓名及时间 calculate函数:计算上机费用并输出
offline函数:学生下机,输入下机时间,调用calculate函数得到上机费用 search函数:查找学生上机信息
display函数:显示全部机器的使用信息 main函数:函数调用以及结束程序 3.程序模块
机房收费管理系统 输入学生信息 学生上机 学生下机 查询上机时间 机器使用情况 退出系统 将学生的学号、班级、姓名输入信息库 按学号或者姓名上机 按学号或者姓名下机 按学号或者姓名查询学生上机时间 显示全部机器使用情况 退出机房收费管理系统 输入学生信息,并确定是否继续输入 若该生未在信息库中,则先输入学生信息 需判断是否有该学生并且该生是否正在上机 需判断是否有该学生并且该生是否正在上机 显示机器是否被使用以及使用该机器的学生信息 系统使用完毕,退出 4.程序代码
#include struct time-------------------------------------------------------------------------------------------------------------------/*时间*/ 第 - 1 - 页 共 8 页 { }; int hour; int minute; int second; C语言实践报告——机房收费管理系统 typedef struct---------------------------------------------------------------------------------------------------------/*学生信息*/ { char num[20];-------------------------------------------------------------------------------------------------------/*学号*/ int banji;--------------------------------------------------------------------------------------------------------------/*班级*/ int flag;---------------------------------------------------------------------------------------/*用来标记学生是否上机*/ char name[20];------------------------------------------------------------------------------------------------------/*姓名*/ struct time start,finish;---------------------------------------------------------------------------------/*上机起止时间*/ }Student; Student stu[50];---------------------------------------------------------------------------------------------------------/*信息库*/ struct computer-------------------------------------------------------------------------------------------------------/*机器信息*/ { int k; int main_menu()--------------------------------------------------------------------------------------------------------/*主菜单*/ { } int input(Student stu[],int n)----------------------------------------------------------------------------------/*输入学生信息*/ { int i=0; char sign='0'; while(sign!='n'&&sign!='N')--------------------------------------------------------/*判断是否继续输入学生信息*/ char c; do { system(\"cls\");------------------------------------------------------------------------------------------------/*清屏*/ printf(\"\\\****机房收费管理系统****\\n\"); printf(\"\\\1.输入学生信息\\n\"); printf(\"\\\2.上机\\n\"); printf(\"\\\3.下机\\n\"); printf(\"\\\4.查询上机时间\\n\"); printf(\"\\\5.机器使用情况显示\\n\"); printf(\"\\\0.退出系统\\n\"); printf(\"\\\************************\\n\"); printf(\"\\\请选择菜单(0-5):\"); c=getchar(); int f;-------------------------------------------------------------------------------------------/*用来标记机器是否使用*/ Student stut;------------------------------------------------------------------------------------/*使用这台机器的学生*/ }com[30];-------------------------------------------------------------------------------------------------------------/*30台机器*/ }while(c<'0'||c>'5');-------------------------------------------------------------------------------/*判断输入是否合法*/ return(c-'0'); 共 8 页 第 - 2 - 页 } { } return(n+i); C语言实践报告——机房收费管理系统 getchar();------------------------------------------------------------------------------------------------/*吃掉回车*/ printf(\"\\学号:\"); gets(stu[n+i].num); printf(\"\\班级:\"); scanf(\"%d\getchar(); printf(\"\\姓名:\"); gets(stu[n+i].name); printf(\"\\继续输入?是请按Y,否请按N:\"); scanf(\"%c\ stu[n+i].flag=0;-------------------------------------------------------------------------------/*初始化为未上机*/ i++; void online(Student stu[],int n)------------------------------------------------------------------------------------------/*上机*/ { char num_t[20],name_t[20]; int i,s; do { printf(\"\\使用姓名按1,使用学号按2:\"); scanf(\"%d\ }while(s!=1&&s!=2); getchar(); if(s==1) { } else { } printf(\"\\请输入学号:\"); gets(num_t); for(i=0;i break; printf(\"\\请输入姓名:\"); gets(name_t); for(i=0;i break; 共 8 页 第 - 3 - 页 } if(i==n) { } else if(stu[i].flag==1) { } else { } for(k=0;k<30;k++) if(com[k].f==0) { } C语言实践报告——机房收费管理系统 printf(\"\\信息库中暂无该生,请输入该生信息再上机!\\n\"); return; printf(\"\\该生正在上机!\\n\"); return; com[k].f=1;----------------------------------------------------------------/*该台机器标记为使用*/ printf(\"\\请输入上机时间(当前时间):\"); scanf(\"%d:%d:%d\ stu[i].flag=1;---------------------------------------------------------------------/*该生标记为上机*/ com[k].stut=stu[i];--------------------------------------------/*记录使用该台机器的学生信息*/ break; if(k==30) printf(\"\\机器全部使用中,请稍后再上机!\\n\"); void calculate(Student stu)--------------------------------------------------------------------------/*上机时间及费用计算*/ { int t; struct time timet; if(stu.finish.second stu.finish.minute-=1; timet.second=stu.finish.second+60-stu.start.second; stu.finish.hour-=1; stu.finish.minute=59; 共 8 页 第 - 4 - 页 } { } else stu.finish.hour-=1; C语言实践报告——机房收费管理系统 timet.minute=stu.finish.minute+60-stu.start.minute; timet.minute=stu.finish.minute-stu.start.minute; timet.hour=stu.finish.hour-stu.start.hour; if(timet.second==0&&timet.minute==0) else t=timet.hour+1;----------------------------------------------------------------------/*不满一小时按一小时记*/ printf(\"\\该生上机用时%d小时,费用为%d元\\n\ t=timet.hour; void offline(Student stu[],int n)------------------------------------------------------------------------------------------/*下机*/ { char num_t[20],name_t[20]; int i,s; do { printf(\"\\使用姓名按1,使用学号按2:\"); scanf(\"%d\ }while(s!=1&&s!=2); getchar(); if(s==1) { } else { } if(i==n) printf(\"\\请输入学号:\"); gets(num_t); for(i=0;i break; printf(\"\\请输入姓名:\"); gets(name_t); for(i=0;i break; 共 8 页 第 - 5 - 页 } { } else if(stu[i].flag==0) { } else { } C语言实践报告——机房收费管理系统 printf(\"\\没有这个学生!\\n\"); return; printf(\"\\该生未上机或已下机!\\n\"); return; printf(\"\\请输入下机时间(当前时间):\"); scanf(\"%d:%d:%d\ calculate(stu[i]);-------------------------------------------------------------------------/*计算并输出上机费用*/ stu[i].flag=0;--------------------------------------------------------------------------------/*该生标记为未上机*/ for(k=0;k<3;k++)-----------------------------------------------/*将刚下机学生使用的机器标记为未使用*/ if(strcmp(com[k].stut.num,stu[i].num)==0) { } com[k].f=0;-------------------------------------------------------------/*该台机器标记为未使用*/ break; void search(Student stu[],int n)------------------------------------------------------------------------------/*上机时间查询*/ { char num_t[20],name_t[20]; int i,s; do { printf(\"\\使用姓名按1,使用学号按2:\"); scanf(\"%d\ }while(s!=1&&s!=2); getchar(); if(s==1) { } else printf(\"\\请输入姓名:\"); gets(name_t); for(i=0;i break; 共 8 页 第 - 6 - 页 } { } if(i==n) { } else if(stu[i].flag==1) else C语言实践报告——机房收费管理系统 printf(\"\\请输入学号:\"); gets(num_t); for(i=0;i break; printf(\"\\查无此生!\\n\"); return; printf(\"\\该生正在上机,上机起始时间为%d:%d:%d\\n\ stu[i].start.second); printf(\"\\该生未上机或已下机!\\n\"); void display()---------------------------------------------------------------------------------------/*全部机器使用情况显示*/ { printf(\"\机器号 是否使用 使用者 学号 班级 上机时间\\n\");--/*显示格式,表头*/ printf(\"\----------------------------------------------------------\\n\"); for(k=0;k<30;k++) { if(com[k].f==0) else printf(\"\%02d 是 %-10s %-10s %2d %02d:%02d:%02d\\n\ com[k].stut.name,com[k].stut.num,com[k].stut.banji,com[k].stut.start.hour, com[k].stut.start.minute,com[k].stut.start.second); } int main()----------------------------------------------------------------------------------------------------------------/*主函数*/ { int n=0; for(k=0;k<30;k++)-------------------------------------------------------------------------/*全部机器标记为未使用*/ { switch(main_menu()) com[k].f=0; for(;;) } printf(\"\\"); system(\"pause\");-----------------------------/*使刚显示的内容在屏幕上停留一段时间,直到继续操作为止*/ printf(\"\%02d 否 -- -- -- --:--:--\\n\ 共 8 页 第 - 7 - 页 } } return 0; { case 1: } system(\"cls\"); C语言实践报告——机房收费管理系统 printf(\"\\\输入学生信息:\\n\"); n=input(stu,n); break; system(\"cls\"); printf(\"\\\学生上机\\n\"); online(stu,n); printf(\"\\\"); system(\"pause\"); break; system(\"cls\"); printf(\"\\\学生下机\\n\"); offline(stu,n); printf(\"\\\"); system(\"pause\"); break; system(\"cls\"); printf(\"\\\上机时间查询\\n\"); search(stu,n); printf(\"\\\"); system(\"pause\"); break; system(\"cls\"); printf(\"\\\机器使用情况显示\\n\\n\"); display(); break; system(\"cls\"); printf(\"\\n\\n\\感谢使用机房收费管理系统,欢迎下次使用,再见!\\n\\n\"); printf(\"\\\"); system(\"pause\"); exit(0); case 2: case 3: case 4: case 5: case 0: 5.程序运行结果:由于该改程序运行结果较复杂,输出信息较多,故此不再给出,可参照上机运行结果。 共 8 页 第 - 8 - 页 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务