图书信息管理系统课程设计报告-C语言程序设计

上传人:xian****hua 文档编号:146708593 上传时间:2022-08-31 格式:DOC 页数:23 大小:96.50KB
收藏 版权申诉 举报 下载
图书信息管理系统课程设计报告-C语言程序设计_第1页
第1页 / 共23页
图书信息管理系统课程设计报告-C语言程序设计_第2页
第2页 / 共23页
图书信息管理系统课程设计报告-C语言程序设计_第3页
第3页 / 共23页
资源描述:

《图书信息管理系统课程设计报告-C语言程序设计》由会员分享,可在线阅读,更多相关《图书信息管理系统课程设计报告-C语言程序设计(23页珍藏版)》请在装配图网上搜索。

1、德州学院计算机系课程设计报告实习名称 程序设计课程设计 设计题目 图书信息管理系统 实习时间 专业班级 网络工程 指导老师 教学单位(盖章) 小组分工情况:学号姓名分工 二O一O年七月五日课程设计报告正文内容及格式要求:1、正文部分主要包括:选题背景、论点或方案论证、过程(设计或实验)论述、结果分析、结论或总结。2、标题:题目用小二号黑体字(加黑),居中;副标题用三号黑体字,紧挨正标题下居中,文字前加破折号。英文题目为18磅加粗Times New Roman字,副标题为16磅加粗Times New Roman字。3、课程设计报告格式要求:一级标题用小三号黑体字;二级标题用四号黑体字;三级标题用

2、小四号黑体字;正文用宋体小四号字(英文用12磅Times New Roman字),采用1.5倍行距,标准字符间距:页码一律用小5号字标明。4、课程设计报告撰写要求:(1)文字通顺,语言流畅,能将设计过程表述清楚。(2)图表整洁,布局合理,须按国家规定的绘图标准绘制。 (3)报告字数不少于3千字。C语言程序设计报告-图书管理系统一、实验准备 做系统前,首先,自己详细看了C程序设计教程(教科书)的第十章文件,基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。学习了C语言的内容

3、,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。二、功能简介 图书信息管理系统是对图书信息的基本管理,它包括:图书信息的输入、图书信息的修改及删除、图书信息的查询、图书信息的添加、图书信息的浏览。使用模块化编程的方法每项功能有一个或多个函数组合来完成. 三、系统与性环境系统可以在MicrosoftVisualC+6.0软件运行,硬件基本无要求,现在的计算机基本都可以运行该系统。四、功能划分及详细说明主要算法的设计:(1) 主函数的算法设计开始输入选

4、择退出图书信息浏览函数图书信息查询函数图书信息修改函数图书信息输入函数结束首先,运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。在返回操作中运用while语句进行控制返回菜单。(2) 各子函数的算法设计1、图书信息的输入函数开始语句假真2、图书信息的修改开始读入函数输入函数是否相等输出信息选择表达式资料1资料2料2资料3资料4资料5资料6资料7选择返回主菜单结束3、图书信息的查询 void search()选择查询方式 ,1按书号查询,2按书名查询, 然后定位,再调用输出函数;4、图书信息的浏览开始输出函数结束返回主菜单 首先,输出所有图书的信息,并输出图书记录数,然后调

5、用辅助函数进行菜单选择,操作完成后返回主菜单。5、图书信息的添加开始输入要添加的本数输入函数保存函数返回函数结束首先,从文件中调用函数读入函数,再输入要添加数,然后添加图书信息,并保存。上机调试过程:在调试过程中出现了许多的错误!特别是在查询、修改删除这2个函数的调上花费了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。五、源程序#include#include#include#include#define LEN sizeof(stu)typedef struct student long number; char nam

6、e10; char sex3; int age; float chinese; float math; float english; float sum; float average; struct student *next;stu;book *creat(void);book *changes(book *head);book *modify(book *head,long num);book *del(book *head,long num);book *insert(book *head,book *stud);book *input(book *head,book *p1);void

7、 sort(book *head);void total_average_sort(book *head);void chinese_sort(book *head);void math_sort(book *head);void english_sort(book *head);void print(book *head);void Statistics(book *head);void search(book *head);void numsearch(book *head,long num);void namesearch(book *head,char name);int n;book

8、 *creat(void) book *head,*p1,*p2; n=0; p1=p2=(book *)malloc(LEN); printf(请输入图书信息!n);head=NULL; p1=input(head,p1); while(p1-number!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(book *)malloc(LEN); p1=input(head,p1); p2-next=NULL; return(head);book *input(book *head,book *p1)/*输入图书的信息*/int i

9、,f,k;book *p2; loop:printf(图书号(为整数,输入0时返回上一级):); scanf(%ld,&p1-number); if(p1-numbernumber=0) return(p1); else p2=head; f=0; for(i=1;inumber=p2-number) f=1;break; p2=p2-next; if(f) printf(图书不能重复,请重新输入!n);goto loop; printf(书名:); scanf(%s,p1-name); loop1:printf(类别: 1.文科 2.理科 n);printf(请选择类别:); scanf(%

10、d,&k);switch(k)case 1:strcpy(p1-sex,文科);break;case 2:strcpy(p1-sex,理科);break;default:printf(类别只能是“文科”或“理科”,请重新输入!n);goto loop1; printf(存期:); scanf(%d,&p1-age); while(p1-ageage120) printf(你输入的存期不符合实际情况,请重新输入!n);printf(存期:); scanf(%d,&p1-age); printf(章数:); scanf(%f,&p1-chinese);while(p1-chinesechinese

11、100) printf(你输入的章数不符合实际情况,请重新输入!n); printf(章数:); scanf(%f,&p1-chinese); printf(页数:); scanf(%f,&p1-math);while(p1-mathmath100) printf(你输入的页数不符合实际情况,请重新输入!n); printf(页数:); scanf(%f,&p1-math); printf(阅读次数:); scanf(%f,&p1-english);while(p1-englishenglish100) printf(你输入的阅读次数不符合实际情况,请重新输入!n); printf(阅读次数:

12、); scanf(%f,&p1-english); p1-sum=p1-chinese+p1-math+p1-english; p1-average=p1-sum/3; return(p1);void search(book *head) int k; long num; char name10; if(n=0)printf(数据库为空,没有图书的记录!n);return; else do printf(1. 按书号查找 2. 按书名查找 0. 返回上一级n); printf(请选择:); scanf(%d,&k); switch(k) case 1:do printf(书号(输入0时跳出按书

13、号查找):); scanf(%ld,&num); if(num=0)break; else if(num0) numsearch(head,num); else printf(输入错误,请重新选择!n); while(1); break; case 2:do printf(书名(输入0时跳出按书名查找):); scanf(%s,name); printf(书号t书名t类别t存期t章数t页数t阅读次数t总次数t平均次数n); namesearch(head,name); while(strcmp(name,0)!=0); break; case 0:break; default:printf(输

14、入错误,请重新选择!n); while(k!=0);void numsearch(book *head,long num) book *p1; p1=head; while(p1!=NULL) if(num=p1-number) printf(书号t书名t类别t存期t章数t页数t阅读次数t总次数t平均次数n); printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average); return; p1=p1-n

15、ext; printf(没有找到你要查找的图书信息!n);void namesearch(book *head,char name)int a=1; book *p1; p1=head; while(p1!=NULL) if(strcmp(name,p1-name)=0) printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average);a=0; p1=p1-next;if(a) printf(没有找到你要查

16、找的图书信息!n);book *changes(book *head) book *p1; int k; long num; do printf(1. 修改 2. 删除 3. 插入 0. 返回上一级n); printf(请选择:); scanf(%d,&k); switch(k) case 1:do if(n=0) printf(数据库为空,没有图书的记录!n);break; else printf(请输入图书的书号(书号应为整数,输入0时跳出修改数据):); scanf(%ld,&num); if(num=0)break; else if(num0) head=modify(head,num

17、); else printf(书号不能为负数,请重新输入!n); while(1); break; case 2:do if(n=0)printf(数据库为空,没有图书信息!n);break; else printf(请输入要删除的图书的书号(书号应为整数,输入0时跳出删除元素):); scanf(%ld,&num); if(num=0)break; else if(num0) head=del(head,num); else printf(书号不能为负数,请重新输入!n); while(1); break; case 3:printf(请输入图书信息!n); p1=(book *)mallo

18、c(LEN); p1=input(head,p1); while(p1-number!=0) head=insert(head,p1); print(head); printf(请输入图书信息!n); p1=(book *)malloc(LEN); p1=input(head,p1); break; case 0:break; default:printf(输入错误,请重新输入!n);while(k!=0); return(head);void sort(book *head)int k; if(n=0)printf(数据库为空,没有图书记录!n);return;do printf(1.按书号

19、排序 2.按总次数和平均次数排序 3.按章数成绩排序 4.按页数排序 5.按阅读次数排序 0.返回上一级n); printf(请选择:); scanf(%d,&k); switch(k) case 1:print(head);break; case 2:total_average_sort(head);break; case 3:chinese_sort(head);break; case 4:math_sort(head);break; case 5:english_sort(head);break; case 0:break; default:printf(输入错误,请重新输入!n); w

20、hile(k!=0);void total_average_sort(book *head)book *p1,*p2;int j=0;float max,k=301;printf(书号t书名t类别t存期t章数t页数t阅读次数t总次数t平均次数n);do max=0; for(p1=head;p1;p1=p1-next) if(p1-summax&p1-sumsum; p2=p1; k=max; for(p1=p2;p1;p1=p1-next) if(p1-sum=max) printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-na

21、me,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average); j+;while(jnext) if(p1-chinesemax&p1-chinesechinese; p2=p1; k=max; for(p1=p2;p1;p1=p1-next) if(p1-chinese=max) printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-avera

22、ge); j+;while(jnext) if(p1-mathmax&p1-mathmath; p2=p1; k=max; for(p1=p2;p1;p1=p1-next) if(p1-math=max) printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average); j+;while(jnext) if(p1-englishmax&p1-englishenglish; p2=p1; k=max; for

23、(p1=p2;p1;p1=p1-next) if(p1-english=max) printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average); j+;while(jnumber=num) break; p1=p1-next; if(p1-number=num) do printf(1.书名 2.类别 3.存期 4.章数成绩 5.页数 6.阅读次数 0.返回上一级n); printf(请选择:); sca

24、nf(%d,&k); switch(k) case 1:printf(书名:);scanf(%s,p1-name);printf(修改成功!n);break; case 2:loop2:printf(类别: 1.文科 2. 理科n); printf(请选择类别:); scanf(%d,&m); switch(m) case 1:strcpy(p1-sex,文科);break; case 2:strcpy(p1-sex, 理科);break; default:printf(类别只能是“文科”或“ 理科”,请重新输入!n);goto loop2; printf(修改成功!n); break; ca

25、se 3:printf(存期:); scanf(%d,&p1-age); while(p1-ageage120) printf(你输入的存期不符合实际情况,请重新输入!n); printf(存期:); scanf(%d,&p1-age); printf(修改成功!n); break; case 4:printf(章数成绩:); scanf(%f,&p1-chinese); while(p1-chinesechinese100) printf(你输入的章数成绩不符合实际情况,请重新输入!n); printf(章数成绩:); scanf(%f,&p1-chinese); p1-sum=p1-chi

26、nese+p1-math+p1-english; p1-average=p1-sum/3; printf(修改成功!n); break; case 5:printf(页数:); scanf(%f,&p1-math); while(p1-mathmath100) printf(你输入的页数不符合实际情况,请重新输入!n); printf(页数:); scanf(%f,&p1-math); p1-sum=p1-chinese+p1-math+p1-english; p1-average=p1-sum/3; printf(修改成功!n); break; case 6:printf(阅读次数:); s

27、canf(%f,&p1-english); while(p1-englishenglish100) printf(年输入的阅读次数不符合实际情况,请重新输入!n); printf(阅读次数:); scanf(%f,&p1-english); p1-sum=p1-chinese+p1-math+p1-english; p1-average=p1-sum/3; printf(修改成功!n);break; case 0:break; default:printf(输入错误,请重新选择!n); while(k!=0); else printf(没有找到你要修改的图书的信息!n); return(hea

28、d);book *del(book *head,long num) book *p1,*p2; if(head=NULL)printf(数据库为空,没有图书记录! n);goto end; p1=head; while(num!=p1-number&p1-next!=NULL) p2=p1;p1=p1-next; if(num=p1-number) if(p1=head)head=p1-next;printf(删除成功!n); else p2-next=p1-next;printf(删除成功!n); n=n-1; else printf(没有找到你要删除的图书信息!n,num); end:;

29、return(head);book *insert(book *head,book *stud) book *p0,*p1,*p2; p1=head; p0=stud; if(head=NULL)head=p0;p0-next=NULL; elsewhile(p0-numberp1-number)&(p1-next!=NULL) p2=p1; p1=p1-next; if(p0-numbernumber) if(head=p1)head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0;p0-next=NULL; n=n+1; return(he

30、ad);void Statistics(book *head) book *p1; int i,c=0,m=0,e=0; float cmax=0,mmax=0,emax=0,summax=0,averagemax=0; p1=head; for(i=1;ichinese=cmax) cmax=p1-chinese; if(p1-math=mmax) mmax=p1-math; if(p1-english=emax) emax=p1-english; if(p1-sum=summax) summax=p1-sum; if(p1-average=averagemax) averagemax=p1

31、-average; if(p1-chinesemathenglishnext; printf(总成绩最高分:%5.1fn,summax); printf(平成绩最高分:%5.1fn,averagemax); printf(章数最多:%5.1fn,cmax); printf(页数最高分:%5.1fn,mmax); printf(阅读次数最多:%5.1fn,emax); printf(章数最少:%dn,c); printf(页数最少:%dn,m); printf(阅读次数最少:%dn,e); printf(n);void print(book *head) book *p1; printf(n现在

32、的%d个图书记录为:n,n); p1=head; if(head!=NULL) printf(书号t书名t类别t存期t章数t页数t阅读次数t总次数t平均次数n); do printf(%ldt%st%st%dt%.1ft%.1ft%.1ft%.1ft%.1fn,p1-number,p1-name,p1-sex,p1-age,p1-chinese,p1-math,p1-english,p1-sum,p1-average); p1=p1-next; while(p1!=NULL);void main() int choice; book *head; do /*打印表头*/ printf(*n);

33、 printf(_欢迎来到图书成绩管理系统!_n); printf( n); printf( 图书成绩管理系统的基本功能: n); printf( 1. 新建; n); printf( 2. 查找; n); printf( 3. 更新; n); printf( 4. 排序; n); printf( 5. 统计; n); printf( 6. 显示; n); printf( 0. 跳出; n); printf( n); printf( 按键选择,回车确定! n); printf( n); printf(_n); printf(*n); printf(请选择:);/*提示用户选择操作功能*/ sc

34、anf(%d,&choice); while(getchar()!=n);/*接收回车符*/ switch(choice) case 1:head=creat();print(head);break; case 2:search(head);break; case 3:head=changes(head);break; case 4:sort(head);break; case 5:Statistics(head);break; case 6:print(head);break; case 0:break; default:printf(输入错误,请重新选择!n); while(choice!

35、=0);说明:基本上实现了题目所要求的函数功能,可以对图书的信息进行输入、浏览、查询、修改、添加等功能管理。六、个人心得通过本次课程设计,自己C语言编程的能力有了提高,特别是在文件、指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。循环是C语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线”的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进行了多方法的应用也是一个“亮点”,它使程序变得结构合理,通俗易懂,也降低了程序的难度。以后要对这种方法进行深刻的

36、体会。数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处。函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性,一个函数的错误,不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方便了对数据的管理。文件的读取与存贮使数据可以保存下来,这也是在C语言的学习过程中没有进行教学的内容,在开始时遇到了不小的困难,但前期的准备工作做的还好,最终克服了。我们相信通过这次课程设计的锻炼,我们在今后的学习实践中,一定可以做出更好的作品。指导教师评语 指导教师(签名) 成绩学号姓名成绩 指导教师或答辩小组成员(签名) 备注注:实习成绩由指导教师或答辩小组评定出成绩,分优秀、良好、中等、及格、不及格五级,分别给小组的每个成员打分。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!