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

下载本文档

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

文档简介

1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 图书借阅管理系统 专 业 网络工程 班 级 1002班 学 号 姓 名 指导教师 2011年 6 月 30 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 图书借阅管理系统 专业班级 网络工程1002班 学生姓名 学 号 指导老师 审 批 任务书下达日期 2011 年 6 月20 日任务完成日期 2011 年 7 月 03 日一、设计内容与设计要求1设计内容:问题描述:对一个有N本图书的图书馆,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。功能要求:(1)、本系统采用一个包含

2、N个数据的结构体数组,每个数据的结构应当包括:书号、书名、作者、出版社、出版日期、单价、是否借出等。(2)、本系统显示这样的菜单:a. 图书基本信息录入b. 图书基本信息显示c. 图书基本信息删除d. 图书基本信息修改e. 图书基本信息查询(按书号查询、书名等)g. 退出系统(3)、执行一个具体的功能之后,程序将重新显示菜单。2设计要求:掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告5000字以上,含程序设计说明,用户使用说明

3、,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 按本任务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订; 二、进度安排第 18 周 星期一 08:0012:00熟悉这次课程设计的目的和课程设计的要求,明确了解一些要用到的文件和调用函数等,然后再把整个程序设计的总体框架、流程图等构思出来,并进行上机程序设计。 星期二 14:3018:30机房上机,在计算机上编辑源程序。调试程序,在改正错误的同时不断完善程序,使源代码满足课程设计的要求和

4、实现课程设计的要求和实现课程设计的基本功能。 星期三 08:0012:00继续修改、编辑、调试程序。不断改正错误后,要保证程序能成功编译成目标文件,链接成功成为可执行文件。再运行能通过,这样才能算已经完成了本课题的基本功能。之后,开始撰写课程设计报告。 星期四 08:0012:00继续修改、编辑、调试程序。 第19周 星期一 08:0012:00继续修改、编辑、调试程序。 星期二 14:3018:30 答辩,检查课设报告 目录 一、课题的主要功能.6二、课题的功能模块的划分.6三、主要功能的实现.9四、程序调试.12五、总结.14六、附件.15七、评分表.24 一、课题的主要功能 为了方便管理

5、员存存储新的图书,并便于及时的查找,插入信息以及删除输入信息,还能知道图书的价格,出版社,作者等等的信息,还可以帮助用户及时了解到图书是否被借出。二、课题功能的模块划分主要算法的设计:(1) 主函数的算法设计开始图1:输入选择- 图书信息查询始退出图书信息删除函数图书信息修改函数图书信息显示函数图书信息录入函数结束(2)图书信息录入:录入图书的书名,价格,出版社和作者如图:开始输入要添加的本数输入图书基本信息函数保存函数返回函数结束首先,从文件中调用函数读入函数,再输入要添加的书本数,然后添加图书信息,并保存。(3)图书信息显示:显示图书的基本信息:如图:开始输出函数结束返回主菜单首先,输出所

6、有图书的信息,并输出图书记录数,然后调用辅助函数进行菜单选择,操作完成后返回主菜单。(4)图书信息删除:删除某些图书的资料;(5)图书信息修改:修改选定图书的资料;如图开始读入函数输入函数是否相等输出信息选择表达式资料1资料2料2资料3资料4资料5资料6资料7选择返回主菜单结束首先,选择修改信息,输入要修改的书本号,再输入要要修改的选项及内容;若成功则否则调用报错函数。(6)图书信息查询:按书的编号、书名来查询图书的资料;如图:开始选择方法按书名查找按书号查找删除、修改删除、修改选择查询方式 ,1按书名查询,2按作者查询, 然后定位,再调用输出函数;退出系统:查询完毕,推出此系统。三、主要功能

7、的实现主函数:利用无限次循环实现各函数的调用,系统根据输入的字母选项来调用相应的函数。录入函数:实现图书信息的录入。如图:、查询函数:实现对图书信息的查询删除函数:实现图书信息的删除;修改函数:允许对已录入的图书信息进行重新修改。显示函数:显示所有图书的信息。退出函数:退出系统四、程序的调试程序调试是指对程序的查错和排错。为了便于查错、阅读,在设计该程序的时候我采用了结构化程序方法编辑,添加了尽可能多的注释,这为我后来的调试过程带来了很多方便。在上机调试之前我对所编的程序作了纸面上的检查,先消灭一些低级错误,所谓的低级错误是指由于人为的输入不仔细等造成的,如没有搭配完整,漏写 ;号,拼写错误等

8、,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:1、缺少变量定义,定义位置不正确;由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为

9、减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。2、语法错误;大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。3、在注释的时候不能同我们平常做笔记一样随心所欲地爱写哪就写哪,这造成我最后本来已经编译成功的程序一下子又多了很多错误。注释的时候,注释文字应写在一起中间不能有中

10、断包含了c语言的语句,不然又引起错误格式不正确或是多了字符等。这又让我学到了一点知识。编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,或用debug进行调试,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如

11、此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,我怀疑是哪个对方对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了printf语句用来显示n的变化,例如在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。以

12、上是调试的全过程。五、总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际动手能力的具体训练和考察过程.随着科学技术发展的日新日异,C语言已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握C语言的运用技术是十分重要的。在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c

13、语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理。简单界面程序。高级界面程序。程序的添加修改。用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序

14、开发能力,这些都必须通过充分的实际上机操作才能完成。学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语

15、言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在

16、程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去掩盖程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。2熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁

17、通,很快掌握新系统的使用。3学习上机调试程序完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。 通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将

18、会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。六、附件#include #include #include #include #define N sizeof(struct book)#define PT %-5d %10s %6s %6s %8s %3d n,p-num,p-name,p-where,p-author,p-pub,p-countstruct book /*图书信息*/ int num; /*书号*/ char name10; /*书名*/ char where10; /*出版日期*/ char author15; /*作者*/ char pub20; /*出

19、版社*/ int count; /*单价*/ struct book *next;void find1 (struct book *p0);void find2 (struct book *p0);/*输出模块*/void print(struct book *p0) struct book *p; system(cls); p=p0-next; printf(nntt图书信息表); printf(nn图书编号-图书名称-出版日期-作者-出版社-单价n); while(p!=NULL) printf(PT); p=p-next; getch(); system(cls);/*输入模块*/str

20、uct book *creat() struct book *head,*p1,*p2; int i=0; head=p2=(struct book *)malloc(N); head-next=NULL; printf(nntt录入图书信息); printf(nt-); while(1) p1=(struct book *)malloc(N); printf(n 请输入图书编号(书号为结束): ); scanf(%d,&p1-num); if(p1-num!=0) printf(nn书名 作者 出版社 出版日期 单价n); scanf(%s%s%s%s%d,p1-name,p1-author

21、,p1-pub,p1-where,&p1-count); p2-next=p1; p2=p1; i+; else break; p2-next=NULL; free(p1); printf(ntt-); printf(ntt %d 种书录入完毕,i); getch(); system(cls); return head;/*查找模块*/void find(struct book *p0)int v; printf(1.按书名查找n); printf(2.按书号查找n); scanf(%d,&v); switch(v) case 1 : find1(p0);break; case 2:find2

22、(p0);break; default: ; void find1 (struct book *p0) system(cls); char name10; int flag=1; struct book *p; p=p0-next; printf(请输入要查找的书名:n); scanf(%s,&name); for(p=p0;p;p=p-next) if(strcmp(p-name,name)=0) printf(nn图书编号-图书名称-出版日期-作者-出版社-单价n); printf(PT); flag=0; break; if(flag) printf(n 暂无此图书信息n); getch

23、(); void find2 (struct book *p0) system(cls); int num; int flag=1; struct book *p; p=p0-next; printf(请输入要查找的书号:n); scanf(%d,&num); for(p=p0;p;p=p-next) if(p-num=num) printf(nn图书编号-图书名称-出版日期-作者-出版社-单价n); printf(PT); flag=0; break; if(flag) printf(n 暂无此图书信息n); getch(); /*删除模块*/void del(struct book *p0

24、)system(cls); char name10; int flag=1; struct book *p; p=p0; printf(请输入要删除的书名:n); scanf(%s,name); while(p!=NULL) if(strcmp(p-name,name)=0) p0-next=p-next; free(p); printf(t该书资料已删除.); flag=0; break; p0=p; p=p-next; if(flag) printf(nt无此图书信息。); getch(); system(cls); /*录入模块*/void insert(struct book *p0)

25、 struct book *p; system(cls); p=(struct book *)malloc(N); while(1) printf(n 请输入要录入的图书编号(书号为退出): ); scanf(%d,&p-num); if(p-num!=0) if(p0-next!=NULL&p0-next-num=p-num) /*找到重号*/ p=p-next; free(p); printf(t该书已存在); else printf(nn书名 作者 出版社 出版日期 单价n); scanf(%s%s%s%s%d,p-name,p-author,p-pub,p-where,&p-count

26、); p-next=p0-next; p0-next=p; printf(t已成功录入.); else break; getch(); system(cls);/*修改模块*/void modify(struct book *p0) system(cls); char name10; int flag=1; int choice; struct book *p; p=p0-next; printf(请输入要修改的书名:n); scanf(%s,name); while(p!=NULL&flag=1) if(strcmp(p-name,name)=0) printf(nt请选择要修改的项:);

27、printf(nt 1.修改图书编号n); printf(nt 2.修改图书出版日期n); printf(nt 3.修改图书作者n); printf(nt 4.修改图书出版社n); printf(nt 5.修改图书单价n); scanf(%d,&choice); switch(choice) case 1: printf(n 请输入新的图书编号:); scanf(%d,p-num); break; case 2: printf(n 请输入新的图书出版日期:); scanf(%s,p-where); break; case 3: printf(n 请输入新的图书作者:); scanf(%s,p-

28、author); break; case 4: printf(n 请输入新的图书出版社:); scanf(%s,p-pub); break; case 5: printf(n 请输入新的图书单价:); scanf(%d,p-count); break; printf(nt该项已成功修改。nt 新的图书信息:); printf(nn图书编号-图书名称-出版日期-作者-出版社-单价n); printf(PT); flag=0; p0=p; p=p0-next; if(flag) printf(nt暂无此图书信息。); getch(); system(cls);/*读文件*/struct book

29、*read_file() int i=0; struct book *p,*p1,*head=NULL; FILE *fp; if(fp=fopen(library.txt,rb)=NULL) printf(nn t*库文件不存在,请创建!*); getch(); return NULL; head=(struct book *)malloc(N); p1=head; head-next=NULL; printf(n 已有图书信息:); printf(nn图书编号-图书名称-作者-出版社-出版日期-单价n); while(!feof(fp) p=(struct book *)malloc(N); printf(PT); i+; p1-next=p; p1=p; p1-next=NULL; fclose(fp); printf(n 共种%d 图书信息,i); printf(nnn 文件中的信息以正确读出。按任意键返回。); getch();system(cls); return (head); /*保存文件*/void save(struct book *head) FILE

温馨提示

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

评论

0/150

提交评论