机房收费管理系统C程序设计报告
- 格式:doc
- 大小:550.50 KB
- 文档页数:27
机房收费管理系统c语言机房收费管理系统是一种用于管理机房收费的软件系统,主要用于对机房的学生进行收费管理。
该系统采用C语言进行开发,具有操作简单、功能齐全、界面友好等特点。
一、系统功能1. 学生信息管理:包括学生基本信息的录入、修改和删除等功能。
2. 收费管理:包括学生缴纳费用的记录、查询和统计等功能。
3. 机房设备管理:包括机房设备的添加、修改和删除等功能。
4. 系统设置:包括管理员账号密码的设置和修改等功能。
二、系统设计1. 数据库设计该系统采用MySQL数据库进行数据存储,数据库中包含以下数据表:(1)学生信息表:存储学生基本信息,包括学号、姓名、性别、年龄等字段。
(2)缴费记录表:存储学生缴纳费用的记录,包括学号、姓名、缴纳金额等字段。
(3)机房设备表:存储机房设备信息,包括设备名称、数量等字段。
(4)管理员账号表:存储管理员账号密码信息,包括管理员账号和密码字段。
2. 界面设计该系统采用图形界面进行交互设计,主要界面如下:(1)登录界面:管理员输入用户名和密码登录系统。
(2)主界面:包括学生信息管理、收费管理、机房设备管理和系统设置等功能按钮。
(3)学生信息管理界面:包括学生基本信息的录入、修改和删除等功能按钮。
(4)收费管理界面:包括学生缴纳费用的记录、查询和统计等功能按钮。
(5)机房设备管理界面:包括机房设备的添加、修改和删除等功能按钮。
3. 系统实现该系统采用C语言进行开发,主要实现技术如下:(1)MySQL数据库连接库:使用MySQL C API库连接数据库进行数据存储操作。
(2)GTK+图形库:使用GTK+图形库进行图形界面设计和交互操作。
(3)C语言编程技术:使用C语言进行程序编写和逻辑实现。
三、系统测试该系统经过多次测试,测试结果表明该系统具有较好的稳定性和可靠性,能够满足机房收费管理的需求。
同时,该系统还具有良好的用户体验,操作简单易懂,界面友好美观。
四、总结机房收费管理系统是一种用于管理机房收费的软件系统,采用C语言进行开发。
C语言机房收费管理系统[整理]机房收费管理系统2011-5-22 1. 设计目的(1) 通过对机房收费管理程序的编写加深对C 语言的掌握。
加深掌握条件语句,循环语句,函数调用,结构体等。
(2) 通过对机房收费管理系统程序的编写,提高自己,对C 语言有了更深一步的认识。
2. 函数调用关系main-menu函数:输出机房管理系统菜单input 函数: 输入若干个学生的学号、班级和姓名online 函数:学生上机,输入上机学生学号或姓名及时间calculate 函数:计算上机费用并输出offline 函数:学生下机,输入下机时间,调用calculate 函数得到上机费用search 函数:查找学生上机信息display 函数:显示全部机器的使用信息main 函数:函数调用以及结束程序3( 程序模块机房收费管理系统输入学生信息学生上机学生下机查询上机时间机器使用情况退出系统将学生的学按学号或按学号或按学号或者姓显示全部机器退出机房使用情况号、班级、姓者姓名上者姓名下名查询学生上收费管理名输入信息库机机机时间系统若该生未需判断是输入学生信需判断是否有显示机器是否在信息库否有该学系统使用息,并确定是该学生并且该被使用以及使中,则先生并且该完毕,退否继续输入生是否正在上用该机器的学输入学生生是否正出机生信息信息在上机( 程序代码4#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>struct time -------------------------------------------------------------------------- /* 时间*/ {int hour;int minute;int second;};typedef struct -------------------------- /* 学生信息*/ {char num[20];---------------------------------------------- /* 学号*/int banji; ---------------------------------- /* 班级*/int flag; -------------------------------------------------- /* 用来标记学生是否上机*/char name[20]; --------------------------------------------------------/* 姓名*/ struct time start,finish; ----------}Student;--------- /**/ 上机起止时间Student stu[50];--------- /* 信息库*/ struct computer--{---- /* 机器信息*/ int f; -----------------/* 用来标记机器是否使用*/Student stut; ------/* 使用这台机器的学生*/}com[30]; ---------int k;---- /*30 台机器*/int main_menu()------ /* 主菜单*/ {char c; do{{system("cls");printf("\t\t\t 请选择菜单 (0-5):");c=getchar();}while(c<'0'||c>'5'); ----------------------------------------------return(c-'0');}int input(Student stu[],int n) -------------------------------------/* 输入学生信息 */ {int i=0; char sign='0';while(sign!='n'&&sign!='N') ------------------------------------------------------ /* 判断是否继续输入学生信息 */printf("\t\t\t**** 机房收费管理系统 ****\n"); printf("\t\t\t1. 输入学生信息 \n"); printf("\t\t\t2. 上机\n"); printf("\t\t\t3. 下机\n");printf("\t\t\t4. 查询上机时间 \n"); printf("\t\t\t5. 机器使用情况显示 \n"); printf("\t\t\t0.退出系统 \n");/*printf("\t\t\t* ********************* **\n");------------------------------- /* 判断输入是否合法 */清屏*/{吃掉回车 */printf("\t\t 学号 :");gets(stu[n+i].num); printf("\t\t班级 :");scanf("%d",&stu[n+i].banji); getchar(); printf("\t\t姓名 :");gets(stu[n+i].name); printf("\t\t继续输入,是请按丫,否请按N:");scanf("%c",&sign);stu[n+i].flag=0; ---------------------------------------------------/* 初始化为未上机 */ i++;}return(n+i);}void online(Student stu[],int n) ------------------------------- ----------------------------------------------------- /*{char num_t[20],name_t[20]; int i,s; dogetchar();/* 上机*/printf("\t\t 使用姓名按1,使用学号按2:");scanf("%d",&s);}while(s!=1&&s!=2);getchar();if(s==1){printf("\t\t 请输入姓名:");gets(name_t);for(i=0;i<n;i++) -------------------------------------------------------------- /* 查找信息库中是否有该学生*/if(strcmp(stu[i].name,name_t)==0)break;}else{printf("\t\t 请输入学号:");gets(num_t);for(i=0;i<n;i++){if(strcmp(stu[i].num,num_t)==0)break;}}if(i==n){prin tf("\t\t 信息库中暂无该生,请输入该生信息再上机〜\n");return;}else if(stu[i].flag==1){printf("\t\t 该生正在上机〜\n");return;}else{for(k=0;k<30;k++)if(com[k].f==0){com[k].f=1; ------------------------------------------------------------- /* 该台机器标记为使用*/printf("\t\t 请输入上机时间(当前时间):");scanf("%d:%d:%d",&stu[i].start.hour,&stu[i].start.minute,&stu[i].sta rt.second);stu[i].flag=1; -------------------------------------------------------------------- /* 该生标记为上机*/com[k].stut=stu[i]; -------------------------------------------/*录使用该台机器的学生信息*/break;}if(k==30)prin tf("\t\t 机器全部使用中,请稍后再上机〜\n");}}void calculate(Student stu) ----------------------------------------/* ------------------------- 上机时间及费用计算*/ {int t;struct time timet;if(stu.finish.second<stu.start.second){if(stu.finish.minute==0){stu.finish.hour-=1;stu.finish.minute=59;}elsestu.finish.minute-=1;timet.second=stu.finish.second+60-stu.start.second; }elsetimet.second=stu.finish.second-stu.start.second;if(stu.finish.minute<stu.start.minute){stu.finish.hour-=1;timet.minute=stu.finish.minute+60-stu.start.minute;}elsetimet.minute=stu.finish.minute-stu.start.minute;timet.hour=stu.finish.hour-stu.start.hour;if(timet.second==0&&timet.minute==0)t=timet.hour;elset=timet.hour+1; --------------------------------------------------------------------- /* 不满一小时按一小时记*/printf("\t\t 该生上机用时%d小时,费用为%d%\n",t,t); }void offline(Student stu[],int n) --------------------------------------------------------------------------------------- /*下机*/ {char num_t[20],name_t[20];int i,s;do{printf("\t\t 使用姓名按1,使用学号按2:");scanf("%d",&s);}while(s!=1&&s!=2);getchar();if(s==1){printf("\t\t 请输入姓名:");gets(name_t);for(i=0;i<n;i++){if(strcmp(stu[i].name,name_t)==0) break; }}else{printf("\t\t 请输入学号:");gets(num_t);for(i=0;i<n;i++){if(strcmp(stu[i].num,num_t)==0) break;}}if(i==n){printf("\t\t 没有这个学生〜\n");return;}else if(stu[i].flag==0){printf("\t\t 该生未上机或已下机〜\n");return;}else{printf("\t\t 请输入下机时间(当前时间):");scanf("%d:%d:%d",&stu[i].finish.hour,&stu[i].finish.minute,&stu[i].f inish.second);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("\t\t 使用姓名按1,使用学号按2:");scanf("%d",&s);}while(s!=1&&s!=2);getchar();if(s==1){printf("\t\t 请输入姓名:");gets(name_t);for(i=0;i<n;i++){if(strcmp(stu[i].name,name_t)==0)break;else{printf("\t\t 请输入学号:");gets(num_t);}for(i=0;i<n;i++){if(strcmp(stu[i].num,num_t)==0)break;}}if(i==n){printf("\t\t 查无此生〜\n");return;}else if(stu[i].flag==1)printf("\t\t 该生正在上机,上机起始时间为%d:%d:%d\n",stu[i].start.hour,stu[i].start.minute,stu[i].start.second);elseprintf("\t\t 该生未上机或已下机〜\n");void display() ------------------------------------------------------------------------------------ /* 全部机器使用情况显示*/{printf("\t 机器号是否使用使用者学号班级上机时间\n");--/* 显示格式,表头*/printf("\t ---------------------------------------------------------\n");for(k=0;k<30;k++){}if(com[k].f==0)printf("\t%02d 否-- -- -- --:--:--\n",k+1);elseprintf("\t%02d 是%-10s %-10s %2d %02d:%02d:%02d\n",k+1,com[k],com[k].stut.num,com[k].stut.banji,com[k].stut.start .hour,com[k].stut.start.minute,com[k].stut.start.second);}printf("\t");system("pause"); --------------------------- /* 使刚显示的内容在屏幕上停留一段时间,直到继续操作为止*/}int main() ----------------------------------------------------------主函数*//*{int n=0;for(k=0;k<30;k++) -------------------------------------------------- --------------------- /* 全部机器标记为未使用*/com[k].f=0;for(;;){switch(main_menu()){case 1:system("cls");printf("\t\t\t 输入学生信息:\n");n=input(stu,n);break;case 2:system("cls");printf("\t\t\t 学生上机\n");online(stu,n);printf("\t\t");system("pause");break;case 3:system("cls");printf("\t\t\t 学生下机\n");offline(stu,n);printf("\t\t");system("pause");break;case 4:system("cls");printf("\t\t\t 上机时间查询\n");search(stu,n);printf("\t\t");system("pause");break;case 5:system("cls");printf("\t\t\t 机器使用情况显示\n\n");display();break;case 0:system("cls");prin tf("\n\n\t\t 感谢使用机房收费管理系统,欢迎下次使用,再见〜\n\n"); printf("\t\t");system("pause");exit(0);}}return 0;。
目录一、概述 (1)1.1 研究的背景与意义 (1)1.2 设计的任务与需要的知识点 (1)1.3 具体完成的设计内容 (1)二、程序设计与介绍 (2)2.1设计思路 (2)2.2功能要求 (2)2.2.1登录模块 (4)2.2.2查询模块 (4)2.2.3结账模块 (4)2.3系统模块关系图 (4)2.4程序代码 (5)2.5 运行结果 (9)三、总结与体会 (11)四、参考文献 (13)五、评分标准 (14)一、概述1.1研究的背景与意义随着科技的飞速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学校、单位等的各项事务进行科学化的管理有着无法比拟的优点。
例如:查找方便、迅速、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校、单位等的工作效率,也是未来发展的管理科学化、正规化并与世界接轨的重要条件。
计算机程序设计语言是人与计算机交流的工具,可以说没有程序设计语言和程序设计,计算机就是一台废物。
也就是说,程序(软件)是计算机的必要组成部分。
计算机首先是要求人们不间断地在程序设计上付出大量的创造性劳动,然后才能享受到它的服务。
进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。
要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。
1.2设计的任务与需要的知识点我们利用这个小程序来进行对学生上网的计费,达到智能化操作节省人力的使用。
用C++语言进行编程设计一个程序使达到我们的目的。
我们需要熟悉C++语言的各种头文件和各种符号、语句代表的含义作用,这样我们才能够运用C++语言进行编程。
收费管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在收费管理系统中的应用,掌握基本的数据结构(如数组、结构体)和文件操作相关知识。
2. 学会使用C语言编写程序,实现收费管理系统的基本功能,如用户注册、登录、费用查询、费用缴纳等。
3. 了解收费管理系统的设计思路和模块划分,掌握模块化编程的方法。
技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程实践技能。
2. 学会使用调试工具,能够自主调试程序,找出并修复错误。
3. 提高团队协作能力,学会与他人共同分析问题、设计解决方案。
情感态度价值观目标:1. 培养学生积极探究、勇于实践的精神,增强学习编程的兴趣。
2. 培养良好的编程习惯,注重代码规范和程序优化。
3. 增强学生的网络安全意识,认识到收费管理系统在实际应用中的重要性。
课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识进行实际编程。
学生特点:学生已经具备一定的C语言基础,但实际编程经验不足,对收费管理系统这一实际应用场景较为陌生。
教学要求:注重理论与实践相结合,通过讲解、示范、练习、讨论等多种教学方式,引导学生掌握收费管理系统的设计与实现方法。
同时,关注学生的个体差异,提供个性化指导,确保每个学生都能达到课程目标。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 数据结构与文件操作:回顾C语言中的数组、结构体等基本数据结构,介绍文件操作相关知识,为编写收费管理系统打下基础。
- 数组的使用与操作- 结构体的定义与使用- 文件读写操作2. 收费管理系统功能模块设计:- 用户注册模块:实现用户注册功能,包括用户名、密码等信息的存储- 用户登录模块:实现用户登录功能,验证用户名和密码的正确性- 费用查询模块:实现用户费用查询功能,展示用户消费记录- 费用缴纳模块:实现用户费用缴纳功能,包括充值、支付等操作3. 编程实践与模块化设计:- 编程规范与代码优化- 模块化编程方法与实践- 调试工具的使用与程序调试技巧4. 团队协作与项目实践:- 分析与讨论:分组讨论,共同分析收费管理系统的需求与设计- 项目实践:小组成员分工合作,共同完成收费管理系统的设计与实现5. 教学进度安排:- 第一周:数据结构与文件操作知识回顾- 第二周:收费管理系统功能模块设计- 第三周:编程实践与模块化设计- 第四周:团队协作与项目实践,完成收费管理系统设计与实现教学内容与教材关联性:本课程教学内容与教材相关章节紧密相关,如数据结构与文件操作、模块化编程、调试技巧等,确保学生能够将所学知识应用于实际项目中。
c 课程设计机房收费管理系统一、教学目标本课程旨在通过学习机房收费管理系统的课程设计,使学生掌握计算机程序设计的基本原理和方法,培养学生的实际编程能力和问题解决能力。
在知识目标上,学生应掌握Java语言的基本语法、面向对象编程思想以及常用的数据结构;在技能目标上,学生应能够独立完成机房收费管理系统的需求分析、系统设计、编码实现和测试工作;在情感态度价值观目标上,学生应培养团队合作意识、创新精神和职业道德。
二、教学内容本课程的教学内容主要包括四个部分:Java语言基础、面向对象编程、机房收费管理系统设计和实践。
其中,Java语言基础部分包括Java语法、数据类型、运算符、控制结构等;面向对象编程部分包括类、对象、继承、多态等;机房收费管理系统设计部分包括需求分析、系统设计、模块划分等;实践部分包括编码实现、测试和调试。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。
主要包括:讲授法、案例分析法、实验法和讨论法。
讲授法用于讲解基本概念和原理,案例分析法用于分析实际问题和解决方案,实验法用于实践操作和验证,讨论法用于促进学生之间的交流和思考。
四、教学资源本课程的教学资源包括教材、多媒体资料、实验设备和网络资源。
教材选用《Java程序设计》作为主教材,辅助以《机房收费管理系统设计与实践》等相关参考书。
多媒体资料包括教学PPT、视频讲座等,实验设备包括计算机、网络设备等,网络资源包括在线编程平台、技术论坛等。
教学资源的选择和准备将充分支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面、客观、公正地评价学生的学习成果。
平时表现主要评估学生的课堂参与度、提问回答、小组讨论等;作业主要评估学生的编程实践能力和理论知识掌握情况;考试则主要评估学生的知识掌握和应用能力。
评估结果将通过评分、评语等方式反馈给学生,以促进学生的学习进步。
c++课程设计机房管理收费系统#include#include#include#include#define MAX 100struct student{int num; /*学号*/char name[20]; /*姓名*/int banji; /*班级*/char flag[100];/*上机标志,标记学生是否上机*/int sh,sm,fh,fm,h;/*上机起止时间*/} stu[50];void Input()/*输入*/{FILE *fp,*fq;int n,m;fp=fopen("data","wb");for(n=0;n<max;n++)< bdsfid="85" p=""></max;n++)<> {printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++); scanf("%d",&n);if(n==-1){fclose(fp);return;}else{printf("请输入学号姓名班级电脑状态时分\n");printf("学号\n");scanf("%d",&stu[n].num);printf("姓名\n");scanf("%s",&stu[n].name);printf("班级\n");scanf("%d",&stu[n].banji);strcpy(stu[n].flag,"关");stu[n].sh=0;stu[n].sm=0;stu[n].fh=0;stu[n].fm=0;stu[n].h=0;fwrite(&stu[n],sizeof(struct student),1,fp);}}}void Output()/*输出*/{FILE *fp,*fq;int i,j;fp=fopen("data","rb");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 学生信息\n");printf("-----------------------------------------------------------\n");printf(" 学号姓名班级是否开机开机时:分关机时:分上机时长(小时) \n");printf("-----------------------------------------------------------\n");for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++){printf("%6d %8s %6d %8s %11d:%2d %8d:%2d %8d\n",stu[i ].num,stu[i].name,stu[i].banji,stu[i].flag,stu[i].sh,stu[i].sm,stu[i].fh,stu[i].fm,stu[i].h);}fclose(fp);printf("按任意键返回主菜单\n");getch();}void jishi(){FILE *fp;int i,num,n,flag;int ch,cm;printf("上机请按1\n下机请按2\n");scanf("%d",&n);if(n==1){printf("请输入学号");scanf("%d",&num);fp=fopen("data","rb");for(i=0;i<=MAX;i++)if(stu[i].num==num){printf(" 学号姓名班级电脑状态开机时:分\n");printf("%6d %8s %6d %8s %11d:%2d\n",stu[i].num,stu[i].na me,stu[i].banji,stu[i].flag,stu[i].sh,s tu[i].sm);n=i;flag=1;fclose(fp);break;}printf("\n\n");fp=fopen("data","rb+");fseek(fp,n*sizeof(struct student),0); printf("\n\n");strcpy(stu[n].flag,"开");printf("请输入开机时间\n");printf("★★★★时:");scanf("%d",&stu[n].sh);printf("★★★★分:");scanf("%d",&stu[n].sm);stu[n].fh=0;stu[n].fm=0;stu[n].h=0;fwrite(&stu[i],sizeof(struct student),1,fp); fclose(fp);fp=fopen("data","rb");printf("电脑已打开,可以上机。
机房收费管理系统1. 引言在现代社会,机房成为了信息技术的重要组成部分,承担着信息存储、数据处理等关键任务。
机房的使用费用需要进行管理和收费,以维持机房的正常运转和持续发展。
因此,开发一套机房收费管理系统具有重要意义。
本文将通过C语言编写一个机房收费管理系统,并探讨其设计与实现。
2. 系统功能设计2.1 用户管理模块用户管理模块是机房收费管理系统的核心模块之一,用于管理用户的基本信息和账户余额。
具体功能需求如下:•用户注册:用户可以通过系统进行注册,输入基本信息并生成唯一的用户ID。
•用户登录:已注册的用户可以通过输入用户名和密码进行登录操作。
•用户查询:用户可以通过系统查询自己的账户余额和消费记录。
2.2 机房使用管理模块机房使用管理模块主要用于管理机房的使用情况和收费标准。
具体功能需求如下:•机房预约:用户可以通过系统预约机房使用时间,系统根据预约时间自动计算费用。
•机房取消预约:用户可以在预约时间之前取消机房的使用,系统将相应地进行费用计算和余额调整。
•机房使用记录查询:用户可以查询自己的机房使用记录和相关费用信息。
2.3 费用计算与管理模块费用计算与管理模块是机房收费管理系统的重要组成部分,用于计算和管理机房使用费用。
具体功能需求如下:•费用计算:系统根据机房使用时间和收费标准自动计算费用。
•费用管理:系统根据机房使用记录和费用计算结果进行费用管理和账户余额调整。
3. 系统设计与实现3.1 数据结构设计机房收费管理系统需要设计相应的数据结构来存储用户信息、机房使用记录和费用管理等数据。
可以使用结构体或链表等数据结构来实现。
3.2 用户管理模块实现用户管理模块可以通过调用C语言提供的文件操作函数来实现用户信息的读取、存储和更新。
可以使用文件来存储用户信息和账户余额等数据。
3.3 机房使用管理模块实现机房使用管理模块需要设计相应的数据结构来存储机房预约信息和使用记录。
可以使用链表或数组等数据结构来实现。
目录一.设计内容二.设计要求(1)题目要求(2)输入/输出要求三.整体设计思路四.流程图(1)层次模块图(2)空机号查询N—S图五.主函数及功能菜单说明六.各模块简要说明七.心得体会附录一.源程序代码二.各模块运行结果截图一:设计内容题目:机房管理系统设计机房管理系统,要求由菜单进行管理。
(1)上机前先检查是否有空机位,有则将其显示出,无则提示无空位。
(2)还有空位置时,运行进入,并记录下位置号以及序号,与上机时间。
(3)可对上机者上机信息进行查询,修改与删除。
(4)设计相关模块,显示上机者的上机费用。
(5)显示所有上机者的上机信息。
二:设计要求题目要求:(1)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
(2)要求以上功能分别用函数实现。
输入/输出要求:(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。
进入每个操作后,根据程序的提示输入相应的信息。
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
三:整体设计思路在设计该程序时,要将系统的不同功能分成各个模块。
每个模块由一个函数定义,整个程序由函数调用来实现。
每个模块是一个子函数,由一个主函数调用各个子函数。
在定义子函数时,根据不同的功能选择不同的语句,如需要使用循环时可以用“do……while”来实现;需要使用选择时可以用“switch”或“if”语句来实现等。
设计以菜单方式工作的机房管理系统,主要包括六个模块,分别是上机者信息输入模块,上机者信息查询模块,上机者信息修改模块,上机者信息删除模块,上机者上机费用计算模块,所有上机者信息显示模块。
每个模块由组员相应完成。
另外考虑到机房的特殊要求,新增一个上课模式,此模式功能是将所有机子开启,统一赋上上机者相关信息,避免管理员一个一个的给机子输入信息。
本系统程序关键在于一个空机位的检索,亦是本程序核心之所在。
C++程序设计设计报告题目:机房收费管理系统一、实验题目机房收费管理系统二、实验环境Visual C++ 6.0三、设计思想包括:函数分解过程、算法描述以及相应的数据流程图一、函数分解过程1、输入功能struct lbtime{ int lbhour;int lbminute;int lbsecond;};typedef struct{char lbnum[20];int lbbanji;int lbflag;char lbname[20];struct lbtime lbstart,lbfinish; }lbStudent;lbStudent lbstu[50];struct lbcomputer{ int lbf;lbStudent lbstut;}lbcom[30];int lbk;int lbmain_menu(){ char lbc;do{system("cls");cout<<"\t\t\t****机房收费管理系统****\n"<<"\t\t\t1.输入学生信息\n"<<"\t\t\t2.上机\n"<<"\t\t\t3.下机\n"<<"\t\t\t4.查询上机时间\n"<<"\t\t\t5.机器使用情况显示\n"<<"\t\t\t0.退出系统\n"<<"\t\t\t************************\n"<<"\t\t\t 请选择菜单(0-5):";lbc=getchar(); }while(lbc<'0'||lbc>'5');return(lbc-'0');}int lbinput(lbStudent lbstu[],int lbn){int lbi=0;char lbsign='0';while(lbsign!='lbn'&&lbsign!='lbN'){getchar();cout<<"\t\t 学号:";gets(lbstu[lbn+qhi].lbnum);cout<<"\t\t 班级:";cin>>lbstu[lbn+lbi].lbbanji;getchar();cout<<"\t\t 姓名:";gets(lbstu[lbn+lbi].lbname);cout<<"\t\t 继续输入?是请按Y,否请按N:"; cin>>lbsign;lbstu[lbn+qhi].lbflag=0;lbi++;}return(lbn+lbi);}void lbonline(lbStudent lbstu[],int lbn){char lbnum_t[20],lbname_t[20];int lbi,lbs;do{cout<<"\t\t 使用姓名按1,使用学号按2:"; cin>>lbs; }while(lbs!=1&&lbs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;lbi<lbn;lbi++)if(strcmp(lbstu[lbi].lbname,lbname_t)==0) break;}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0) break;}}{cout<<"\t\t 信息库中暂无该生,请输入该生信息再上机!\n";return; }else if(lbstu[lbi].lbflag==1){cout<<"\t\t 该生正在上机!\n";return;}else{for(lbk=0;lbk<30;lbk++)if(lbcom[lbk].lbf==0){lbcom[lbk].lbf=1;cout<<"\t\t 请输入上机时间(当前时间):";cin>>lbstu[lbi].lbstart.lbhour>>lbstu[lbi].lbstart.lbminute>>lb stu[lbi].lbstart.lbsecond;lbstu[lbi].lbflag=1;lbcom[lbk].lbstut=lbstu[lbi]; break;}cout<<"\t\t 机器全部使用中,请稍后再上机!\n";}}2、计算功能void lbcalculate(lbStudent lbstu) {int lbt;struct lbtime lbtimet;if(lbstu.lbfinish.lbsecond<lbstu.lbstart.lbsecond){ if(lbstu.lbfinish.lbminute==0){ lbstu.lbfinish.lbhour-=1;lbstu.lbfinish.lbminute=59;}elselbstu.lbfinish.lbminute-=1;lbtimet.lbsecond=lbstu.lbfinish.lbsecond+60-lbstu.lbstart.lbsec ond;}elselbtimet.lbsecond=lbstu.lbfinish.lbsecond-lbstu.lbstart.lbsecond ;if(lbstu.lbfinish.lbminute<lbstu.lbstart.lbminute){lbstu.lbfinish.lbhour-=1;lbtimet.lbminute=lbstu.lbfinish.lbminute+60-lbstu.lbstart.lbminute;}elselbtimet.lbminute=lbstu.lbfinish.lbminute-lbstu.lbstart.lbminute ;lbtimet.lbhour=lbstu.lbfinish.lbhour-lbstu.lbstart.lbhour;if(lbtimet.lbsecond==0&&lbtimet.lbminute==0)lbt=lbtimet.lbhour;elselbt=lbtimet.lbhour+1;cout<<"\t\t 该生上机用时%d 小时,费用为%d 元\n",lbt,lbt;}3、查询功能void lboffline(lbStudent lbstu[],int lbn){char lbnum_t[20],lbname_t[20];int lbi,lbs;do{cout<<"\t\t 使用姓名按1,使用学号按2:"; cin>>lbs;}while(lbs!=1&&lbs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;qhi<lbn;lbi++){if(strcmp(lbstu[lbi].lbname,lbname_t)==0) break;}}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)break;}}if(lbi==lbn){cout<<"\t\t 没有这个学生!\n";return;}else if(lbstu[lbi].lbflag==0){cout<<"\t\t 该生未上机或已下机!\n";return;}else{cout<<"\t\t 请输入下机时间(当前时间):";cin>>lbstu[lbi].lbfinish.lbhour>>lbstu[lbi].lbfinish.lbminute> >lbstu[lbi].lbfinish.lbsecond;lbcalculate(lbstu[qhi]); lbstu[lbi].lbflag=0;for(lbk=0;lbk<3;lbk++)if(strcmp(lbcom[lbk].lbstut.lbnum,lbstu[lbi].bnum)==0){lbcom[lbk].lbf=0; break;}}}void lbsearch(lbStudent lbstu[],int lbn) {char lbnum_t[20],lbname_t[20];int lbi,lbs;do{cout<<"\t\t 使用姓名按1,使用学号按2:"; cin>>lbs;}while(lbs!=1&&qhs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;qhi<lbn;lbi++){if(strcmp(lbstu[lbi].lbname,lbname_t)==0) break;}}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;qhi<lbn;bi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)break;}}if(lbi==lbn){cout<<"\t\t 查无此生!\n";return;}else if(lbstu[lbi].lbflag==1)cout<<"\t\t 该生正在上机,上机起始时间为%d:%d:%d\n",lbstu[lbi].lbstart.lbhour,lbstu[lbi].lbstart.lbminute, lbstu[lbi].lbstart.lbsecond;elsecout<<"\t\t 该生未上机或已下机!\n";}4、机器使用情况的显示void display(){cout<<"\t 机器号是否使用使用者学号班级上机时间\n";cout<<"\t----------------------------------------------------------\n";for(lbk=0;lbk<30;lbk++){if(lbcom[lbk].lbf==0)cout<<"\t%02d 否-----:--:--\n",qhk+1;elsecout<<"yes"<<endl;lbcom[lbk].lbstut.lbname,lbcom[lbk].lbstut.lbnum,lbcom[lbk]. lbstut.lbbanji,lbcom[lbk].lbstut.lbstart.lbhour,lbcom[lbk].lbstut.lbstart.lbminute,lbcom[lbk].lbstut.lbstart.lbs econd;}cout<<"\t";system("pause");}1总体结构图2主函数程序流程图3子函数程序流程图1输入学生信息2学生上机3学生下机4上机时间查询5机器使用情况四、源程序清单包括调试过程(碰到的错误、如何错误排除)#include "stdafx.h"#include<iostream>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>using namespace std;struct qhtime{ int qhhour;int lbminute;int lbsecond;};typedef struct{char lbnum[20];int lbbanji;int lbflag;char lbname[20];struct lbtime lbstart,lbfinish; }lbStudent lbstu[50];struct lbcomputer{ int lbf;lbStudent lbstut;}lbcom[30];int lbk;int lbmain_menu(){ char qhc;do{system("cls");cout<<"\t\t\t****机房收费管理系统****\n"<<"\t\t\t1.输入学生信息\n"<<"\t\t\t2.上机\n"<<"\t\t\t3.下机\n"<<"\t\t\t4.查询上机时间\n"<<"\t\t\t5.机器使用情况显示\n"<<"\t\t\t0.退出系统\n"<<"\t\t\t************************\n"<<"\t\t\t 请选择菜单(0-5):";lbc=getchar(); }while(lbc<'0'||qhc>'5');return(lbc-'0');}int lbinput(lbStudent lbstu[],int lbn){int lbi=0;char lbsign='0';while(lbsign!='lbn'&&lbsign!='lbN'){getchar();cout<<"\t\t 学号:";gets(lbstu[lbn+lbi].lbnum);cout<<"\t\t 班级:";cin>>lbstu[lbn+lbi].lbbanji;getchar();cout<<"\t\t 姓名:";gets(lbstu[lbn+lbi].lbname);cout<<"\t\t 继续输入?是请按Y,否请按N:";cin>>lbsign;lbstu[lbn+lbi].lbflag=0;lbi++;}return(lbn+lbi);}void lbonline(lbStudent lbstu[],int lbn){char lbnum_t[20],lbname_t[20];do{cout<<"\t\t 使用姓名按1,使用学号按2:";cin>>lbs; }while(lbs!=1&&lbs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;lbi<lbn;lbi++)if(strcmp(lbstu[lbi].lbname,lbname_t)==0)break;}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)break;}}if(lbi==lbn){cout<<"\t\t 信息库中暂无该生,请输入该生信息再上机!\n";return; }else if(lbstu[lbi].lbflag==1){cout<<"\t\t 该生正在上机!\n";return;}else{for(lbk=0;lbk<30;lbk++)if(lbcom[lbk].lbf==0){lbcom[lbk].lbf=1;cout<<"\t\t 请输入上机时间(当前时间):";cin>>lbstu[lbi].lbstart.lbhour>>lbstu[lbi].lbstart.lbminute>>lbstu[lbi].lbst art.lbsecond;lbstu[lbi].lbflag=1;lbcom[lbk].lbstut=lbstu[lbi]; break;}if(lbk==30)cout<<"\t\t 机器全部使用中,请稍后再上机!\n";}}void lbcalculate(lbStudent lbstu) {int lbt;struct lbtime lbtimet;if(lbstu.lbfinish.lbsecond<lbstu.lbstart.lbsecond){ if(lbstu.lbfinish.lbminute==0){ lbstu.lbfinish.lbhour-=1;lbstu.lbfinish.lbminute=59;}elselbstu.lbfinish.lbminute-=1;lbtimet.lbsecond=lbstu.lbfinish.lbsecond+60-lbstu.lbstart.lbsecond; }elselbtimet.lbsecond=lbstu.lbfinish.lbsecond-lbstu.lbstart.lbsecond;if(lbstu.lbfinish.lbminute<lbstu.lbstart.lbminute){lbstu.lbfinish.lbhour-=1;lbtimet.lbminute=lbstu.lbfinish.lbminute+60-lbstu.lbstart.lbminute; }elselbtimet.lbminute=lbstu.lbfinish.lbminute-lbstu.lbstart.lbminute; lbtimet.lbhour=lbstu.lbfinish.lbhour-lbstu.lbstart.lbhour;if(lbtimet.lbsecond==0&&lbtimet.lbminute==0)lbt=lbtimet.lbhour;elselbt=lbtimet.lbhour+1;cout<<"\t\t 该生上机用时%d 小时,费用为%d 元\n",lbt,lbt;}void lboffline(lbStudent lbstu[],int qhn){char lbnum_t[20],lbname_t[20];int lbi,lbs;do{cout<<"\t\t 使用姓名按1,使用学号按2:";cin>>lbs;}while(lbs!=1&&lbs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbname,lbname_t)==0)break;}}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)break;}}if(lbi==lbn){cout<<"\t\t 没有这个学生!\n";return;}else if(lbstu[lbi].lbflag==0){cout<<"\t\t 该生未上机或已下机!\n";return;}else{cout<<"\t\t 请输入下机时间(当前时间):";cin>>lbstu[lbi].lbfinish.lbhour>>lbstu[lbi].lbfinish.lbminute>>lbstu[lbi].l bfinish.lbsecond;lbcalculate(lbstu[lbi]); lbstu[lbi].lbflag=0;for(lbk=0;lbk<3;lbk++)if(strcmp(lbcom[lbk].lbstut.lbnum,lbstu[lbi].lbnum)==0){lbcom[lbk].lbf=0; break;}}}void lbsearch(lbStudent lbstu[],int lbn) {char lbnum_t[20],lbname_t[20];int lbi,lbs;do{cout<<"\t\t 使用姓名按1,使用学号按2:";cin>>lbs;}while(lbs!=1&&lbs!=2);getchar();if(lbs==1){cout<<"\t\t 请输入姓名:";gets(lbname_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbname,lbname_t)==0)break;}}else{cout<<"\t\t 请输入学号:";gets(lbnum_t);for(lbi=0;lbi<lbn;lbi++){if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)break;}}if(lbi==lbn){cout<<"\t\t 查无此生!\n";return;}else if(lbstu[lbi].lbflag==1)cout<<"\t\t 该生正在上机,上机起始时间为%d:%d:%d\n",lbstu[lbi].lbstart.lbhour,lbstu[lbi].lbstart.lbminute, lbstu[lbi].lbstart.lbsecond;elsecout<<"\t\t 该生未上机或已下机!\n";}void display(){cout<<"\t 机器号是否使用使用者学号班级上机时间\n";cout<<"\t----------------------------------------------------------\n";for(lbk=0;lbk<30;lbk++){if(lbcom[lbk].lbf==0)cout<<"\t%02d 否-----:--:--\n",lbk+1;elsecout<<"yes"<<endl;lbcom[lbk].lbstut.lbname,lbcom[lbk].lbstut.lbnum,lbcom[lbk].lbstut.lbban ji,lbcom[qhk].lbstut.lbstart.lbhour,lbcom[lbk].lbstut.lbstart.lbminute,lbcom[lbk].lbstut.lbstart.lbsecond;}cout<<"\t";system("pause");}int main() {int lbn=0;for(lbk=0;lbk<30;lbk++)lbcom[lbk].lbf=0;for(;;){switch(lbmain_menu()){case 1:system("cls");cout<<"\t\t\t 输入学生信息:\n";lbn=lbinput(lbstu,lbn); break;case 2:system("cls");cout<<"\t\t\t 学生上机\n";lbonline(lbstu,lbn);cout<<"\t\t";system("pause");break;case 3:system("cls");cout<<"\t\t\t 学生下机\n";lboffline(lbstu,lbn);cout<<"\t\t";system("pause");break;case 4:system("cls");cout<<"\t\t\t 上机时间查询\n";lbsearch(lbstu,lbn);cout<<"\t\t";system("pause");break;case 5:system("cls");cout<<"\t\t\t 机器使用情况显示\n\n";display();break;case 0:system("cls");cout<<"\n\n\t\t 感谢使用机房收费管理系统,欢迎下次使用,再见!\n\n";cout<<"\t\t";system("pause");exit(0);}}return 0;分析:多将中文输入法中的符号与英文中的混用,造成程序运行不畅。