1、C语言程序实践报告C语言程序设计报告图书管理系统学生学号 XXXXXXXXXX 学生姓名 XXX 学生系别 信息工程系 班 级 XXXX 指导老师 XX 日 期 目录一、 需求分析3二、 概要设计31. 系统功能组成框图32. 程序的文件存储设计43. 模块功能说明44. 主函数流程图5三、 详细设计5 1. 头函数5 2. 主函数6 3. 录入7 4. 输出8 5. 查询8 6 删除9 7 分类10 8 修改11八、 心得13图书管理系统编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。学校安排上
2、机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。一、 需求分析图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功能: (1)图书信息录入功能。(图书信息用文件保存)。(2)图书信息浏览功能。(3)图书信息查询功能。(4)图书信息的删除和修改。(5)图书信息的排序功能。二、 概要设计1 系统功能组成框图 2程序的文件存储设计 程序数据存取主要由三个文件:book.txt、record.txt、car.txt组成。Book.txt :主要存储图书数据,程序的增加图书、删除图书、查阅图书等功能均是对些文件进行读取操作。 Recor
3、d.txt :借书记录存储文件, 主要用来储存书籍的借出与归还信息。Car.txt : 学生卡号储存文件。另外在程序运行的时候还增加了一个临时文件book1.txt,它的主要功能是防止因为误操作对源文件book.txt的数据破坏。 3模块功能说明本程序包括七个主要模块1 主程序模块main() 清屏并显示主菜单提示用户选择所要执行的操作 根据用户的选择执行相应模块2 录入模块实现图书信息的录入3 显示模块实现图书信息的显示4 查询模块按用户指定要求(书名或书名号)查询指定对象的图书信息5 删除模块删除相应对象的图书信息6 修改模块修改相应对象的图书信息7 排序模块按用户指定要求(书名或书名号)
4、将图书信息进行排序 注:因为分组做程序,本人被安排到修改模块,加上老师要求必做的录入与显示模块,共三个小程序,其余模块皆为同学共同完成。4. 主函数流程图初始化、定义主菜单、分支菜单指针数组及变量读键盘按键的键值判断键值并弹出对应菜单Y用户按了0键吗? N根据按键执行菜单选项对应的函数从被调用函数中返回并转移退出管理系统 图3 系统主函数流程图 三、 详细设计1头函数#include struct library int del; 删除标记,0表示删除int number; 登陆号 char name20; 书名 char author30; 作者名 char sort40; 分类号 char
5、 publisher; 出版社 int price; 价格lib10;int n=3;2主函数main()char ch; doclrscr(); printf(*n); printf(Welcome To Library System!n); printf(*n); printf(i or I-inputn); 录入 printf(p or P-outputn); 浏览 printf(q or Q-inquiren); 查询 printf(d or D-deleten); 删除printf(s or S-sortn); 分类 printf(m or M-modifyn); 修 改 print
6、f(e or E-exitn); 退出 printf(Please select:n); ch=getchar(); if(ch=i|ch=I) input();getch(); else if(ch=p|ch=P) output();getch(); else if(ch=q|ch=Q) inquire();getch(); else if(ch=d|ch=D) delete();getch(); else if(ch=a|ch=A) insert();getch(); else if(ch=s|ch=S) sort();getch(); else if(ch=m|ch=M) modify(
7、);getch(); else if(ch=e|ch=E) exit(0);getch(); while(1);3. 录入增加图书:在管理系统中选择“i or I”, 然后输入书籍的序号,书名、作者和分类号,即可完成添加图书操作。input() FILE *fp; int i; if(fp=fopen(libr.dat,wb)=NULL) printf(cannot open the file!);exit(0); printf(Please input library information:n); for(i=0;in;i+) scanf(%d%s%s%s%d,&libi.number,l
8、ibi.name,libi.author,libi.sort,&libi.price); for(i=0;in;i+) fwrite(&libi,sizeof(struct library),1,fp); fclose(fp);4. 输出浏览图书:在管理系统中选择“p or P”,可查看输入书籍的序号,书名、作者和分类号。output()FILE *fp; int i; if(fp=fopen(libr.dat,rb)=NULL) printf(cannot open the file!);exit(0); n=0; while(fread(&libn,sizeof(struct librar
9、y),1,fp)=1) n+; printf(NO.tNametAuthortSorttPricen); for(i=0;in;i+) printf(%dtt%stt%st%stt%dn,libi.number,libi.name,libi.author,libi.sort,libi. price); fclose(fp); 5. 查询inquire()FILE *fp; int i, k;char name20,author30; if(fp=fopen(libr.dat,rb)=NULL) printf(cannot open the file!);exit(0); n=0; while(
10、fread(&libn,sizeof(struct library),1,fp)=1) n+; printf(1-name, 2-authorn); printf(Please select 1 or 2n); scanf(%d,&k); if(k=1) printf(Please input name:n); scanf(%s,name); for(i=0;in;i+) if(strcmp(name,libi.name)=0) printf(%dtt%stt%st%stt%dn,libi.number,libi.name,libi.author,libi.sort,libi.price);
11、if(k=2) printf(Please input author:n); scanf(%s,author); for(i=0;in;i+) if(strcmp(author,libi.author)=0) printf(%dtt%stt%st%stt%dn,libi.number,libi.name,libi.author,libi.sort,libi. price); fclose(fp); 6. 删除delete()FILE *fp; int i,j,k; char name20,author30; if(fp=fopen(libr.dat,rb)=NULL) printf(canno
12、t open the file!);exit(0); n=0; while(fread(&libn,sizeof(struct library),1,fp)=1) n+; fclose(fp); if(fp=fopen(libr.dat,wb)=NULL) printf(cannot open the file!);exit(0); printf(Please input will be deleted library information:n); printf(1-name, 2-authorn); printf(Please select 1 or 2n); scanf(%d,&k);
13、if(k=1) printf(Please input name:n); scanf(%s,name); for(i=0;in;i+) if(strcmp(name,libi.name)=0) for(j=i;jn-1;j+) libj=libj+1; if(k=2) printf(Please input author:n); scanf(%s,author); for(i=0;in;i+) if(strcmp(author,libi.author)=0) for(j=i;jn-1;j+) libj=libj+1; for(i=0;in-1;i+) fwrite(&libi,sizeof(s
14、truct library),1,fp);fclose(fp); 7分类分类图书:在管理系统中选择“s or S”,选择1按书名号排序,选择2按分类号排序。sort()FILE *fp; int i, k,j,number; struct library t; if(fp=fopen(libr.dat,rb)=NULL) printf(cannot open the file!);exit(0); n=0; while(fread(&libn,sizeof(struct library),1,fp)=1) n+; fclose(fp); if(fp=fopen(libr.dat,wb)=NUL
15、L) printf(cannot open the file!);exit(0); printf(1-number, 2-sortn); printf(Please select 1 or 2n); scanf(%d,&k); if(k=1) for(i=0;in-1;i+) for(j=0;jlibj+1.number) t=libj;libj=libj+1;libj+1=t; if(k=2) for(i=0;in-1;i+) for(j=0;jn-i-1;j+) if(libj.sortlibj+1.sort) t=libj;libj=libj+1;libj+1=t; for(i=0;in
16、;i+) fwrite(&libi,sizeof(struct library),1,fp); fclose(fp);8. 修改修改图书:在管理系统中选择“m or M”, 选择1输入书名号,开始修改;选择2查看书名,开始修改。modify() FILE *fp; int i,k,dlh; char sm20; if(fp=fopen(libr.dat,rb+)=NULL) printf(cannot open the file!);exit(0); n=0; while(fread(&libn,sizeof(struct library),1,fp)=1) n+; printf(1-numb
17、er, 2-namen); printf(Please select 1 or 2n); scanf(%d,&k); if(k=1) printf(Please input number:n); scanf(%d,&dlh); for(i=0;in;i+) if(dlh=libi.number) printf(Please input new data:n) ; scanf(%d %s %s%s%d,&libi.number,libi.name,libi.author,libi.sort,&libi. price); if(k=2) printf(Please input name:n); s
18、canf(%s,sm); for(i=0;in;i+)if(strcmp(sm,libi.name)=0) printf(Please input new data:n) ; scanf(%d%s%s%s%d,&libi.number,libi.name,libi.author,libi.sort,&libi. price); rewind(fp);for(i=0;in;i+) fwrite(&libi,sizeof(struct library),1,fp);fclose(fp);八、心得设计过程的感受与体会 学了一学期C语言课,感觉到自己掌握的不多。在课程设计中,需要更改一部分系统,刚开始
19、的时候真的头都大了,发现以前自以为懂的,用起来却好象并不是那么一回事,只好一点一点的学习,一遍一遍的复习。 课程设计刚开始的时候,我真的感觉无从下手。因为已经过去一个学期了,期间又没有怎么看书,考完试就放下了,许多知识都已经忘记。 不过因为专业原因,实训只有一周,老师也没有为难我们,发了一个样本,要求我们仿写,通过老师的讲解,发现并不是想象中那么难,20人为一大组,大组分4小组,分工明确,任务变少,换句话说,整个程序是与其他同学共同完成的。 一周时间过的很快,经过这一周的努力,自己对C语言的掌握多多少少比以前好一些,可以运用到实践中,渐渐脱离课本。可是总感觉到不够用,因为在设计过程中遇到很多问题自己都不能独立解决。所以,书还是要看的。遇到的问题与解决方法 在设计过程中,由于对各种概念还不是很熟悉,不能随心运用,翻书是经常的事,最头疼的是对程序的理解。并且,在运行中发现的错误通常不知道出错在哪,细节方面,自己掌握的还不足。 解决方法 有问题,第一时间看书,看不懂的请教同学,但有时候他们跟我说了半天我都还是很茫然,然后看同学的代码,看多了就有点感觉了。我也会上网搜,通常都会有解决的方案,再不行的话就打算问老师,问老师是最后的办法,自己掌握的不够,我怕老师越讲我越愧疚,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1