ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:126.21KB ,
资源ID:3730088      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3730088.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言图书馆管理系统课程设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言图书馆管理系统课程设计.docx

1、C语言图书馆管理系统课程设计一、需求分析1. 程序以菜单的方式工作,具备图书的添加、删除、修改、查询、统计操作,数据存储采用文件形式。2.定义结构体数组struct library bookinf30,用以存储ISBN、书名、作者名、图书类别、出版单位、出版时间、价钱、数量信息。利用文件开辟并将信息保存在“bookinf.txt”中。3.用户从键盘输入需要的操作,其中“ISBN、书名、作者名、图书类别、出版单位”需使用字符输入,“出版时间、价格、数量”采用数字输入。4.测试数据:(1)查找:若找到了所要查找的书本,则打印出书本信息;若没有找到,则打印“没有找到您要找的书本”(2)删除:若找到了

2、所要查找的书本,按下y确认删除后,打印出“该书已删除”;若没有找到要删除的书本,则打印“没有找到该书,退出操作”(3)修改:若找到了要修改的书本,打印“请输入你要修改的信息”并开始修改;若没有找到要修改的书本,则打印“没有找到要修改的书本”5.程序执行命令为:(1)创建“bookinf.txt”文件(2)将图书信息用添加操作加进“bookinf.txt”文件中(3)用户选择所需操作(4)搜索结果二、概要设计1.定义结构体数组struct library bookinf50。bookinfi.ISBN / ISBN bookinfi.name /书名bookinfi.author / 作者名bo

3、okinfi.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文件中书本信息的删除,“pr

4、intf(确定要删除该书吗?(y/n) n);”键盘输入y/n确定书本信息的删除,删除后将不再有该书记录modify()通过此函数完成对书本信息的修改,修改内容包括:ISBN、书名、作者名、图书类别、出版单位、出版时间、价格、数量。search()此函数为查询书本信息操作,可查询bookinf.txt文件中存储的书本信息。count()此操作为统计操作,用于统计bookinf.txt文件中存储书本的总数量及金额数。main()通过对上述函数的调用,将所得信息打印出来3.主程序流程主函数 增加模块删除模块修改模块查询模块统计模块三、详细设计1.图书馆管理的数据类型struct library c

5、har ISBN20; /ISBN char 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,boo

6、kname); /输入想查询的书名 while(!feof(fp) /循环 直到文件尾部,函数值为真 fread(&bookinf,sizeof(struct library),1,fp); /从fp中读入1个长度为sizeof(struct library)的数据,存到bookinf 中 if(strcmp(bookinf.name,bookname)=0) /比较输入的书名和文件中保存的书名,若相同 printf(ISBN 书名 作者名 图书类别 出版单位 出版时间 价格 数量n); printf(%s %s %s %s %s %d %d %d n,bookinf.ISBN,bookinf

7、.name,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.name,bookinfflag+1.name); /将后一本书的书名复制给前一本书的书名 s

8、trcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名 strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书种类复制给前一本书的图书类别 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位 bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间 bookinfflag.price

9、=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+(boo

10、kinfi.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时,执行添加操作 cas

11、e 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. 程序删除函数部分,开始不论找到还

12、是没找到要删除的书本,都会打印循环外的该书已删除!,后运用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字

13、节,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

14、.删除图书 * * 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.修改图书

15、 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;stru

16、ct library char 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); print

17、f(请输入你的选择!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;

18、 char x; printf(n请输入需要添加的书本书以及您要添加的书本数信息n); scanf(%d,&n);/输入要添加的书本数 for(i=0;in;i+)/用循环添加书本信息 printf(ISBN:); scanf(%s,bookinfi.ISBN); printf(书名:); scanf(%s,bookinfi.name); printf(作者:); scanf(%s,bookinfi.author); printf(图书类别:); scanf(%s,bookinfi.vari); printf(出版单位:); scanf(%s,bookinfi.pubplace); print

19、f(出版时间:); 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); ret

20、urn; 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(bookinfi.name,bookname)=0)/如果输入的书名与文件内保存的书名相同 printf(%s %s %s %s %s %d %d %dn,bookinfi.ISBN,bookinfi.name,bookinfi.author,

21、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.name,bookinfflag+1.name); /将后一本书的书名复制给前

22、一本书的书名 strcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名 strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书类别复制给前一本书的图书类别 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位 bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间 bookinffl

23、ag.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(

24、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(bookinf.name,bookname)=0) /*比较输入的书名和文件中保存的书名*/ printf(ISBN 书名 作者名 图书类别 出版

25、单位 出版时间 价格 数量n); printf(%s %s %s %s %s %d %d %d n,bookinf.ISBN,bookinf.name,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 *f

26、p;/文件打开 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(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1