C语言图书信息管理系统解析(共20页).doc

上传人:飞****2 文档编号:27092192 上传时间:2022-07-22 格式:DOC 页数:20 大小:89.50KB
返回 下载 相关 举报
C语言图书信息管理系统解析(共20页).doc_第1页
第1页 / 共20页
C语言图书信息管理系统解析(共20页).doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《C语言图书信息管理系统解析(共20页).doc》由会员分享,可在线阅读,更多相关《C语言图书信息管理系统解析(共20页).doc(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上苏州科技学院二一三 二一四学年第一学期电子与信息工程系课程设计报告书课程名称: 小型图书信息管理系统 班 级: _电子Z1112班_ 学 号: _ 姓 名: 刘慧_ 指导教师: 严迪新_ 二一三年十二月1. 题目:小型图书信息管理系统的设计与实现2.功能:(1)每一条记录包括一个图书编号,图书名,作者名,出版社。(2)图书信息浏览功能:完成全部图书信息记录的显示和浏览,包括排序后、修改后、插入后、删除后信息改变的浏览。(3)图书信息录入功能:完成对“图书编号,图书名,作者名,出版社”信息的录入。(4)图书信息修改功能:对图书信息进行修改并保存。(5)图书信息查询功能:

2、通过输入图书编号查找该图书,并显示该图书所有信息。(6)图书信息插入功能:通过输入某本图书编号进行图书信息的插入并保存。(7)图书信息删除功能:完成删除图书的信息的功能。(8)图书信息排序功能:按图书编号对图书进行从小到大重新排序。 (9)图书信息帮助功能:能够给用户提供所有函数的帮助功能,并作相应得介绍。 3.要求:(1)整个系统均用C语言实现;(2)利用指针、链表来实现图书信息的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将图书信息保存在文件中。(6)可以将图书信息从文件中读取出来。4.设计内容

3、:整个系统除了主函数外,另外还有13个函数,包括主函数在内,以实现9大功能:图书信息浏览功能,图书信息录入功能,图书信息修改功能,图书信息查询功能, 图书信息插入功能,图书信息删除功能,图书信息排序功能,图书信息帮助功能,退出系统功能。其功能流程图如下所示:stuct book结构体void help()帮助void allinformation()图书信息浏 览主函数mainmainmenuvoidinput()图书信息录入void editbook()图书信息修改void querybook()图书信息查询void deletebook()图书信息删除void insertbook() 图

4、书信息插入void sortbook() 图书信息排序 图1 主菜单选择功能流程图各个函数的详细设计说明分别如下:4.1创建主函数void main()该函数通过选择各选项,完成相应的功能,当选择退出选项时,退出循环,具体的选择项有:【1】图书信息浏览功能,【2】图书信息录入功能,【3】图书信息修改功能,【4】图书信息查询功能, 【5】图书信息插入功能,【6】图书信息删除功能,【7】图书信息排序功能,【8】图书信息帮助功能,【9】退出系统功能。运行结果图如下:4.2结构体struct定义了一个图书信息的结构体,包括 char author20;char bookname20;char publ

5、isher20;int num;等。操作流程: 1进入主界面选择图书信息浏览 2输出所有已存储的所有图书信息 3退回主界面具体代码如下:struct book char author20; /*作者名*/ char bookname20; /*图书名*/ char publisher20; /*出版单位*/ int num; /*图书编号*/;struct book ba; 4.3编写浏览数据记录函数 void allinformation()该函数可以通过选择相应的功能对已经输入并保存的所有的图书信息进行浏览,并且退出后还能保存记录,以备下次浏览时信息没有丢失。操作流程: 1进入主界面选择图

6、书信息浏览 2输出所有已存储的所有图书信息 3退回主界面运行结果图如下:4.4编写录入数据记录函数inputbook()该函数可以添加新的图书信息,并且在退出后可以自动保存,当重新浏览所有图书信息时,新添加的图书信息也在其中,且通过if (y!=1)来判别是1录入,0不录入,来实现是否继续录入的功能。操作流程: 1进入录入界面 2输入相关信息(图书编号、名字、作者名、出版单位)保存退出。 3退回主界面运行结果如下图:4.5编写修改数据记录函数editbook()该函数可以完成对已有的图书信息“图书编号,图书名,作者名,出版社”进行重新修改并加以保存,实现图书信息的修改,为以后的保存函数,浏览函

7、数,查询函数,排序函数,删除函数,修改函数等功能的实现提供了基础。操作流程: 1进入修改界面 2修改所要修改的图书的编号、作者名等相关信息。 3退回主界面4.6编写查询数据记录函数querybook()该函数运用for语句实现对图书编号信息的查找输出,并显示到屏幕上,实现图书信息的查找功能。操作流程: 1进入查询界面 2通过输入图书编号输出显示指定图书匹配信息 3退回主界面运行结果如下图:4.7编写插入数据记录函数insertbook()通过void insertbook()插入函数来实现插入,先清屏system(cls);然后通过输入插入前图书编号后进行新图书信息的输入最终图书信息插入功能,

8、退出后自动保存可以再次浏览。操作流程: 1进入删除界面 2输入所要删除的图书编号后自动删除。 3退回主界面4.8编写删除数据记录函数deletebook() 该函数通过void deletebook()删除函数来实现图书信息的删除,通过输入图书编号查找到该图书之后删除。退出后再次浏览所有图书信息时便看不到已删除的图书信息。操作流程: 1进入插入界面 2输入所要插入位置的图书编号,然后插入新图书的相关信息。 3退回主界面4.9编写数据记录排序函数 void sortbook()该函数定义了i,j运用冒泡法对图书信息进行排序,对图书的编号按照从小到大的顺序来排序的。最好显示已排序好的的图书信息。操

9、作流程: 1进入插入界面 2输入所要插入位置的图书编号,然后插入新图书的相关信息。 3退回主界面运行结果如下图:4.10编写帮助函数void help()该函数是简单的帮助功能,介绍了各个模块的功能,使用户快速了解该系统的功能作用。具体代码如下:void help()printf(t|帮助|n); printf( 下方显示的是您所需的帮助信息:n);printf( n); printf( 如果选择1,则进入第一个选项(1).图 书 信 息 浏 览:完成全部图书信息记录的显示和浏览,包括排序后、修改后、插入后、删除后信息改变的浏览。n);printf( 如果选择2,则进入第二个选项(2).图 书

10、 信 息 录 入:完成对图书号,图书名,作者名,出版社信息的录入。n);printf( 如果选择3,则进入第三个选项(3).图 书 信 息 修 改:对图书信息进行修改并保存。n); printf( 如果选择4,则进入第四个选项(4).图 书 信 息 查 询:通过输入图书编号查找该图书,并显示该图书所有信息。n);printf( 如果选择5,则进入第五个选项(5).图 书 信 息 插 入:通过输入某本图书编号进行图书信息的插入并保存。n);printf( 如果选择6,则进入第六个选项(6).图 书 信 息 删 除:完成删除图书的信息的功能n); printf( 如果选择7,则进入第八个选项(7)

11、.图 书 文 件 排 序:按图书编号对图书进行从小到大重新排序。n);printf( 如果选择9,则进入第九个选项(8).帮 助 功 能:提供一些帮助给用户使用,以备更好的使用。n);printf( 如果选择0,则进入第零个选项(9).退 出 系 统:用来退出系统,以备下次再使用。n);printf(nn 请按任何键返回,谢谢!n);fflush(stdin); getchar();5. 调试分析 在此次的C语言程序设计中,我的程序开始有很多的错误,例如error C2440: = : cannot convert from int to int 10,是我忽略不能把整型转换成数组。插入功能出

12、现插入信息后却浏览不到,后来在插入后面加了一段保存文件的代码后,插入功能才得以实现,还有因为我的粗心把写文件写成了读文件导致删除功能无法实现。经过我和其他同学反复的检查反复的修改,最终完成了。6. 源程序#include #include #include#include #define NULL 0#define a 100int now=0;struct book char author20; /*作者名*/ char bookname20; /*图书名*/ char publisher20; /*出版单位*/ int num; /*图书编号*/;struct book ba; /*系统主

13、菜单*/void mainmenu() FILE *fp1,*fp2; int i; system(cls); printf (n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统_n); printf(nn); printf(tt +n); printf(tt | | 欢迎使用图书信息管理系统 | | n); printf(tt | | n); printf(tt | | n); printf(tt | 1图书信息浏览 | n); printf(tt | | n); printf(tt | 2图书信息录入 | n); printf(tt | | n); printf(tt | 3图书信息

14、修改 | n); printf(tt | | n); printf(tt | 4图书信息查询 | n); printf(tt | | n); printf(tt | 5图书信息插入 | n); printf(tt | | n); printf(tt | 6图书信息删除 | n); printf(tt | | n); printf(tt | 7图书信息排序 | n); printf(tt | | n); printf(tt | 8帮助 | n); printf(tt | | n); printf(tt | 9退出系统 | n); printf(tt | | n); printf(tt +n);

15、printf (请输入您的选择:);/*library.txt里面读出now的值*/ if(fp2=fopen(D:library.txt,rb)!=NULL) fscanf(fp2,%d,&now); fclose(fp2); /*b.txt里面读出一组数据的值*/ if(fp1=fopen(D:b.txt,rb)!=NULL) for(i=0;inow;i+) fread(&bi,sizeof(struct book),1,fp1); fclose(fp1); /*图书信息浏览*/void allinformation() int i; char turn;printf(t|图书信息浏览|

16、n); printf(浏览所有图书信息n); printf(图书编号t图书名tt作者名tt出版单位nn); for(i=0;inow;i+) printf(%d tt%s tt%s tt%snn,bi.num,bi.bookname,bi.author,bi.publisher); printf(t按任意键返回主菜单.); /*返回主菜单*/ turn=getch(); mainmenu();/*图书信息录入*/void inputbook() printf(t|图书信息录入|n);int i=now; FILE *fp1,*fp2; char turn,judge;doprintf(请输入添

17、加第%d本图书的信息:n,i+1);printf (n请输入图书名:n); scanf(%s,bi.bookname); printf (n请输入图书编号:n); scanf(%d,&bi.num); printf (n请输入作者名:n); scanf(%s,bi.author); printf (n请输入出版单位:n); scanf(%s,bi.publisher); i+; now=i;/*library.txt里面写入now的值*/ if(fp2=fopen(D:library.txt,wb)!=NULL) fprintf(fp2,%d,now); fclose(fp2); printf

18、(是否继续添加?(y/n)n); judge=getch(); while(judge!=n);/*book.txt里面写入一组数据的值*/ if(fp1=fopen(D:b.txt,wb)!=NULL) for(i=0;inow;i+) fwrite(&bi,sizeof(struct book),1,fp1); fclose(fp1); elseprintf(can not open the filen); printf(t请按任意键返回.); /*返回主菜单*/ turn=getch(); mainmenu();/*图书信息修改*/ void editbook() FILE *fp1;

19、int i,e_num,j;char e_author10,e_publisher10,e_bookname10,judge,turn;struct book ebook;printf(t|图书信息修改|n);doprintf(请输入需要修改的图书编号n); scanf(%d,&ebook.num); for(i=0;inow;i+) if(ebook.num=bi.num)/*如果编号相同,说明图书存在,可以进行修改*/ printf(n图书编号:n); scanf(%d,&e_num); printf(n图书名:n); scanf(%s,e_bookname); printf(n作者名:n

20、); scanf(%s,e_author); printf(n出版单位:n); scanf(%s,e_publisher); bi.num=e_num; strcpy(bi.bookname,e_bookname); strcpy(bi.author,e_author); strcpy(bi.publisher,e_publisher); printf(n 图书信息修改成功,请继续选择!n); printf(nn); break; if(i=now)printf(没有此图书n);printf(是否继续修改下本图书?(y/n)n);judge=getch(); /*b.txt里面写入一组数据的值

21、*/ if(fp1=fopen(D:b.txt,wb)!=NULL) for(j=0;jnow;j+) fwrite(&bj,sizeof(struct book),1,fp1); fclose(fp1); else printf(can not open the filen); while(judge!=n);printf(t按任意键返回主菜单.); turn=getch();mainmenu(); /*图书信息查询*/void querybook() int number,flag=1,i;char judge,turn;printf(t|图书信息查询|n);printf(请输入要查询的图

22、书编号: );scanf(%d,&number);for(i=0;inow;i+)if(number=bi.num) flag=0;printf(图书编号t图书名tt作者名tt出版单位nn);printf(%d tt%s tt%s t%snn,bi.num,bi.bookname,bi.author,bi.publisher);break; if (flag!=0)printf(不能找到该图书信息!);printf(t按任意键返回主菜单.); turn=getch();mainmenu();/*图书信息插入*/void insertbook() FILE *fp2,*fp1;int i,j,h

23、;char turn,judge;struct book ib;printf(t|图书信息插入|n);do h=now;printf(请输入插入之前的图书编号n);scanf(%d,&ib.num);for(i=0;i=i;j-)bj+1=bj;printf (n请输入图书名:n); scanf(%s,bi.bookname); printf (n请输入图书编号:n); scanf(%d,&bi.num); printf (n请输入作者名:n); scanf(%s,bi.author); printf (n请输入出版单位:n); scanf(%s,bi.publisher); break;if

24、(i=h) printf(没有本图书n); printf(是否继续插入?(y/n)n);judge=getch(); while(judge!=n);/*library.txt里面读出now的值*/ if(fp2=fopen(D:library.txt,wb)!=NULL) fprintf(fp2,%d,now); fclose(fp2); /*b.txt里面读出一组数据的值*/ if(fp1=fopen(D:b.txt,wb)!=NULL) for(i=0;inow;i+) fwrite(&bi,sizeof(struct book),1,fp1); fclose(fp1); printf(

25、t按任意键返回主菜单.); turn=getch(); mainmenu();/*图书信息删除*/ void deletebook() int number;char turn;int t=now;int i;FILE *fp2,*fp1;system(cls); /*清屏*/printf(t|图书信息删除|n);printf(n 请输入要删除的图书编号: );scanf(%d,&number);for (i=0;inow;i+)if(number=bi.num)for(;inow-1;i+)strcpy(bi.bookname,bi+1.bookname);bi.num=bi+1.num;s

26、trcpy(bi.publisher,bi+1.publisher);strcpy(bi.author,bi+1.author);printf(n 删除图书文件成功!n);now-;break;if(i=t)printf(n 对不起!文件不能找到!n);/*library.txt里面读出now的值*/ if(fp2=fopen(D:library.txt,wb)!=NULL) fprintf(fp2,%d,now); fclose(fp2); /*b.txt里面读出一组数据的值*/ if(fp1=fopen(D:b.txt,wb)!=NULL) for(i=0;inow;i+) fwrite(

27、&bi,sizeof(struct book),1,fp1); fclose(fp1); elseprintf(can not open the filen);printf(t按任意键返回主菜单.); turn=getch(); mainmenu();/*图书信息排序*/void sortbook() int i,j; char turn; struct book cb;printf(t|图书信息排序|n); for(j=0;jnow-1;j+) for(i=0;ibi+1.num) cb=bi; bi=bi+1; bi+1=cb; printf(图书排序(按照图书编号从小到大排序)n); p

28、rintf( 编号tt图书名称tt图书作者tt图书出版社n); for(i=0;inow;i+) printf( %dtt%sttt%sttt%snn,bi.num,bi.bookname,bi.author,bi.publisher); printf(t按任意键返回主菜单.); turn=getch(); mainmenu();/*帮助*/void help()printf(t|帮助|n); printf( 下方显示的是您所需的帮助信息:n);printf( n); printf( 如果选择1,则进入第一个选项(1).图 书 信 息 浏 览:完成全部图书信息记录的显示和浏览,包括排序后、修改

29、后、插入后、删除后信息改变的浏览。n);printf( 如果选择2,则进入第二个选项(2).图 书 信 息 录 入:完成对图书号,图书名,作者名,出版社信息的录入。n);printf( 如果选择3,则进入第三个选项(3).图 书 信 息 修 改:对图书信息进行修改并保存。n); printf( 如果选择4,则进入第四个选项(4).图 书 信 息 查 询:通过输入图书编号查找该图书,并显示该图书所有信息。n);printf( 如果选择5,则进入第五个选项(5).图 书 信 息 插 入:通过输入某本图书编号进行图书信息的插入并保存。n);printf( 如果选择6,则进入第六个选项(6).图 书

30、信 息 删 除:完成删除图书的信息的功能n); printf( 如果选择7,则进入第八个选项(7).图 书 文 件 排 序:按图书编号对图书进行从小到大重新排序。n);printf( 如果选择9,则进入第九个选项(8).帮 助 功 能:提供一些帮助给用户使用,以备更好的使用。n);printf( 如果选择0,则进入第零个选项(9).退 出 系 统:用来退出系统,以备下次再使用。n);printf(nn 请按任何键返回主菜单,谢谢!n); getchar();/*结束*/*主程序*/void main() int n;mainmenu();scanf(%d,&n);while(n)switch(

31、n)case 1:system(cls);allinformation();break;case 2:system(cls);inputbook();break;case 3:system(cls);editbook(); break;case 4:system(cls);querybook();break;case 5:system(cls);insertbook();break;case 6:system(cls);deletebook();break;case 7:system(cls);sortbook();break;case 8:system(cls);help();break;c

32、ase 9:printf( 欢迎您再次使用小型图书信息管理系统! n); exit(9);default:printf(输入有误n);break;scanf(%d,&n);7. 心得体会在这几个星期里,我们专业的学生在严迪新老师的带领下进行了c语言课程设计。在这之前,我已经对c语言这门课程学习了一年,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东还是很陌生,更多的在运用起来的时候还是感到很棘手。我的课题是小型图书信息管理系统,起初由于上机实践太少,经验很是不足,遇到错就犯晕,经过几天连续编程,我也积累了不少以前没有的经验,遇到错误也不那么惧怕了,还从一些同学学到了不少编程技巧

33、和好习惯,而且我越来越对编程有兴趣了,当程序正常运行那一刻真恨不得对全世界人说我成功了。现在我再说说本次课程设计我的心得体会:课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中才发现问题很多。也只有上机操作才能认识到自己课本学的与实践的差距。然而学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。也就是把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解决问题。也只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com