《图书借阅管理系统》C语言程序设计报告.docx
- 文档编号:4791185
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:26
- 大小:284.01KB
《图书借阅管理系统》C语言程序设计报告.docx
《《图书借阅管理系统》C语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《《图书借阅管理系统》C语言程序设计报告.docx(26页珍藏版)》请在冰豆网上搜索。
《图书借阅管理系统》C语言程序设计报告
课程设计报告
课程名称C语言程序设计
课题名称图书借阅管理系统
专业建筑环境与设备工程
班级1101班
学号201109010112
姓名黄斌
指导教师唐北平
2012年6月20日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题图书借阅管理系统
专业班级建环1101班
学生姓名黄斌
学号201109010112
指导老师唐北平
审批
任务书下达日期2012年6月20日
任务完成日期2012年7月03日
一、设计内容与设计要求
1.设计内容:
对一个有N本图书的图书馆,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理.
(1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
书号、书名、作者、出版社、出版日期、单价、是否借出等。
(2)、本系统显示这样的菜单:
a.图书基本信息录入
b.图书基本信息显示
c.图书基本信息删除
d.图书基本信息修改
e.图书基本信息查询(按书号查询、书名等)
g。
退出系统
(3)、执行一个具体的功能之后,程序将重新显示菜单。
2.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
3.程序精炼,结构清晰.
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行.源程序及编译生成各文件均保存在软盘中;
7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
二、进度安排
第十九周星期18时00分—-11时30分
星期214时00分-—18时15分
星期414时00分——18时15分
星期68时00分——12时15分
一、课程设计报告.。
.。
。
..。
..。
。
。
。
.....。
。
。
....。
。
..。
.。
2
二、功能模块的划分。
.。
...。
.。
。
。
....。
.。
......。
.。
..。
。
6
三、主要功能的实现..。
.。
..。
..。
。
..。
.。
。
。
..。
...。
。
..。
12
四、程序代码清单...。
.。
.。
.。
。
。
。
。
。
。
.。
。
.........。
。
..13
五、程序调试详情。
。
..。
。
。
。
.。
。
。
......。
..。
。
...。
.。
。
。
.19
六、总结.。
。
.........。
.。
...。
.。
。
.。
.。
。
。
。
..。
....。
。
。
。
24
七、附件。
..。
。
......。
.。
.。
......。
。
。
..。
。
....。
。
.。
..。
25
八、评分表.。
。
.。
.。
..。
.。
。
。
。
。
....。
。
.。
。
.。
.。
.。
.。
.。
。
。
.25
三、课程设计报告
1。
程序设计准备
做系统前,首先,自己详细看了《C程序设计》(教科书),基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解.学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、文件、函数、结构体变量等基本知识的进一步理解。
另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。
2.程序设计说明
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:
在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:
另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
3。
程序的主要功能
图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理.图书借阅管理系统是对图书信息的基本管理,它包括:
图书信息的录入、图书信息的显示、图书信息的删除、图书信息的修改、图书信息的查询。
通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能.
1、图书基本信息录入:
对新到图书馆的图书的信息(编号、书名、出版社、作者、价格)进行录入。
2、图书基本信息显示:
显示已被录入图书的所有信息.
3、图书基本信息删除:
通过输入书名,判断此图书是否存在,若存在,则删除该图书所有信息,若不存在则提示用户重新输入图书书名。
4、图书基本信息修改:
通过输入书名,判断此图书是否存在,若不存在则提示用户重新输入图书书名,若存在,则可对图书各项信息进行修改.
5、图书基本信息查询:
将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。
6、退出系统:
即退出图书借阅管理系统。
使用模块化编程的方法每项功能有一个或多个函数组合来完成,其中菜单选项模块对应如下:
图书基本信息录入==〉voidinsert()
图书基本信息显示==〉voidprint()
图书基本信息删除==>voiddel()
图书基本信息修改==〉voidmodify()
图书基本信息查询==〉voidfind()
这份代码中各个变量的定义如下:
num图书编号
name书名
author作者
pub出版社
where出版日期
count单价
四.功能模块的划分
1.主函数模块
根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。
在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。
1。
图书基本信息录入模块
首先输入图书录入的编号(不为0)判断是否有重复的编号,若有,则提示用户该书已存在,若无则继续录入书名、作者、出版社、单价。
2。
图书基本信息显示模块
当用户选择图书基本信息显示时,程序会将所有图书信息列出。
3.图书基本信息输入模块
在程序开始运行,创建文件库时,调动此模块,提示用户输入新的图书编号(编号为0时结束输入),然后继续输入图书书名,作者,出版社,出版日期,单价等信息。
结束输入时提示用户图书输入完成
4.图书基本信息删除模块
用户输入所要删除的图书书名,先查找该图书是否存在,若存在,则删除该图书所有信息,若不存在则提示无此图书信息。
5.图书基本信息修改模块
用户输入要修改的书名,判断该书是否存在,若不存在,则提示用户无此图书信息;若存在,则提示用户选择修改项目,然后提示用户图书信息修改完成。
6。
图书基本信息查询模块
用户先选择图书查询方式(按书名查找或按书号查找)输入图书书名或书号后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户无此图书信息。
7。
读文件模块
在运行该程序时,程序会自动检测是否存在图书信息,若存在,则会显示图书信息,若不存在,则会提示用户创建文件库,录入图书信息。
8.文件保存模块
当用户对图书信息有录入,修改,删除等操作时,程序会自动保存操作和新的图书信息。
五.主要功能的实现
程序运行流程:
但每个模块运行完即会回到主函数,然后选择其他或退出。
程序代码清单如下:
#include h〉 #include h> #include〈string。 h> typedefstruct{ charnumber[10];//书号 charname[20];//书名 charauthor[20];//作者 charpublish[50];//出版社 chartime[20];//出版时间 floatprice; }mbook; typedefstruct{ intcount;//书的本数 mbookbook[100];//最大可有100本书 }mlibrary; mlibrarylibrary; voidsave()//保存图书信息。 { FILE*fp; if((fp=fopen("library。 doc”,”w"))==NULL) { printf("\n不能保存图书信息\n"); return; } fwrite(&library.count,sizeof(int),1,fp); fwrite(library.book,sizeof(library.book[0]),library.count,fp); } voidputin()/*定义录入函数*/ { inty=1; system("cls"); while(y) { printf("\t请输入您的书籍的书号: ”); scanf("%s",library.book[library。 count]。 number); printf(”\t请输入书名: ”); scanf(”%s”,library。 book[library.count]。 name); printf("\t请输入作者名: "); scanf("%s”,library.book[library.count]。 author); printf("\t请输入出版社: ”); scanf("%s”,library。 book[library.count]。 publish); printf(”\t请输入出版时间: "); scanf(”%s”,library。 book[library.count]。 time); printf("\t请输入该书的价格: ”); fflush(stdin); scanf(”%f",&library。 book[library.count].price); library。 count++; printf(”\n是否继续录入(1。 继续;0,退出录入): "); fflush(stdin); scanf(”%d",&y); if(y! =1) { y=0; break; } } save(); } voidprint() { system(”cls”); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(inti=0;i〈library。 count;i++) { printf(”%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i]。 name,library。 book[i].author,library.book[i]。 publish,library。 book[i]。 time,library.book[i]。 price); } fflush(stdin); getchar(); } voidsearch_by_name()/*定义按书名查询*/ { chars2[20]; intflag=1; printf(”\n请输入要查询的书名: "); fflush(stdin); scanf("%s”,s2); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(inti=0;i if(strcmp(s2,library.book[i].name)==0) { flag=0; printf(”%s\t%s\t%s\t%s\t%s\t%6.2f\n”,library.book[i].number,library.book[i]。 name,library。 book[i]。 author,library.book[i]。 publish,library。 book[i].time,library。 book[i].price); } if(flag) { printf("cannotfound! ”); } fflush(stdin); getchar(); } voidsearch_by_author()/*定义按作者名查询*/ { chars3[20]; intflag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf(”%s”,s3); printf(”图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(inti=0;i count;i++) if(strcmp(s3,library.book[i]。 author)==0) { flag=0; printf(”%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i]。 name,library.book[i]。 author,library.book[i].publish,library。 book[i]。 time,library。 book[i]。 price); } if(flag) { printf(”cannotfound! "); } fflush(stdin); getchar(); } voiddel()/*定义删除函数*/ { charnumber[10]; system(”cls");/*清屏*/ printf(”\nPleasetypeinthenumberofthebookyouwanttodelete: ”); fflush(stdin); scanf("%s",number); inti; for(i=0;i count;i++) { if(strcmp(number,library。 book[i]。 number)==0)break; } if(i! =library.count) { for(;i〈library。 count—1;i++) { strcpy(library.book[i].name,library.book[i+1].name); strcpy(library.book[i].number,library。 book[i+1]。 number); strcpy(library.book[i]。 publish,library.book[i+1].publish); strcpy(library。 book[i]。 author,library.book[i+1].author); strcpy(library。 book[i]。 time,library。 book[i+1].time); library。 book[i]。 price=library.book[i+1]。 price; } library.count--; } else printf("\ncannotfound! \n”); save(); fflush(stdin); getchar(); } voidmodify()//修改图书信息 { charnumber[10]; system("cls");/*清屏*/ printf(”\nPleasetypeinthenumberofthebookyouwanttodelete: "); fflush(stdin); scanf(”%s",number); inti; for(i=0;i〈library.count;i++) { if(strcmp(number,library.book[i]。 number)==0) { printf(”图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); printf(”%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i]。 name,library。 book[i]。 author,library。 book[i].publish,library.book[i].time,library.book[i].price); break; } } if(i! =library。 count) { mbookbook; printf("\n\t\t请输入修改后此图书的信息\n”); printf(”\t请输入图书号: ”); scanf("%s",book.number); printf(”\t请输入图书名: "); scanf("%s",book.name); printf(”\t请输入作者名: "); scanf(”%s”,book。 author); printf(”\t请输入出版社: "); scanf(”%s”,book。 publish); printf("\t请输入出版时间: "); scanf(”%s",book。 time); printf(”\t请输入该书的价格: ”); fflush(stdin); scanf("%f",&book。 price); strcpy(library.book[i]。 name,book.name); strcpy(library.book[i].number,book。 number); strcpy(library.book[i].publish,book.publish); strcpy(library.book[i]。 author,book。 author); strcpy(library。 book[i]。 time,book.time); library。 book[i].price=book.price; save(); } else printf(”\ncannotfound! \n”); fflush(stdin); getchar(); } voidmain() { FILE*fp; if((fp=fopen(”library。 doc”,”r"))==NULL) { printf("\n不能打开图书信息库\n"); fp=fopen("library。 doc”,”w+"); printf(”\n初始化图书信息库,初始化之后要重启程序\n"); library.count=0; fwrite(&library。 count,sizeof(int),1,fp); fclose(fp); return; } fread(&library。 count,sizeof(int),1,fp); fread(library。 book,sizeof(library.book[0]),library.count,fp); fclose(fp); inta; do { system("cls”); printf(”\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t*********************************************\n”); printf("\t\t\t1----—-——-——--——-——图书信息录入\n”); printf("\t\t\t2——-------—--—--—--图书信息显示\n”); printf(”\t\t\t3—---—---———-—----—图书信息查询\n”); printf(”\t\t\t4———--—--————---—--图书信息删除\n”); printf(”\t\t\t5-—----—--—------——图书信息修改\n"); printf("\t\t\t0——--—————--—---——退出图书信息系统\n"); printf("\t\t*********************************************\n”); printf(”\t\tPleaseEnterChoose: "); fflush(stdin); scanf("%d”,&a); switch(a) { case1: putin(); break; case2: lookup(); break; case3: search(); break; case4: del(); break; case5: update(); break; case0: printf(”\n\n退出\n\n”); break; default: printf(”\n序号不对\n"); } }while(a! =0); save(); } voidfind()/*定义查询函数*/ { inta; system(”cls”);/*进行清屏*/ printf(”\t\t******************************\n"); printf("开始查询\n"); printf(”\t\t\t1---———---———---search_by_name\n”); printf("\t\t\t2-——-----—————-—search_by_writer\n"); printf("\t\t\t0--——-———--—-—--exit\n”); printf("\t\t******************************\n"); printf(”\t\t请选择你想要的查询方式: "); fflush(stdin); scanf("%d",&a); switch(a) { case1: search_by_name(); break; case2: search_by_author(); break; case0: return; } } 六.程序调试 1.第一次运行程序时,库文件不存在图书信息,于是录入图书信息. 图书编号 书名 作者 出版社 出版日期 单价 1 英语 张三 人民教育出版社 2011。 06 30 2.主界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书借阅管理系统 图书 借阅 管理 系统 语言程序设计 报告