C语言程序设计实习报告图书馆管理系统设计_第1页
C语言程序设计实习报告图书馆管理系统设计_第2页
C语言程序设计实习报告图书馆管理系统设计_第3页
C语言程序设计实习报告图书馆管理系统设计_第4页
C语言程序设计实习报告图书馆管理系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言程序设计实习报告图书馆管理系统设计 前言历时一周的计算机实习让我学到了很多知识。换句话说,让我重新认识了c语言这门课程。以前在我的脑海中,计算机编程,只是无数枯燥的代码,很是让人头疼的东西。但现在我改变了自己的看法,计算机也是一种很有乐趣的文化,值得我好好品味。有句老话是这么说的“21世纪是信息爆炸的时代”,信息爆炸的主要承担者就是计算机、互联网。从这一方面看,就寓意着当代大学生学好计算机有多么的重要。计算机硬件的更新相当的神速,现在都已经奔四核了,显卡也越来越高端,内存、硬盘都已经海量了。这说明了什么?说明了现在计算机的软件业的高速发展,软件的发展的基础是编程。过去我只是懂得如何去运用

2、软件,对于它的功能是怎么实现的却是一无所知。通过这次实习,我不再是一个无知者,我现在可以对一些简单的软件是如何运行的,它其中的奥秘是什么,有了自己的理解。这次实习,我按时完成了自己的课程设计图书管理系统设计。一开始,我对它非常陌生,根本无从下手。无奈之下,决定静下心来,好好地把c语言课程设计与学习指导的课本通读了一遍,恍然大悟,其实写程序并非是一件难事,只要细心,思路清晰,并一步一步来,每次完成其中的一个模块,最后把每个模块流畅地衔接起来,最后整个程序修饰一下,一个能够运行的c语言程序就算是写成了。众所周知c语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级

3、语言的优点,又具有低级语言的语言特点,因此c语言对我们来说很重要。设计是一门重要的计算机基础课程,通过学习,学生不仅要掌握高级程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。此次上机实习,不但要使同学们的程序设计能力上一台阶,同时要提高与程序设计和软件开发有关的各种综合能力。这次实习只有短短的一周,加上接踵而至的期末考试,我没能把全部精力放在此次实习上,在很多地方还存在欠缺,因此在接下来的日子里,我还需要好好地学习c语言,提升自己在计算机方面的能力。非常感谢王改芳老师在本次实习中对我的指导和帮助! 徐学连 2010年1月8日目录一、 题目要求及

4、能实现的功能1二、 程序总体设计1三、 详细设计1、主函数22、各功能模块设计5四、 后 记24五、 附 录26题目要求及能实现的功能图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之能提供以下功能:1、新进图书基本信息的输入。2、图书基本信息的查询。3、对撤消图书信息的删除。4、办理借书手续。5、办理还书手续【提示】建立图书管理信息结构体,结构体成员包括图书馆名称、图书编号、单价啊、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同的数字代表借还状态。借书和还书手续要注意修改结构题的成员变量存在状态的值。总体设计欢迎进入地大图书管理系统

5、查阅图书借阅图书退出系统图书归还管理系统 欢迎进入管理系统增加图书删除图书学生管理系统图书统计修改图书 详细设计1、主函数说明 主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。为了程序显示的清晰可读,应先清屏之后调用菜单函数。流程 开 始 显 示 一 系 列 功 能 选 项 输入n,判断n是否是04? 调 用 与 n 相 应 的 模 块ny程序main() char ch1,ch2,ch4; do printf(tt china university of geosciencesnn); printf(ttn); printf(tt

6、欢迎进入地大图书管理系统 nn); printf(tt books are the ladder of human progress golginn); printf(tn); printf(t n); printf(tt 制作:徐学连 学号:20081001489 班号: 05408114nn); printf(ttn); printf(ttn); printf( 请选择需要的服务:n); printf( 1:查阅图书 n); printf( 2:借阅图书 n); printf( 3:管理系统 n); printf( 4:还书 n); printf( 0:退出 n); printf(请输入数

7、字04:n); ch1=getch(); switch(ch1) case 1:chabook();break; case 2:lendbook();break; case 3: do printf(tt欢迎进入管理系统n); printf( 1:增加图书 n); printf( 2:删除图书 n); printf( 3:修改图书 n); printf( 4:图书统计 n); printf( 5:学生管理系统 n); printf( 0:返回 n); printf(请输入05:n); ch2=getch(); switch(ch2) case 1:addbook(); break; case

8、2:delbook();break; case 3:changebook();break; case 4:bookcount();getch();break; case 5: do printf(tt欢迎进入学生管理系统n); printf( 1: 申请新卡 n); printf( 2: 删除卡号 n); printf( 3: 借书统计 n); printf( 4: 卡号统计 n); printf( 0: 返回 n); printf(请输入04:n); ch4=getch(); switch(ch4) case 1:addcar();break; case 2:delcar();break;

9、case 3:lendcount();break; case 4:carcount();break; case 0:break; default:printf(无此操作!n);getch();break; while(ch4!=0);break; case 0:break; default:printf(无此操作!n);getch();break; while(ch2!=0);break; case 4:huanbook();break; case 0:break; default:printf(无此操作!n);getch();break; while(ch1!=0); 2、各功能模块设计(1

10、)公共函数在很多模块中都有调用struct student /*定义学生类型*/ int carnum; char lendbook10; student1000;struct book /*定义书的类型*/ int booknum; char bookname20; float bookprice;char bookcreat20; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/book1000;struct car /*借书卡的数据类型*/ int carnum; char sex5;char studentname20; int studentclass

11、; car1000;(2)查阅模块说明输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。数据信息存放在文件中,一条记录对应一条学生信息,方便管理。流程查 询 系 统按书名查找按作者查找退 出输 入不存在已出借无人借程序chabook() char ch5; do printf(tt 欢迎进入图书查询系统nn); printf( 1: 按书名查找 n); printf( 2: 按作者查找 n); printf( 0: 返回 n); printf(请输入02:n); ch5=getch(); switch(ch5) case 1:findbook();get

12、ch();break; case 2:findbook1();getch();break; case 0:break; default:printf(无此操作!n);getch();break; while(ch5!=0);return 0; findbook() file *fp; char bookname10; int i; fp=fopen(book.txt,r); printf(请输入你要查找的书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookn

13、ame,booki.bookname)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n %d %s %s n,booki.booknum,booki.bookname,booki.bookcreat);printf(此书现在无人借阅n按任意键返回n); else printf(这本书已经有人借出n);fclose(fp);return 0; fclose(fp); return 0; printf(没有你要查询的书籍!n); fclose(fp); return 0; findbook1() file *fp; char bookcreat10; int

14、 i; fp=fopen(book.txt,r); printf(请输入你要查找的作者名:n); scanf(%s,bookcreat); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookcreat,booki.bookcreat)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n %d %s %s n,booki.booknum,booki.bookname,booki.bookcreat); printf(此书现在无人借阅n按任意键返回n); else printf

15、(这本书已经有人借出!n);fclose(fp);return 0; fclose(fp); return 0; printf(没有你要查询的书籍n); fclose(fp); return 0; (3)借阅模块说明查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。流程借 阅 图书输 入 卡 号卡号存在输入书名已出借不存在借阅成功返 回卡号不存在程序lendbook() file *fp,*fp2; int i,n; int carnum; printf(tt欢迎进入借书系统nn);printf(请输入借书人的:n卡号:n); scan

16、f(%d,&carnum); fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(书名:n); scanf(%s,studentn.lendbook); fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) if(boo

17、ki.turefalse=0) printf(对不起,此书有人借出,请借其他书n);fclose(fp);getch();return 0; else fclose(fp); fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&studentn,sizeof(struct student),1,fp); fclose(fp); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(s

18、trcmp(booki.bookname,studentn.lendbook)=0) booki.turefalse=0; fwrite(&booki,sizeof(struct book),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,size

19、of(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(借书完毕,按任意键返回.n); getch(); return 0; printf(不存在这样的书,任意键返回.n); fclose(fp); getch(); return 0; printf(你的卡号不存在,请申请新卡,按任意键返回.n); fclose(fp); getch(); return 0;(4)管理模块说明管理模块最为复杂,管理所有的图书及职工、学生的信息。先进入总体的管理系统,在这个系统中重点的操作是图

20、书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。流程欢迎进入管理系统增加图书删除图书学生管理系统图书统计修改图书 欢迎进入学生管理系统申请新卡删除卡号卡号统计借书统计 返回 程序1、增加图addbook() file *fp; int i=0; char choice=y; fp=fopen(book.txt,a+); while(choice=y|

21、choice=y) printf(书号:n); scanf(%d,&booki.booknum); printf(书名:n); scanf(%s,booki.bookname); printf(作者:n); scanf(%s,booki.bookcreat); printf(单价:n); scanf(%f,&booki.bookprice); printf(请你设定书的状态(1在架/0不在):n); scanf(%d,&booki.turefalse); fwrite(&booki,sizeof(struct book),1,fp); printf(是否要输入下本书(y/n)n); scanf

22、(%s,&choice); fclose(fp); 2、删除图书delbook() file *fp,*fp2; int i; char bookname10,choice; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); printf(书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)!=0) fwrite(&booki,sizeof(struct book),1,fp2

23、); fclose(fp); fclose(fp2); printf(确认删除(y/n)?n); scanf(%s,&choice); if(choice=y|choice=y) fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf

24、(按任意键返回.n); getch(); return 0; else printf(按任意键返回.n); getch(); return 0; 3、修改图书changebook() file *fp,*fp2; char bookname10,choice; int i; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); printf(书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,boo

25、kname)=0) printf(你所要修改的书的资料如下,请选择你要修改的内容:n); printf(序号 书名 作者 n); printf(%d %s %sn,booki.booknum,booki.bookname,booki.bookcreat); printf(1: 修改书号:n); printf(2: 修改书名:n); printf(3: 修改作者:n); printf(4: 修改单价:); printf(请输入13:); choice=getch(); switch(choice) case 1: printf(新的书号:n); scanf(%d,&booki.booknum);

26、 fwrite(&booki,sizeof(struct book),1,fp2); break; case 2: printf(新的书名:n); scanf(%s,booki.bookname); fwrite(&booki,sizeof(struct book),1,fp2); break; case 3: printf(新的作者:n); scanf(%s,booki.bookcreat); fwrite(&booki,sizeof(struct book),1,fp2); break; case 4:printf(新的单价:);scanf(%f,booki.bookprice); fwr

27、ite(&booki,sizeof(struct book),1,fp2); default:printf(没有这样的操作!);break; continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp)

28、; fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意键返回.n); getchar(); return 0; 4、图书统计bookcount() file *fp; int i,n=0; fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(booki.booknum!=0&strlen(booki.bookname)!=0&strlen(booki.bookcreat)!=0) printf(第%d本书n序号 书名 作者 单价 状态 n,i+1

29、); printf(ttn);printf( %d %10s ,booki.booknum,booki.bookname); printf(%15s%4.2f%d(1在/0不在)n,booki.bookcreat,booki.bookprice,booki.turefalse);n=n+1; fclose(fp); printf(目前共有%d本书.n,n); printf(按任意键返回.n); end() printf(ttn);printf(ttn);printf(tt 谢谢使用本系统 , 再见! n); printf(ttn); printf(ttn);申请新卡addcar() file

30、*fp; int i=0; fp=fopen(car.txt,a+); printf(卡号:n); scanf(%d,&cari.carnum); printf(性别:n);scanf(%s,cari.sex);printf(姓名:n); scanf(%s,cari.studentname); printf(班级:n); scanf(%d,&cari.studentclass); fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); printf(输入完毕,任意键返回.n); getch(); 删除卡号delcar() file *fp,*fp2

31、; int i; int carnum; char choice; fp=fopen(car.txt,r); fp2=fopen(bookl.txt,w); printf(要删除的卡号(不存在则不作改动):n); scanf(%d,&carnum); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum!=carnum) fwrite(&cari,sizeof(struct car),1,fp2); fclose(fp); fclose(fp2); printf(确认删除?(y/n)!n); scanf(%s,&c

32、hoice); if(choice=y|choice=y) fp=fopen(car.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp2)!=0;i+) fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(操作超成功!n按任意键返回.n); getch(); return 0; else printf(操作已取消!n按任意键返回.n

33、); getch(); return 0; 借书统计lendcount() file *fp; int i,n=0; fp=fopen(record.txt,r); if(fp=fopen(record.txt,r)=0)printf(文件中没有数据!n);printf(按任意键返回.n); getch();return(0);for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) printf(卡号 借出的书籍 n); printf(%d %s n,studenti.carnum,studenti.lendbook); n=n+

34、1; fclose(fp); printf(目前共有%d本书借出n,n); printf(按任意键.n); getch();return n; 卡号统计carcount() file *fp; int i,n=0; fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) printf(第%d张卡 n,i+1); printf( 卡号 性别 姓名 班级 n); printf(ttn); printf( %d %6s %10s %3d nn,cari.carnum,cari.sex,cari.studentn

35、ame,cari.studentclass); n=n+1; fclose(fp); printf(目前共有%d个学生。n,n); printf(按任意键返回.n); getch(); (5)还书模块说明 需要根据输入员工的姓名及工号查找相应的记录,找到后增加删除和修改功能。流程存在不存在出错提示不存在存在删除记录输 入 卡 号输入要还书名程序huanbook() file *fp,*fp2; int i,n; int carnum; char lendbook10; printf(tt(_)欢迎进入还书界面(_);printf(n请你输入你的n卡号:n); scanf(%d,&carnum)

36、; fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(请输入你要还的书的名字:n); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) fclose(fp); fp=fo

37、pen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) continue; fwrite(&studenti,sizeof(struct student),1,fp2); fclose(fp); fclose(fp2); fp=fopen(record.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&studenti,s

38、izeof(struct student),1,fp2)!=0;i+) fwrite(&studenti,sizeof(struct student),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(i=n) booki.turefalse=1; fwrite(&booki,sizeof(struct book

39、),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(还书完毕,按

40、任意键返回.n); getch(); return 1; printf(你没有借这样的书,任意键返回.n); fclose(fp); getch(); return 0; printf(没这样的卡,和管理员联系,按任意键返回.n); fclose(fp); getch(); return 0;后记 为期一周的c语言实训已经结束,但是给我的影响是相当大的。通过这次实训,使我明白c语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。通过上机训练,才能够明白自己知识的不足,才能够有的放矢,更加深刻的理解c语言中的知识点,从而找到知识漏点,学到以前不懂的知识,对以前认为自己已懂了的知识点也理解更

41、加深刻。当遇到了自己当时不知如何编写的c语言题目时,通过自己的学习和同学的交流,得以顺利的编写,使我增加了对c语言的兴趣和学好c语言的信心。本次c语言实习的几个作用:1加深对课堂讲授内容的理解 课堂上要讲授许多关于c语言的语法规则,听起来比较枯燥,不易记忆。而通过多次上机练习,对于语法知识就有了更深的认识,自然而然地掌握c语言的语法规定。学习c语言不能停留在书本,而是要利用学到的知识编写c语言程序,解决实际问题。通过对自己编写程序的调试,发现问题,解决问题,逐步提高自己对c语言的理解和程序开发能力。2熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 在这次实习的过程我中遇到了一些难题,老师给予了我细心的指导,帮助我解决了很多程序上的问题,解答了我一直以来的疑惑,避免了不少弯路。再次向王改文老师的帮助表示衷心的感谢!附录图书馆管理系统设计源程序清单#include #incl

温馨提示

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

评论

0/150

提交评论