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

下载本文档

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

文档简介

1、课程设计报告课程名称C语言程序设计课题名称图书借阅管理系统专 业机械设计班级15机械二班学号sfnfmci姓 名指导教师2016年6月14日西安理工大学高科学院课程设计任务书课程名称 C语言程序设计课 题图书借阅管理系统专业班级网络工程1002班学生姓名学 号 学 1003 120224指导老师 唐北平、陈淑红、谭小兰审 批任务书下达日期2011年6月20日任务完成日 期2011年7月03日一、设计内容与设计要求1 .设计内容:对一个有N本图书的图书馆,通过该系统实现对该班 级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。(1)、本系统采用一个包含N个数据的结构体数组,每个数据的

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

3、5 .上机演示。6 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7 .按本任务书的要求,按附录的要求编写 课程设计报告(Word文档 格式)。并用A4的复印纸打印并装订; 二、进度安排第十八周 星期1 8时00分11时30分星期2 14 时00分18时15分星期3 8时00分11时30分星期4 8时00分11时30分第十九周 星期18时00分11时30分星期2 14时00分18时15分27三、课程设计报告1 .程序设计准备做系统前,首先,自己详细看了C程序设计(教科书),基本自学会了文 件的相关内容,理解了相关函数的用法

4、和作用;另,上网查询了很多相关资料, 还有找了很多相关的系统,都详细的看了一遍,加深了对c的理解以及对文件的 相关内容进一步理解。学习了C语言的内容,图书信息管理系统有助于 C语言学 习的进一步巩固,在本系统可以增强对指针、文件、函数、结构体变量等基本知 识的进一步理解。另外图书信息管理系统也是学校常用的基本系统之一,它有助 于学校对图书馆书籍的基本管理。2 .程序设计说明根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和 文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下 个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删 除和修改等

5、功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜 单实现功能,在运行时达到所要求的目的。3 .程序的主要功能图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管 理。图书借阅管理系统是对图书信息的基本管理,它包括:图书信息的录入、图 书信息的显示、图书信息的删除、图书信息的修改、图书信息的查询。通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用 其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。1、图书基本信息录入:对新到图书馆的图书的信息(编号、书名、出版社、 作者、价格)进行录入。2、图书基本信息显示:显示已被录入图书的所有信息。

6、3、图书基本信息删除:通过输入书名,判断此图书是否存在,若存在, 则 删除该图书所有信息,若不存在则提示用户重新输入图书书名。4、图书基本信息修改:通过输入书名,判断此图书是否存在,若不存在则 提示用户重新输入图书书名,若存在,则可对图书各项信息进行修改。5、图书基本信息查询:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。6、退出系统:即退出图书借阅管理系统。其中菜单选使用模块化编程的方法每项功能有一个或多个函数组合来完成,项模块对应如下:图书基本信息录入=> void insert()图书基本信息显示=> void print()图书基本信息删除=> vo

7、id de 1()图书基本信息修改=> void modify()图书基本信息查询=> void find()这份代码中各个变量的定义如下:num图书编号name书名author作者pub出版社where出版日期count单价四.功能模块的划分1 .主函数模块根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定 义函数。在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一 个函数,而属于一个源程序文件,在整个程序内可以多次被引用。2 .图书基本信息显示模块当用户选择图书基本信息显示时,程序会将所有图书信息列出。3 .图书基本信息输入模块在程序开始运行,创建文

8、件库时,调动此模块,提示用户输入新的图书编号 (编号为。时结束输入),然后继续输入图书书名,作者,出版社,出版口期,单价等信息。结束输入时提示用户图书输入完成4 .图书基本信息查询模块用户先选择图书查询方式(按书名查找或按书号查找)输入图书书名或书号 后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户 无此图书信息。开始5 .图书基本信息删除模块用户输入所要删除的图书书名,先查找该图书是否存在,若存在,则删除该 图书所有信息,若不存在则提示无此图书信息。6 .图书基本信息录入模块首先输入图书录入的编号(不为 0)判断是否有重复的编号,若有,则提示 用户该书已存在,若无则继续

9、录入书名、作者、出版社、单价。7 .图书基本信息修改模块用户输入要修改的书名,判断该书是否存在,若不存在,则提示用户无此 图书信息;若存在,则提示用户选择修改项目,然后提示用户图书信息修改完成。8 .读文件模块在运行该程序时,程序会自动检测是否存在图书信息,若存在,则会显示 图书信息,若不存在,则会提示用户创建文件库,录入图书信息。9 .文件保存模块当用户对图书信息有录入,修改,删除等操作时,程序会自动保存操作和 新的图书信息。五.主要功能的实现程序运行流程:但每个模块运行完即会回到主函数,然后选择其他或退出。/六.程序调试1.第一次运行程序时,库文件不存在图书信息,于是录入图书信息。图书编号

10、书名;作者i出版社出版日期单价1英语张三人民教育出版社2011.06302.主界面。芯: C: Docu&ents and Sett ingst sg. CT-TTBDebugCpp3. exeWe leone欢迎您,图书管理员请选择J. i 1.图书基本信息录入2 .图书基本信息查询3 .图书基本信息删除4 .图书基本信息修改5 .图书基本信息显示 目.退出系统搜狗拼音半二3.在主界面选择1,开始录入新的图书信息。图书编号书名作者出版社出版日期单价|2数学李四高等教育出版社2011.06284.在主界面选择2,查询图书信息,按1或2分别选择按书名或书号查询。(以英 语为例)选择2,按

11、书号查找,输入书号:1,即可查询图书英语所有信息。选择1,按书名查找,输入书名:英语,即可获得图书英语所有信息。X C: Docu>ent s and SettingsXtsg. C7-70U DebugCpp3.exe请输入要查找的书号: 1图书编号图书名称 作者出版社出版日期单价英语 张三 人民教育出版社 2011.0630搜狗拼音壬n xK C: Docu&ents and Stt ingsAt sg. CT-7A桌面'Debug*Cpp3. cxe应希'.要查找的书名:央语图书编号图书名称 作者出版社-出版日期-单价英语 张三人民教育出版社2011.06搜

12、狗拼音半;5.在主界面选择3,对图书资料进行删除(以数学为例),在后续图书信息显 示时无数学图书信息。C: Docu*ents and Sett ingst sg. C7-TMWDebugCpp3. exe啊?哪膈名:料学:该书资料已删除.6 .在主界面选择4,对图书进行修改(以英语为例,修改图书作者,将作者 更换为王五),在后续图书基本信息显示时,作者不将是张三,而是王五。7 .在主界面选择5,图书基本信息显示,此时图书信息经过删除和修改,和初始 信息不同。加 C: Docu*ents and Sett ingst sg. CT-TMWDebugCpp3. exe人人人人人人人人人人人人人人

13、人人人人人人人人人人人人引 毛;信- 息 人 A A A A A.人人人人人人人人人人人人人人人人人人人 A图书编号图书名称作者出版社出版日期单价I1英语 王五 人民教育出版社 2011.0636七.总结通过为期一周的课程设计,对C语言这门课程有了更深一步的了解。它是 计算机程序设计的重要理论技术基础,在我们网络工程专业的学习中占据着十分重 要的地位。自己C语言编程的能力有了提高,特别是在文件、指针、数组、函数和 结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块 化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。循环是C语 言的重要方法,也是本程序的灵魂,它在

14、本程序中既有“穿针引线”的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循 环过程中对循环进行了多方法的应用也是一个“亮点”,它使程序变得结构合理,通俗易懂,也降低了程序的难度。以后要对这种方法进行深刻的体会。数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用, 本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入, 数组的的使用在本程序中有很大的好处。函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作 用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的 独立性,但也有了一定的联系性,一个函数的错误,

15、不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。 结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方 便了对数据的管理。这个程序的结构大体是从网络上借鉴的,但是大部分功能模块与任务要求不 同,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅 学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为 了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。同时提高了自己对编程的兴趣,使自己对编程有了更深的理解,体会到编程的乐 趣。A.附件原代码清单及注释# include <s

16、td io.h> #include<string.h> # include <conio.h> #include<stdlib.h> #define N sizeofi(struct book)#define PT "-5d%10s%6s%6s%8s%3dnn,p->num,p->name,p->author,p->pub,p->where,p->countstruct book /*图书信息*/int num;书号*/char name10;/*书名*/char where10; /*出版日期*/char

17、 author15; /*作者*/char pub20;/*出版社*/int count; /*单价*/struct book 年text;void findl (struct book *p0);void find2 (struct book *p0);/*输出模块*/void print(struct book *p0)struct book *p;system(ncls");p=p0->next;printf(nnnAAAAAAAAAAAAAAAA图书信息表 AAAAAAAAAAAAAAAA.printf(Hnn图书编号_图书名称-作者出版社出版日期单价 nn”); wh

18、ile (p!=NULL)(printf(PT); p=p->next;)getch(); / 输入任意值返回 system(uclsn);)/*输入模块*/struct book reat()(struct book *head,*pl,*p2;int i=0;head=p2=(struct book *)malloc(N);/ 分配新的内存给 p2head->ne xt=NULL;printf(unntt录入图书信息)printf(Hn”);while (1)pl=(struct book *)malloc(N);printf('n请输入图书编号(书号0为结束):”);

19、scanf(n%dn,&pl->num);if(pl->num!=0)(printf(nnn书名作者 出版社 出版日期 单价nnn");scanf(H%s%s%s%s%du,pl->name,pl->author,pl->pub,p l->where,&pl->count); p2->next=pl;p2=pl; i+;)else break;)p2->ne xt=NULL;free(pl);printf(Hn");printf(Hntt %d种书录入完毕);getch(); system(nclsn);

20、 return head; ) /*查找模块*/ void find(struct book *p0) (int v;system(nclsn);printfC'l.按书名查找 nnnn);printf(n2.按书号查找nu);scanf(n%dn,&v);s witch (v) (case 1 : findl(pO);break;case 2:find2(p0);break;default:;)void findl (struct book *p0)(system(uclsn);char name10;int flag=l;struct book *p;p=pO->ne

21、xt;printf(" 请输入要查找的书名:n'f);scanf("%s”,&name);fo r(p=p 0 ;p ;p=p->ne xt)if(strcmp(p->name,name)=O)printfC'nn 图书编号 图书名称-作者 出版社 期单价nn");printf(PT);flag=0;break;)if(flag) printf(An暂无此图书信息nn);/ 当flag=l时执行getch(); void find2 (struct book *p0)(system(nclsn);int num;int flag

22、=l;struct book ?;p=pO->next;printf(H请输入要查找的书号:nn);scanf(u%dn,&num);for(p=pO;p;p=p->next)if(p->num=num)(printf(nnn 图书编号-图书名称-作者 出版社 期单价nn“);出版日出版日printf(PT);flag=O; break;)if(flag) printf(*n暂无此图书信息 nn);getch();/*删除模块*/void del(struct book 午0) (systemCcls'1);char name10; int flag=l; s

23、truct book *p; p=pO;printf(M 请输入要删除的书名:nn); scanf(,'%s",name);while (p!=NULL) ( if(strcmp(p->name,name)=O) (pO->next=p->next; /后续结点连接到前驱结点之后fi*ee(p); printfC'Xt该书资料已删除.”);flag=0; break; ) pO=p; p=p->next; ) if(flag) printf(unt无此图书信息。”);getch();system(ncls");/*录入模块*/void

24、 insert(struct book *p0)(struct book *p;system(uclsn);p=(struct book *)malloc(N);while (1)(printf(1n请输入要录入的图书编号(书号。为退出):”);scanf(n%du,&p->num);if(p->num!=0)(if(pO->next!=NULL&&pO->next->num=p->num) /找至lj重号(p=p->next;free(p);printf(nt该书已存在”);)elseprintf(”nn书名 作者 出版社 出

25、版日期 单价nnn”);scanf(,%s%s%s%s%du,p->name,p->author,p->pub,p->where,&p->count);p->ne xt=pO->ne xt;pO->next=p;printf(nt已成功录入J);)elsebreak;23)getch();system(uclsn);)/*修改模块*/void modify(struct book *p0)(system(uclsn);char name10;int flag=l;int choice;struct book *p;p=pO->nex

26、t;printf("请输入要修改的书名:nn”);scanf("s”,name);while (p !=NULL&&flag= 1)(请选择要修改的项:”);修改图书编号n”);修改图书出版日期n");修改图书作者n”);修改图书出版社n”);修改图书单价n”);if(strcmp(p->name,name)=O)printf(nntprintf(”nt1.printf('nt2.printf('Ant3.printf(nt4.printf("nt5.scanf(n%dH,&choice);s witch(c

27、hoice)case 1: printf("n请输入新的图书编号; scanf(',%dn,p->num); break;24case 2: printf(nn请输入新的图书出版日期:”);scanf("%s”,p->where); break;)case 3: printf(nn请输入新的图书作者:”);scanf("%s”,p->author); break;)case 4: printf(、n请输入新的图二?出版社:”);scanf("%s”,p->pub); break;)case 5: printf(An请输入新

28、的图书单价:”);scanf(',%dn,p->count); break;)printf(nnt该项已成功修改。nt新的图书信息:”);出版printfC'nn 图书编号-图书名称一作者 出版社日期单价nn”);printf(PT);flag=O;)pO=p;p=pO->next;)if(flag) printf(nnt暂无此图书信息。”);getch();system(uclsn);)/*读文件*/struct book *read_file()(int i=0;struct book %?l,*head=NULL;FILE *fp;if(fp=fopen(,H

29、brary.txt,7'rbn)=NULL) / 以只读的方式打开文件printf(nnn t*神*库文件不存在,请创建!*於*松*巧;getch();re tu rn NULL;)head=(struct book *)malloc(N);pl=head;head->ne xt=NULL;printfC'Xn 已有图书信息:”);printf(Hnn 图书编号 图书名称-作者 出版社 出版日期单价 nrT); while (!feof(fp) (p=(struct book *)malloc(N);while (fscanf(fp,n%d%s%s%s%s%d',

30、&p->num,p->name,p->author,p->pub,p->wh ere,&p->count) !=EOF)(printf(PT); i+;)pl->next=p;P1=P;)pl->ne xt=NULL;fclose(fp);printfC'Xn共种%d图书信息】);printf(J,nnn 文件中的信息以正确读出。按任意键返回。 ”);getch();system(HclsH);return (head);/*保存文件*/void save(struct book %ead)(FILE *fp;struct book 力;fp=fopen(ulibrary.txtu,nwbn); /以只写方式打开二进制文件if(fp=NULL) /打开文件失败(printf(nn=>打开文件失败!n");getch();return ;)elsefor(p=head->ne xt;p !=NULL;p=p->next) fprintf(fp,n%d %s %s %s %s %dnn,p->num,p->name,p->author,p->pub,p->w here,p->count);fclose(fp);printf(Hnt保存文件成功!n

温馨提示

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

评论

0/150

提交评论