C语言图书馆管理系统课程设计.doc_第1页
C语言图书馆管理系统课程设计.doc_第2页
C语言图书馆管理系统课程设计.doc_第3页
C语言图书馆管理系统课程设计.doc_第4页
C语言图书馆管理系统课程设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

目录一、需求分析2二、概要设计2三、详细设计4四、调试分析6五、用户手册6六、测试数据6七、附录8一、需求分析1. 程序以菜单的方式工作,具备图书的添加、删除、修改、查询、统计操作,数据存储采用文件形式。2.定义结构体数组struct library bookinf30,用以存储isbn、书名、作者名、图书类别、出版单位、出版时间、价钱、数量信息。利用文件开辟并将信息保存在“bookinf.txt”中。3.用户从键盘输入需要的操作,其中“isbn、书名、作者名、图书类别、出版单位”需使用字符输入,“出版时间、价格、数量”采用数字输入。4.测试数据:(1)查找:若找到了所要查找的书本,则打印出书本信息;若没有找到,则打印“没有找到您要找的书本”(2)删除:若找到了所要查找的书本,按下y确认删除后,打印出“该书已删除”;若没有找到要删除的书本,则打印“没有找到该书,退出操作”(3)修改:若找到了要修改的书本,打印“请输入你要修改的信息”并开始修改;若没有找到要修改的书本,则打印“没有找到要修改的书本”5.程序执行命令为:(1)创建“bookinf.txt”文件(2)将图书信息用添加操作加进“bookinf.txt”文件中(3)用户选择所需操作(4)搜索结果二、概要设计1.定义结构体数组struct library bookinf50。bookinfi.isbn / isbn /书名bookinfi.author / 作者名bookinfi.vari / 图书类别bookinfi.pubplace /出版单位bookinfi.pubtime / 出版时间bookinfi.price /价格bookinfi.num / 数量/* 用以下程序开辟存储文件bookinf.txt */file *fp; if(fp=fopen(bookinf.txt,r+)=null) printf(无法打开文件!n); return; 2.程序构造add ()通过此函数将输入的书本信息添加存储进bookinf.txt文件中,用于下一次的查询或删、改、统操作的调用。del()通过此函数完成对bookinf.txt文件中书本信息的删除,“printf(确定要删除该书吗?(y/n) n);”键盘输入y/n确定书本信息的删除,删除后将不再有该书记录modify()通过此函数完成对书本信息的修改,修改内容包括:isbn、书名、作者名、图书类别、出版单位、出版时间、价格、数量。search()此函数为查询书本信息操作,可查询bookinf.txt文件中存储的书本信息。count()此操作为统计操作,用于统计bookinf.txt文件中存储书本的总数量及金额数。main()通过对上述函数的调用,将所得信息打印出来3.主程序流程主函数 增加模块删除模块修改模块查询模块统计模块三、详细设计1.图书馆管理的数据类型struct librarychar isbn20; /isbnchar name30; /书名char author30; /作者名char vari10; /图书类别char pubplace50; /出版单位int pubtime; /出版时间int price; /价格int num; /数量;/-基本操作的算法描述-1.文件部分file *fp; if(fp=fopen(bookinf.txt,r+)=null) /检查打开的操作是否出错printf(无法打开文件!n); /若出错则打印该行文字return; 2.查询操作部分printf(n请输入您要查找的书名n);scanf(%s,bookname); /输入想查询的书名 while(!feof(fp) /循环 直到文件尾部,函数值为真 fread(&bookinf,sizeof(struct library),1,fp); /从fp中读入1个长度为sizeof(struct library)的数据,存到bookinf 中if(strcmp(,bookname)=0) /比较输入的书名和文件中保存的书名,若相同printf(isbn 书名 作者名 图书类别 出版单位 出版时间 价格 数量n);printf(%s %s %s %s %s %d %d %d n,bookinf.isbn,,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);/若相同,则打印出书本的信息i=1;break; if(i!=1) /若没有找到该书printf(没有找到您要找的书本n);3.删除部分strcpy(bookinfflag.isbn,bookinfflag+1.isbn);/将后一本书的isbn复制给前一本书的isbn strcpy(,bookinfflag+1.name); /将后一本书的书名复制给前一本书的书名strcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书种类复制给前一本书的图书类别strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间bookinfflag.price=bookinfflag+1.price; /将后一本书的价格复制给前一本书的价格bookinfflag.num=bookinfflag+1.num; /将后一本书的数量复制给前一本书的数量4修改部分if(strcmp(bookinfi.isbn,nbook)=0) /如果输入的书本nbook与文件中存储的isbn相同,则开始修改5.统计部分int tn,total=0,alprice=0;/初始化总数和总价格的值为0for(i=0;i=tn;i+)total=total+bookinfi.num;/运用递归,新的总数和为上一次的总数值加上这一次的值alprice=alprice+(bookinfi.num)*(bookinfi.price); /运用递归,新的总价钱和为上一次的总价钱值加上这一次的价钱 printf(图书总册书为%d 总金额数为%dn,total,alprice);/打印出图书总册书和总金额数6.菜单部分printf( 欢迎登录图书管系统 n);printf(*n);printf(* 1.添加图书 2.删除图书 *n);printf(* 3.修改图书 4.查询图书 *n);printf(* 5.统计图书 0.退出系统 *n);printf(*n);7选择部分switch(b) case 1:add();break; /选择1时,执行添加操作 case 2:del();break; /选择2时,执行删除操作 case 3:modify();break; /选择3时,执行修改操作 case 4:search();break; /选择4时,执行查询操作 case 5:count();break; /选择5时,执行统计操作 case 0:flag=1;break; /选择0时,执行退出操作 default:printf(您输入的选择错误!n); /否则,打印输入错误四调试部分1.开始写程序时,没有运用文件保存函数,导致输入的书本信息不能被查看2程序删除函数部分产生左值方面的错误,后运用strcmp( )解决3. 程序删除函数部分,开始不论找到还是没找到要删除的书本,都会打印循环外的该书已删除!,后运用i=n,解决了这个问题。五用户手册1.本程序执行文件为“bookinf.txt”.2. 进入菜单部分,会出现一下选择菜单 1.添加图书 2.删除图书 3.修改图书 4.查询图书 5.统计图书 0.退出系统 并提示请输入你的选择!,用户仅需选择05运行该程序3.添加、修改图书部分,其中isbn、name、author、vari、pubplace、需输入字符(即字母或数字),pubtime、price、num需输入数字。4. 添加、修改图书部分,输入的信息不可超标,需遵循isbn为20字节,name、author为30字节,vari为10字节,pubplace为50字节。六、测试部分 欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 *请输入你的选择! 1 请输入需要添加的书本书以及您要添加的书本数信息 1 isbn:1 书名:1 作者:1 图书类别:1 出版单位:1 出版时间:1 价钱:1 数量:1 欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 *请输入你的选择! 3 请输入您要修改的书号 2 没有找到要修改的书本欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入你的选择! 3 请输入您要修改的书号 1 isbn:2 书名:2 作者:2 图书类别:2 出版单位:2 出版时间:2 价钱:2 数量:2 修改成功!欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 4 请输入您要查找的书名 2 isbn书名 作者名 图书类别 出版单位 出版时间 价格 数量 2 2 2 2 2 2 2 2欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 2 请输入您要删除的书本名 2 2 2 2 2 2 2 2 2 确定要删除该书吗?(y/n) y 该书已删除!欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 0 press any key to continue!七、附录#includestdio.h#includestring.h#includestruct.h#includeconio.hstruct library bookinf30;int n;struct librarychar isbn20;char name30;char author30;char vari10;char pubplace50;int pubtime;int price;int num;/结构体部分void main()/主函数部分 int b,flag=0;while(1)/菜单部分printf( 欢迎登录图书管系统 n);printf(*n);printf(* 1.添加图书 2.删除图书 *n);printf(* 3.修改图书 4.查询图书 *n);printf(* 5.统计图书 0.退出系统 *n);printf(*n);printf(请输入你的选择!n);scanf(%d,&b);switch(b) case 1:add();break;/选择1,执行添加操作 case 2:del();break; /选择2,执行删除操作 case 3:modify();break; /选择3,执行修改操作 case 4:search();break; /选择4,执行查询操作 case 5:count();break; /选择5,执行统计操作 case 0:flag=1;break; /选择0,退出程序操作 default:printf(您输入的选择错误!n);/否则,打印该句void add() /*添加函数*/int i;char x;printf(n请输入需要添加的书本书以及您要添加的书本数信息n);scanf(%d,&n);/输入要添加的书本数for(i=0;in;i+)/用循环添加书本信息printf(isbn:);scanf(%s,bookinfi.isbn);printf(书名:);scanf(%s,);printf(作者:);scanf(%s,bookinfi.author);printf(图书类别:);scanf(%s,bookinfi.vari);printf(出版单位:);scanf(%s,bookinfi.pubplace);printf(出版时间:);scanf(%d,&bookinfi.pubtime);printf(价钱:);scanf(%d,&bookinfi.price);printf(数量:);scanf(%d,&bookinfi.num);x=getch();/按任意键返回菜单save(); /*调用保存函数*/void del()/删除函数int i=0,flag,t=0,tn=0;/tn为保存文件内的书本数char a,bookname20;file *fp;if(fp=fopen(bookinf.txt,r)=null) /如果无法打开文件 printf(无法打开文件!n); return; printf(n请输入您要删除的书本名n);scanf(%s,bookname);rewind(fp); while(!feof(fp)/*没有结束时进行循环*/ fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp); for(i=0;itn;i+) if(strcmp(,bookname)=0)/如果输入的书名与文件内保存的书名相同printf(%s %s %s %s %s %d %d %dn,bookinfi.isbn,,bookinfi.author,bookinfi.vari,bookinfi.pubplace,bookinfi.pubtime,bookinfi.price,bookinfi.num); getch(); flag=i;t=1; printf(确定要删除该书吗?(y/n) n); scanf(%s,&a);if(a = y) for(flag;flagtn;flag+) strcpy(bookinfflag.isbn,bookinfflag+1.isbn); /将后一本书的isbn复制给前一本书的isbn strcpy(,bookinfflag+1.name); /将后一本书的书名复制给前一本书的书名strcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书类别复制给前一本书的图书类别 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间bookinfflag.price=bookinfflag+1.price; /将后一本书的价格复制给前一本书的价格bookinfflag.num=bookinfflag+1.num; /将后一本书的数量复制给前一本书的数量tn-;/删除后书的数量减一 printf(n该书已删除!n);break;getch();if(t!=1)/如果没有找到要删除的书printf(n没有找到该书,退出操作n); save();void search()/查询函数int i=0;file *fp;/文件打开struct library bookinf;char bookname20;if(fp=fopen(bookinf.txt,r)=null) printf(无法打开文件!n); return; printf(n请输入您要查找的书名n);scanf(%s,bookname); while(!feof(fp) /循环 直到文件尾部,函数值为真 fread(&bookinf,sizeof(struct library),1,fp); /从fp中读入1个长度为sizeof(struct library)的数据,存到bookinf 中if(strcmp(,bookname)=0) /*比较输入的书名和文件中保存的书名*/printf(isbn 书名 作者名 图书类别 出版单位 出版时间 价格 数量n);printf(%s %s %s %s %s %d %d %d n,bookinf.isbn,,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);i=1;break; if(i!=1)/如果没有找到要查询的书printf(没有找到您要找的书本n);printf(n按任意键返回菜单n); getch();void modify()/修改函数int i=0,n=0;char nbook20;file *fp;/文件打开 char bookname20;printf(n请输入您要修改的书号n);scanf(%s,nbook);if(fp=fopen(bookinf.txt,r+)=null) printf(无法打开文件!n); return; while(!feof(fp) /*没有结束时进行循环*/ fread(&bookinfn,sizeof(struct library),1,fp);n+; for(i=0;in;i+) if(strcmp(bookinfi.isbn,nbook)=0)/如果输入的nbook与文件内保存的isbn相同printf(请输入你要修改的信息n); printf(isbn:); scanf(%s,bookinfi.isbn); printf(书名:); scanf(%s,); printf(作者:); scanf(%s,bookinfi.author); printf(图书类别:); scanf(%s,bookinfi.vari); printf(出版单位:); scanf(%s,bookinfi.pubplace); printf(出版时间:); scanf(%d,&bookinfi.pubtime); printf(价钱:); scanf(%d,&bookinfi.price); printf(数量:); scanf(%d,&bookinfi.num);printf(n修改成功!n);break;if(i=n)/如果没找到要修改的书本printf(没有找到要修改的书本n”);getch(); save();void count()/统计函数int total=0,alprice=0,i,tn=0;/先定义总数量 总价钱为0file *fp;/文件打开if(fp=fopen(bookinf.txt,r)=null) printf(无法打开文件!n); return; while(!feof(fp) fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp);for(i=0;i=tn;i+)total=total+boo

温馨提示

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

评论

0/150

提交评论