




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计(1)课程设计专业 班级 学号 姓名 完成日期 指导教师(签名)1、程序设计说明书【设计题目】 图书管理系统 【问题描述】 图书馆有未知数本书,每个书的情况用该软件通过键盘敲入并以文本文件方式存放在磁盘,内容为六列:书本名称、图书编号、作者、所属类别、出版社、价格。编写程序,可以进行录入、浏览、查询、修改、删除等操作。【基本要求】 (1)通过此软件可以将图书的各种情况录入,并且会将各个情况自动保存到磁盘上。 (2)通过此软件可以一一浏览图书信息。 (3)通过此软件可以对图书进行查询,有两种查询方式,分别为按书名查询和按作者名查询。 (4)通过此软件可以对已录入的每本书情况进行修改、删除,并且修改完成后会将更改后的图书情况自动保存到原磁盘文件中。【算法思想】(1)构造一个结构体类型,成员包括六项。五个字符型数组:书本名称、图书编号、作者、所属类别、出版社,一个浮点型变量:价格。(2)录入每本书的情况时,通过循环语句将每本书情况输入到结构体中,并将其写入文本文件中,并存入磁盘。(3)查询某书本情况时,先将文件读出到结构体中,可以通过输入函数,用书名或作者名进行查询。若没有其相关信息,则输出警告语句;若有,通过条件语句输出结果,并将结果显示在屏幕上。(4)修改每本图书情况时,先将文件读出到结构体中,通过字符的比较查找所修改的图书所在处,如果没有找到则输出警告语句,找到后则通过输入输出函数进行修改,并将修改过后的图书情况写入文本文件中,并存入磁盘。【模块化分及调用关系】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 input函数 创建文件“图书信息”文件创建成功文件创建失败输入 书本名称(name)图书编号(number)作者(writer) 所属类别(category)出版社(publisher)价格(price) 直到输入完N个物品的信息 通过循环,将所输入的内容写入文件中,保存在磁盘里 list函数 读取文件 读取文件成功 读取文件失败通过循环语句,将各个物品的信息情况进行输出 关闭文件 search函数 读取文件读取文件成功 读取文件失败 通过switch语句选择查询方式 在文件中找到 在文件中未找到 输出查询到的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price) 关闭文件 revise函数读取文件读取文件成功 读取文件失败 输入要修改的图书名称 在文件中找到 在文件中未找到 输入要修改的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price) 再将修改后的内容写入文件 关闭文件 append函数读取文件读取文件成功 读取文件失败 输入追加图书的数目 在文件中找到 在文件中未找到输入要追加的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price) 再将增添的内容写入文件 关闭文件 【程序使用方法】 (1)执行程序,按照界面提示进行选择。输入 “1”,进入图书录入。(2)按照程序提示,分别输入书本名称、图书编号、作者、所属类别、出版社、价格。(注:这里默认为有两本图书,可以通过宏定义进行修改。)(3)输入成功后,按任意键返回主界面。输入“2”,进入图书信息浏览,程序自动将各书本信息情况输出到屏幕上。(4)浏览成功后,按任意键返回主界面。输入“3”,进入图书信息查询,按照提示选择一种查询方式,将所查询的本书信息输出到屏幕上。(5)查询成功后,按任意键返回主界面。输入“4”,进入图书信息修改,程序将要修改的物品信息情况输出到屏幕上。(6)修改成功后,按任意键返回主界面。输入“5”,进入图书信息追加,程序将要追加的图书信息情况输出到屏幕上。(7)追击成功后,按任意键返回主界面。输入“0”,退出程序。2、程序上机调试报告【语法错误及其排除】 (1)宏定义时在末尾处加上了分号,应该不加分号。 (2)scanf中输入地址符号时忘了输入,应该输入地址符号。【算法错误及其排除】 (1)定义图书全程变量时直接赋值为0,导致在第二次读取文件时图书数值多出一倍,应该在取消对全程变量的赋值。(2)在查询图书信息时,if语句的子语句缺少了括号,程序没有提示错误,但实际上程序按if紧接的语句执行,应该加上括号。 3、程序测试错误【测试数据】 挪威的森林 村上春树 文学 上海译文出版社围城 钱学森 文学 上海晨光出版公司【输出结果】【收获与体会】 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;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,&); 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),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(&a,sizeof(BOOK),1,fp)!=0) printf(t%st%st%st%st%st%fn,,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 open 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,)=0) flag=1; printf(书名 编号 作者 类别 出版社 价格 n); printf(%st%st%st%st%st%lftnn,,bi.number,bi.writer,bi.category,bi.publisher,bi.price); getch(); break; if(flag=0) 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(strcmp(s3,bi.writer)=0) flag1=1; printf(书名 编号 作者 类别 出版社 价格 n); printf(%st%st%st%st%st%lftnn,,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); printf(开始查询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; FILE *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%20st%lfn,,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); for(i=0;in;i+) printf(t请输入追加图书书名:); scanf(%s,&); 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),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(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北地质大学选聘工作人员85人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年河北邢台威县招聘卫生专业技术人员133人考前自测高频考点模拟试题含答案详解
- 2025贵州安顺市参加“第十三届贵州人才博览会”引才271人考前自测高频考点模拟试题附答案详解(典型题)
- 安全培训教师与复杂性课件
- 安全培训教学课件内容
- 2025年长城钻探工程公司春季招聘(20人)模拟试卷附答案详解(黄金题型)
- 2025年烟台市蓬莱区卫健系统事业单位公开招聘工作人员(23人)考前自测高频考点模拟试题及参考答案详解
- 2025春季四川泸州市合江县卫生医疗机构编外人才招聘20人模拟试卷有答案详解
- 2025年应急管理部所属单位第二批次招聘185人模拟试卷及完整答案详解1套
- 2025年南瓜籽仁项目合作计划书
- 《山水相逢》课件2025-2026学年人美版(2024)八年级美术上册
- 建筑业企业资质标准
- 医疗电子票据管理系统建设方案
- 智慧教育云平台解决方案
- 干货最全的主族元素发现史(每族一篇,成系列,共8篇)
- 线路三级自检表最终
- 水管阻力计算简表+水管流量估算表
- 电气安全知识培训
- 护理质量改善项目申报书
- 大健康生活馆运营手册
- 室内钢平台吊装方案
评论
0/150
提交评论