课程设计报告书—图书管理系统(共15页).doc

上传人:飞****2 文档编号:19380423 上传时间:2022-06-06 格式:DOC 页数:15 大小:149KB
返回 下载 相关 举报
课程设计报告书—图书管理系统(共15页).doc_第1页
第1页 / 共15页
课程设计报告书—图书管理系统(共15页).doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《课程设计报告书—图书管理系统(共15页).doc》由会员分享,可在线阅读,更多相关《课程设计报告书—图书管理系统(共15页).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上高级语言程序设计(1)课程设计专业 班级 学号 姓名 完成日期 指导教师(签名)1、程序设计说明书【设计题目】 图书管理系统 【问题描述】 图书馆有未知数本书,每个书的情况用该软件通过键盘敲入并以文本文件方式存放在磁盘,内容为六列:书本名称、图书编号、作者、所属类别、出版社、价格。编写程序,可以进行录入、浏览、查询、修改、删除等操作。【基本要求】 (1)通过此软件可以将图书的各种情况录入,并且会将各个情况自动保存到磁盘上。 (2)通过此软件可以一一浏览图书信息。 (3)通过此软件可以对图书进行查询,有两种查询方式,分别为按书名查询和按作者名查询。 (4)通过此软件可以

2、对已录入的每本书情况进行修改、删除,并且修改完成后会将更改后的图书情况自动保存到原磁盘文件中。【算法思想】(1)构造一个结构体类型,成员包括六项。五个字符型数组:书本名称、图书编号、作者、所属类别、出版社,一个浮点型变量:价格。(2)录入每本书的情况时,通过循环语句将每本书情况输入到结构体中,并将其写入文本文件中,并存入磁盘。(3)查询某书本情况时,先将文件读出到结构体中,可以通过输入函数,用书名或作者名进行查询。若没有其相关信息,则输出警告语句;若有,通过条件语句输出结果,并将结果显示在屏幕上。(4)修改每本图书情况时,先将文件读出到结构体中,通过字符的比较查找所修改的图书所在处,如果没有找

3、到则输出警告语句,找到后则通过输入输出函数进行修改,并将修改过后的图书情况写入文本文件中,并存入磁盘。【模块化分及调用关系】main函数 input函数list函数exit函数append函数revise函数search函数 main函数分别调用: input( ); /图书信息录入list( ); /图书浏览信息 search( ); /图书查询信息 revise( ); /图书修改信息 append( ); /图书增添信息 【模块流程图】 main函数 输入a1=a 2=a 3=a 4=a 5=a 0=aelseinput list search revise append exit in

4、put函数 创建文件“图书信息”文件创建成功文件创建失败输入 书本名称(name)图书编号(number)作者(writer) 所属类别(category)出版社(publisher)价格(price) 直到输入完N个物品的信息 通过循环,将所输入的内容写入文件中,保存在磁盘里 list函数 读取文件 读取文件成功 读取文件失败通过循环语句,将各个物品的信息情况进行输出 关闭文件 search函数 读取文件读取文件成功 读取文件失败 通过switch语句选择查询方式 在文件中找到 在文件中未找到 输出查询到的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(c

5、ategory)出版社(publisher)价格(price) 关闭文件 revise函数读取文件读取文件成功 读取文件失败 输入要修改的图书名称 在文件中找到 在文件中未找到 输入要修改的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price) 再将修改后的内容写入文件 关闭文件 append函数读取文件读取文件成功 读取文件失败 输入追加图书的数目 在文件中找到 在文件中未找到输入要追加的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(p

6、ublisher)价格(price) 再将增添的内容写入文件 关闭文件 【程序使用方法】 (1)执行程序,按照界面提示进行选择。输入 “1”,进入图书录入。(2)按照程序提示,分别输入书本名称、图书编号、作者、所属类别、出版社、价格。(注:这里默认为有两本图书,可以通过宏定义进行修改。)(3)输入成功后,按任意键返回主界面。输入“2”,进入图书信息浏览,程序自动将各书本信息情况输出到屏幕上。(4)浏览成功后,按任意键返回主界面。输入“3”,进入图书信息查询,按照提示选择一种查询方式,将所查询的本书信息输出到屏幕上。(5)查询成功后,按任意键返回主界面。输入“4”,进入图书信息修改,程序将要修改

7、的物品信息情况输出到屏幕上。(6)修改成功后,按任意键返回主界面。输入“5”,进入图书信息追加,程序将要追加的图书信息情况输出到屏幕上。(7)追击成功后,按任意键返回主界面。输入“0”,退出程序。2、程序上机调试报告【语法错误及其排除】 (1)宏定义时在末尾处加上了分号,应该不加分号。 (2)scanf中输入地址符号时忘了输入,应该输入地址符号。【算法错误及其排除】 (1)定义图书全程变量时直接赋值为0,导致在第二次读取文件时图书数值多出一倍,应该在取消对全程变量的赋值。(2)在查询图书信息时,if语句的子语句缺少了括号,程序没有提示错误,但实际上程序按if紧接的语句执行,应该加上括号。 3、

8、程序测试错误【测试数据】 挪威的森林 村上春树 文学 上海译文出版社围城 钱学森 文学 上海晨光出版公司【输出结果】【收获与体会】 4、源程序代码 #includestdio.h#includestdlib.h#includestring.h#includeconio.h#define N 2typedef struct system char name20; /书本名称 char number20; /书本编号 char writer10; /书本作者 char category10; /所属类别 char publisher20; /出版社 double price; /书本价格BOOK;

9、BOOK a;/定义一个全局变量 void input() /*定义录入函数*/ int i; FILE *fp; system(cls); if(fp=fopen(e:file,w)=NULL) printf(error!n);exit(1); for(i=1;i=N;i+) printf(t请输入书名:); scanf(%s,&a.name); printf(t请输入图书编号:); scanf(%s,&a.number); printf(t请输入作者名:); scanf(%s,&a.writer); printf(t请输入图书的所属类别:); scanf(%s,&a.category);

10、printf(t请输入出版社:); scanf(%s,&a.publisher); printf(t请输入该书的价格:); scanf(%lf,&a.price); fwrite(&a,sizeof(BOOK),1,fp); fclose(fp);void list() /*定义浏览函数*/ FILE *fp; system(cls); if(fp=fopen(e:file,r)=NULL) printf(error!n);exit(1); printf(nnnnnntbooknametnumbertwritertcategorytpublishertpricenn); while(fread

11、(&a,sizeof(BOOK),1,fp)!=0) printf(t%st%st%st%st%st%fn,a.name,a.number,a.writer,a.category,a.publisher,a.price); fclose(fp); printf(nt press any key to continue.); getch();void search_by_name() /*定义按书名查询*/ FILE *fp; int i; int flag=0; BOOK bN; char s220; fp=fopen(e:file,r); if(fp=NULL) printf(file op

12、en error!n);exit(1); for(i=0;iN;i+) fread(&bi,sizeof(BOOK),1,fp); printf(请输入要查询的书名: ); scanf(%s,s2); for(i=0;iN;i+ ) if(strcmp(s2,bi.name)=0) flag=1; printf(书名 编号 作者 类别 出版社 价格 n); printf(%st%st%st%st%st%lftnn,bi.name,bi.number,bi.writer,bi.category,bi.publisher,bi.price); getch(); break; if(flag=0)

13、printf(cannot found!); getch(); fclose(fp);void search_by_writer() /*定义按作者名查询*/ int i; int flag1=0; FILE *fp; BOOK bN; char s320; fp=fopen(e:file,r); if(fp=NULL) printf(file open error!n);exit(1); for(i=0;iN;i+) fread(&bi,sizeof(BOOK),1,fp); printf(请输入要查询的书的作者: ); scanf(%s,&s3); for(i=0;iN;i+ ) if(s

14、trcmp(s3,bi.writer)=0) flag1=1; printf(书名 编号 作者 类别 出版社 价格 n); printf(%st%st%st%st%st%lftnn,bi.name,bi.number,bi.writer,bi.category,bi.publisher,bi.price); getch(); break; if(flag1=0) printf(cannot found!); getch(); fclose(fp); void search() /*定义查询函数*/ int chax; system(cls); /*进行清屏*/ printf(tt*n); pr

15、intf(开始查询n); printf(ttt1-search_by_namen); printf(ttt2-search_by_writern); printf(ttt0-exitn); printf(tt*n) ; printf(tt请选择你想要的查询方式:); scanf(%d,&chax); switch(chax) case 1:search_by_name();break; case 2:search_by_writer();break; case 0:return; void revise() /*定义修改函数*/ int i,k; char s120; BOOK bN; FIL

16、E *fp; system(cls); if(fp=fopen(e:file,w+)=NULL) printf(error!); exit(1); for(i=0;iN;i+) fread(&bi,sizeof(BOOK),1,fp); printf(tt欢迎进入修改界面n); printf(nnntt请输入所要修改的图书名:n); getchar(); gets(s1); for(i=0;iN) printf(未找到!); exit(0); else printf(tt请输入 书名 编号 作者 类别 出版社 价格 n); scanf(ttttttt%20st%20st%10st%10st%2

17、0st%lfn,bi.name,bi.number,bi.writer,bi.category,bi.publisher,bi.price); for(i=0;iN;i+) fwrite(&bi,sizeof(BOOK),1,fp); fclose(fp); printf(修改成功!); void append() /*定义追加函数*/ int i,n; BOOK a; FILE *fp; system(cls); if(fp=fopen(e:file,a)=NULL) printf(error!n);exit(1); printf(nnt请输入追加图书的个数:); scanf(%d,&n);

18、 for(i=0;in;i+) printf(t请输入追加图书书名:); scanf(%s,&a.name); printf(t请输入追加图书的编号:); scanf(%s,&a.number); printf(t请输入追加图书的作者名:); scanf(%s,&a.writer); printf(t请输入追加图书的所属类别:); scanf(%s,&a.category); printf(t请输入追加图书出版社:); scanf(%s,&a.publisher); printf(t请输入追加图书的价格:); scanf(%lf,&a.price); fwrite(&a,sizeof(BOOK

19、),1,fp); fclose(fp); int main() int a; do system(cls); printf(nnnnnt图书信息管理系统ttttn); printf(ttt*n); printf(ttt1 -图书信息录入n); printf(ttt2 -图书信息浏览n); printf(ttt3 -图书信息查询n); printf(ttt4 -图书信息修改n); printf(ttt5 -图书信息追加n); printf(ttt0 -退出图书信息系统n); printf(ttt*n); printf(tt请选择: ); scanf(%d,&a); switch(a) case 1:input(); break; case 2:list(); break; case 3:search(); break; case 4:revise(); break; case 5:append(); break; case 0:exit(0); default:printf(n序号不对n); while(a!=0); 专心-专注-专业

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

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

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁