




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上机房管理系统(c语言)在vc+ 6.0 运行学院:信息科学与工程专业 班级:电子信息工程2班姓名:张涛学号: 2012年12月10日 目录总体设计详细设计 输入函数 输出函数删除函数查找函数结论与心得体会调试报告附录基本要求输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。 计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位) 修改功能:修改学生上机的个人档案(如:增添或删除) 查询功能:按条件(班级、学好、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。总体设计开始输入删除退出
2、输出查找图1主函数采用switch选择结构case 1:scan(p);break;/调用输入函数case 2:print(st,p);break/;调用输出函数case 3:del(p);break;/调用删除函数case 4:search(p);brea/k;调用查找函数case 5:开始输入数据打开文件重新写入文件关闭文件开始打开文件读取数据选择输出输出数据关闭文件 图2 图3输入函数与输出函数都用到文件的读写并且我定义了两个文件,一个存储结构体数组的内容,另一个存储数组的个数。在调用输入函数时,每次只能输入一个学生的信息,每次输入之前,先打开文件,读出数据,然后重新读入数据,并关闭文件
3、。简要流程图如图2所示。 void scan(int *p)int i;FILE *fp;FILE *fpp;for (i=*p;i<*p+1;i+)printf("请输入信息!n"); printf("学号(6位以下): "); scanf("%s",sti.num);printf("姓名(四位以下):");。 图4输出时,通过for循环把数据读出并输出void print(struct stu st,int *q) int i; float j; FILE *fp;fp=fopen("c:stu
4、_list.txt","r");/打开文件printf("序号 学号 图5 班级 姓名 上机时间(时 分) 下机时间(时 分) 费用n");for(i=0;i<*q;i+)/开始循环输出 fread(&sti,sizeof(struct stu),1,fp); printf("%2d %6s %4s %8s",i+1,sti.num ,sti.clas, );.printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3
5、d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j);. 图6删除函数采用覆盖的方法来实现目的。输入所要删除的信息后,从文件中读取数据,并找到它,用后面的将其覆盖,总数量减少一个,这样以后读取数据时,就没有该数据了.。但实际上文件中任由原来个数个数据,只是不让它读出来而已,如图7。图8为简单流程图, if(strcmp(a,)=0) for(j=i;j<*p-1;j+) strcpy(stj.n
6、um,stj+1.num);strcpy(stj.clas,stj+1.clas);stj.hour1=stj+1.hour1; stj.min1=stj+1.min1;。图7查找函数也就简单多了,输入所要查找的信息后,从文件中读取数据,并找到它,然后将其输出,简单代码如下 switch(a)/选择查找方式 case 1: printf("学号:"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.num)=0) printf(" 学号 班级 姓名 上机时间(时 分) 下机时间(时 分)
7、费用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ;. 图9图8开始打开文件读取数据选择删除输入要删除的数据关闭文件查找要删除数据删除数据重新写入文件开始打开文件读取数据选择查找输入要查找的条件及内容
8、关闭文件查找要找的数据输出数据 图10结论与心得体会 通过这次为数不多的几天计算机实践学习,加上我们这个学期的c语言课程,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领
9、域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去隐藏程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。 不过,很多时候,我们都是眼高手低,看着书以为c语言很简单,把那些代码记住就没有问题了。可是事实上,当计算机一次又一次地报错时,我才知道我错了。不亲自上机是学不好c语言的。而且上机与看书时相互配合的。上机出现错误,在书上找答案。这样经过反反复复地学习,c语言才会掌握。就拿简单的输出输入的格式符讲,总是以为它没有用了,因为太简单而不管,可到后面
10、时,忽然发现自己连对简单的整型也不了解,更不用说进行字符的输入输出了。比如说整型变量的字节数,有效值。默认的实型变量是什么,其字节数,所以会有好多警告。虽然不影响运行,但是知道存在问题,后来问老师才知道了,也算学到些东西。所以,在这次C语言实训,不仅仅提高了我掌握和利用C语言进行程设计的能力, 而且进一步理解和运用结构化程设计的思想和方法。初步掌握了开发一个小型实用系统的基本方法。学会了调试一个较长程序的基本方法。学会了利用流程图或N-S图表示算法,不过不是很规范。掌握了书写程设计开发文档的能力.为以后的实训打下坚实的基础。不过这也是在一次次报错的调试中慢慢学的。 调试与编译完成程序的编写,决
11、不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。对于我来讲,调试也蛮让人头疼的。尤其是现在所讲的这个程序。经过了反反复复地修改,程序终于可以运行了,可是结果却完全出乎意料。所以调试程序也是很关键的一项。一开始,程序中的错误编译时都可以发现
12、,还能耐心的去看看到底哪里出错。记得一次链接时出错,弄了几次一直错,可是到同学电脑就正常了,便把vc卸载了重新安装,结果好了,后来才知道,运行窗口没有关闭。再后来遇到很多编译时不能检测到的错误,一开始采用猜测并且注释部分的方法来检查出错地方,但效果不佳,经常中止。后来想到暂停语句 system(“pause”); ,是程序运行到该位置暂停,从而判断错误在该处之前你还是之后。并将该方法与同学分享。 附录:源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>struct stu char num9;
13、char clas9;char name9;int hour1;int min1;int hour2;int min2;st99;/定义结构体数组void print(struct stu st,int *q)/输出函数int i;float j;FILE *fp;fp=fopen("c:stu_list.txt","r");/打开文件printf("序号 学号 班级 姓名 上机时间(时 分) 下机时间(时 分) 费用n");for(i=0;i<*q;i+) fread(&sti,sizeof(struct stu),1
14、,fp);printf("%2d %6s %4s %8s",i+1,sti.num ,sti.clas, );printf("t %3d%3d ",sti.hour1,sti.min1 );printf(" t%3d%3d",sti.hour2 ,sti.min2);j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ;printf(" %4.2f 元n",j); void scan(int *p)/输入函数 int i;FILE *fp;FILE *
15、fpp;for (i=*p;i<*p+1;i+) printf("请输入信息!n"); printf("学号(6位以下): "); scanf("%s",sti.num); printf("姓名(四位以下):"); scanf("%s",); printf("班级(四位以下):"); scanf("%s",sti.clas); printf("上机时间 小时 :"); scanf("%d",&a
16、mp;sti.hour1); printf("上机时间 分钟 :"); scanf("%d",&sti.min1); printf("下机时间 小时 :"); scanf("%d",&sti.hour2); printf("下机时间 分钟 :"); scanf("%d",&sti.min2);if(*p=0)if(fp=fopen("c:stu_list.txt","w")=NULL) printf("
17、cannot open file");elseelsefp=fopen("c:stu_list.txt","r+"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp);/写入文件for(i=0;i<*p+1;i+)if(fwrite(&sti,sizeof(struct stu),1,fp)!=1)fclose(fp);*p=*p+1;if(fpp=fopen("c:stu_num.txt","w")=NULL)prin
18、tf("cannot open file");return;if(fwrite(p,4,1,fpp)!=1)printf("file write error");fclose(fpp); void list()/界面 printf("t*n");printf("t* 1:输入数据 *n");printf("t* 2:计算数据 *n");printf("t* 3:删除数据 *n");printf("t* 4:查找数据 *n");printf("t*
19、 5:结束 *n");printf("t*n");printf("t输入相应数字选择功能以回车结束n"); void search(int *p)/查找函数 int a,i,c=1; float j; char b9; FILE *fp; fp=fopen("c:stu_list.txt","r"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp); fclose(fp); printf("*n"); printf
20、("*请输入相应数字选择查询放条件*n"); printf("* 1:学号 *2:姓名 *3:班级 *n"); printf("*n"); scanf("%d",&a); switch(a)/选择查找方式 case 1: printf("学号:"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.num)=0) printf(" 学号 班级 姓名 上机时间(时 分) 下机时间(时 分) 费用n"
21、;); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("没有相关信息"); ;break;
22、 case 2: printf("姓名:"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,)=0) printf(" 学号 班级 姓名 上机时间(时 分) 下机时间(时 分) 费用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",
23、sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("没有相关信息"); ;break; case 3: printf("班级:"); scanf("%s",b); for(i=0;i<*p;i+) if(strcmp(b,sti.clas)=0) printf(" 学号 班级 姓名 上机时间(时 分) 下机时间(时 分
24、) 费用n"); printf(" %6s %4s %8s",sti.num ,sti.clas, ); printf("t %3d%3d ",sti.hour1,sti.min1 ); printf(" t%3d%3d",sti.hour2 ,sti.min2); j=sti.hour2 -sti.hour1+(sti.min2 -sti.min1)/60.0) ; printf(" %4.2f 元n",j); c=0; if(c=1) printf("没有相关信息"
25、); ;break; default :printf("没有相关信息"); void del(int *p)/删除函数 int i,j; char a9; FILE *fp; FILE *fpp; fp=fopen("c:stu_list.txt","r+"); for(i=0;i<*p;i+) fread(&sti,sizeof(struct stu),1,fp); printf("输入删除的姓名:"); scanf("%s",a); for(i=0;i<*p;i+) if(strcmp(a,)=0) for(j=i;j<*p-1;j+); strcpy(stj.num,stj+1.num);strcpy(stj.clas,stj+1.clas);stj.hour1=stj+1.hour1; stj.min1=stj+1.min1; stj.hour2=stj+1.hour2; stj.min2=stj+1.min2; strcpy(,stj+1.name); *p=*p-1; for(i=0;i&l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024河南省三门峡中等专业学校工作人员招聘考试及答案
- 2024洞口县凤凰职业技术学校工作人员招聘考试及答案
- 护理工作计划2025
- 租赁合同范本-铲车租赁专用
- 网络安全保障协议:企业信息安全防护合同
- 软件开发与维护合同模板
- 数控加工工艺与编程试题(含参考答案)
- 农业与财务管理的结合
- 研学基地参加创业比赛全程纪实
- 维保安全培训
- 《数据的收集》课件
- 广州数控GSK980TA1-TA2-TB1-TB2-GSK98T使用手册
- 麦肯锡和波士顿解决问题方法和创造价值技巧
- DBJ33T 1320-2024 建设工程质量检测技术管理标准
- 《复发性流产诊治专家共识2022》解读
- GB/T 23862-2024文物包装与运输规范
- 九年级化学上册(沪教版2024)新教材解读课件
- 湖北省武汉市2024届高三毕业生四月调研考试(二模)化学试题【含答案解析】
- SH∕T 3097-2017 石油化工静电接地设计规范
- 2023年婚检培训试题
- 2024届四川省自贡市富顺县数学三下期末统考试题含解析
评论
0/150
提交评论