C语言课程设计图书信息管理系统

上传人:仙*** 文档编号:29812956 上传时间:2021-10-08 格式:DOC 页数:30 大小:571.52KB
收藏 版权申诉 举报 下载
C语言课程设计图书信息管理系统_第1页
第1页 / 共30页
C语言课程设计图书信息管理系统_第2页
第2页 / 共30页
C语言课程设计图书信息管理系统_第3页
第3页 / 共30页
资源描述:

《C语言课程设计图书信息管理系统》由会员分享,可在线阅读,更多相关《C语言课程设计图书信息管理系统(30页珍藏版)》请在装配图网上搜索。

1、C语言课程设计论文图书馆信息管理系统摘 要在现代化的图书馆中,图书信息管理是一项必备的工作。相比于传统的人力操作行为,使用现代化的管理工具例如专业的图书馆图书管理软件,能够减少人力资源的损耗,加快工作的流程,缩短工作时间。在图书馆管理当中,人工统计的速度慢,且容易出现差错。本信息管理系统的自动化加速了统计工作,提高管理效率。在本程序中,运用了文件来进行储存,并有增加和修改已有信息的功能,本程序实现了所有题目要求设计的设计要求。关键词:文件,修改,储存,添加,高效率目 录 中文摘要1 题目要求11.1 要求.12 需求分析13 总体设计14 详细设计14.1主函数24.2各功能模块设计54.3

2、公共函数65运行结果(附带抓图)76总结10附录A 源码14参考文献29 1 题目要求11 要求 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书馆的图书信息管理系统,使之能提供以下功能: (1) 系统以菜单方式工作。 (2) 图书信息录入功能(图书信息用文件保存)。 (3) 图书信息浏览功能。 (4) 图书信息查询功能。 (5) 图书信息修改功能。2 需求分析 本程序将用到文件系统,date.txt文件内容作储存的载体。本程序运行后首先将图书信息以文件系统读取并保存到程序的结构体数组当中,然后提供文件输入、修改、添加、查询、浏览的操作;另外还提供键盘式选择

3、菜单实现功能选择。3 总体设计 根据上面的分析,可以将这个系统分为如下五大模块:enter图书信息输入模块、modify图书信息修改模块、add图书信息添加模块、browse图书信息浏览模块、search图书信息搜索模块。而各个模块之间由menu菜单模块来做连接,最后由main主函数领导。4 详细设计4.1 主函数【数据结构】 原始数据有图书信息的图书序号、书名、作者名、价格、出版单位、出版时间、分类号。所以定义一个全局结构体数组book用于保存原始数据。然后定义全局变量n保存图书的数目。在结构体定义中,除了价格使用浮点型变量来定义之外,其他的都是用字符型变量来定义。所有的信息均以数组保存。【

4、数据结构代码】struct book char num10;/序号 char name20;/书名 char writter20;/作者名 float price;/价格 char indate15;/出版单位 char out15;/出版时间 char outdate15;/分类号 equN;函数通过调用load()读取文件数据,然后用全局变量n来保存文件返回的书本的数量,然后menu()显示主菜单。【程序】int main()/ -主函数 void menu();/声明menu函数 menu(); return 0; system(pause); /系统暂停4.1.1 load ()读取文

5、件数据load()函数从data.txt文件读取数据,将数据保存到程序全局变量n中。【程序】int load()/*读取文件后返回n FILE *fp; int i; if(fp=fopen(data.txt,rb)=NULL) /用只读方式打开data.txt文件printf(找不到文件n);for(i=0;!feof(fp);i+)fread(&equi,sizeof(struct book),1,fp);fclose(fp);return (i-1);4.1.2 menu()显示主菜单 向用户显示菜单,让用户选项进入相应模块可视化操作。【程序】void menu()/ 菜单函数 void

6、 load(); void enter(); void modify(); void add(); void browse(); void search(); void author(); int n,w1; /定义整型变量n保存用户输入的选择序号 do puts(*图书管理系统-菜单*n); puts(tttt1.图书信息-录入n); puts(tttt2.图书信息-修改n); puts(tttt3.图书信息-添加n); puts(tttt4.图书信息-浏览n); puts(tttt5.图书信息-查询n); puts(tttt6.关于程序作者n); puts(tttt7.退出n); puts

7、(*n); printf(选择数字(1-7): bb); scanf(%d,&n); if(n7)/ 校检用户输入序号 w1=1;getchar(); else w1=0; while(w1=1); switch(n) /多分支选择语句 case 1:enter();break;/ 信息录入 case 2:modify();break;/ 信息修改 case 3:add();break;/添加 case 4:browse();break;/浏览 case 5:search();break;/查询 case 6:author();break;/ 作者信息 case 7:exit(0); 4.2

8、各功能模块设计4.2.1 图书信息的录入 此模块用于用户输入图书的相关信息,包括序号、书名、作者名、价格、出版单位、出版时间、分类号。【程序】 void enter()/ 数据的输入 int i,n; void save(int i); /声明save保存函数 FILE *fp; fp=fopen(data.txt,rb); printf(添加多少本图书呢?: 本bb); scanf(%d,&n); printf(nn); for(i=0;in;i+) printf(现在输入第%d个数据nn,i+1); printf(输入序号n); scanf(%s,equi.num); printf(输入书

9、名n); scanf(%s,equi.name); printf(输入作者名n); scanf(%s,equi.writter); printf(输入图书价格n); scanf(%f,&equi.price); printf(输入出版单位n); scanf(%s,equi.indate); printf(输入出版时间n); scanf(%s,equi.out); printf(输入分类号n); scanf(%s,equi.outdate); if (fp=fopen(data.txt,wb)=NULL)/以只写方式打开data.txt文件 printf(cannot open file); r

10、eturn; for(i=0;in;i+) if(fwrite(&equi,sizeof(struct book),1,fp)!=1)/如果不能写入就报错 printf(file write error); fclose(fp); printf_back();/返回菜单选项4.2.2 对储存的信息进行修改 让用户输入要修改的信息选项,如作者名,输入新的数据将原值替代掉,即完成了修改。【程序】void modify() /modify 修改数据用的 struct book e; int i,n,w0=1,w1,w2=0,k; void printf_one(int i); int modify_

11、data(int i,int j); /声明一个修改的子函数,到时候会调用。 void menu(); void save(int n); int load(); n=load(); dok=-1;for(i=0;in;i+)if(i!=0)&(i%10=0) printf(记住你要改的序号,任意键继续.n); getchar(); puts(nn); printf_one(i);doprintf(n输入你要修改的序号:);scanf(%s,e.num);for(i=0;inn 1).序号 2).书名 3).作者名 4).价格 nn5).出版单位 6).出版时间 7).分类号n);printf

12、(输入编号:); scanf(%d,&c);if(c7|c7|c1); doswitch(c) case 1: printf(新的序号:);scanf(%s,equi.num);break; case 2: printf(新的书名:);scanf(%s,equi.name);break; case 3: printf(新的作者名:);scanf(%s,equi.writter);break; case 4: printf(新的价格:);scanf(%f,&equi.price);break; case 5: printf(新的出版单位:);scanf(%s,equi.indate);break

13、; case 6: printf(新的出版时间:);scanf(%s,equi.out);break; case 7: printf(新的分类号:);scanf(%s,equi.outdate);break;printf_one(i);printf(确定?nnt1).确定 2).不,重新修改 3).退出(不保存) bb);scanf(%d,&w1);while(w1=2);return(w1);4.2.3 图书信息的添加在原有信息的基础上添加新的信息,打开文件后,把指针移到数据的末尾处然后写入新的数据。 【程序】 void add() /-添加书本函数 void printf_back();

14、int load(); void input(int i); /声明输入函数int i,n,m,k;FILE *fp;n=load();printf(你想添加多少本书呢?(0-%d)?: 本bb,N-1-n);scanf(%d,&m);k=m+n;for(i=0;im;i+)printf(n输入第%d本书的数据nn,i+1); input(i);if(fp=fopen(data.txt,ab)=NULL) /以追加方式打开文件printf(找不到文件n); fseek(fp,0,2); for(i=0;im;i+) fwrite(&equi,sizeof(struct book),1,fp);

15、 fclose(fp); printf_back();4.2.4 图书信息数据的浏览主要通过调用printf_one()函数完成,然后输出到屏幕。【程序】void browse()/- 浏览函数 void printf_back(); void printf_one(int i); void menu(); int load();int i,n;n=load();for(i=0;in;i+)if(i%10=0)puts(nn);printf_one(i);printf(nt *有%d个记录*nn,n);printf(任意键继续n);getchar();getchar();menu(); 4.2

16、.5 图书信息的查询 主要根据输入要查询的信息来和文件中的数据对照,如果相等,则输出,显示查找到的数据。否则显示查找不到。【程序】void search() /-搜索总函数 int n,w1;void num_search(); /声明 序号查找函数void writter_search(); /声明 作者名查找函数void name_search(); /声明 书名查找函数void price_search(); /声明 价格查找函数void indate_search(); /声明 出版时间查找函数void out_search(); /声明 出版单位查找函数void outdate_se

17、arch(); /声明 分类号查找函数doprintf(*搜索图书信息选择项*n);printf(ttt 1.序号n);printf(ttt 2.书名n);printf(ttt 3.作者名n);printf(ttt 4.价格n); printf(ttt 5.出版单位n);printf(ttt 6.出版时间n);printf(ttt 7.分类号n);printf(ttt 8.退出n);printf(*n);printf(请输入号码 bb);scanf(%d,&n);if(n8)w1=1;getchar();else w1=0;while(w1=1);switch(n) case 1:num_se

18、arch();break; case 2:name_search();break; case 3:writter_search();break; case 4:price_search();break; case 5:indate_search();break; case 6:out_search();break; case 7:outdate_search();break; case 8:menu();4.2.6 显示本程序作者。void author()/程序作者信息 printf( n本程序作者:杨成 班级:193092-12 学号:20091001488 谢谢支持nnn *按任意键返回

19、*); getchar(); getchar(); menu(); 4.3 公共函数4.31 printf_one()用来显示文件中的数据。【程序】void printf_one(int i)/-下面这句是用作浏览时输出的 printf(*第%d本书信息*n,i+1); printf(序号:%s,equi.num); printf( 书名:%s,equi.name); printf( 作者名:%s,equi.writter); printf( 价格:%fnn,equi.price); printf(出版单位:%s,equi.indate); printf( 出版时间:%s,equi.out);

20、 printf( 分类号:%snn,equi.outdate); printf(*nn); 4.32 save()函数用来保存数据。【程序】void save(int n) /文件保存函数,用来保存数据进一个2进制文本文件 int i; FILE *fp; if (fp=fopen(data.txt,wb)=NULL)printf(cannot open file);return ; for(i=0;in;i+) if(fwrite(&equi,sizeof(struct book),1,fp)!=1) printf(file write error); fclose(fp);4.33 pri

21、ntf_back()函数用来操作成功吼返回菜单时显示。【程序】void printf_back() void menu(); void browse(); int w; printf(nnnn); printf(接下来您想作甚?nn1).浏览操作后全部数据tt2).返回主菜单: bb); scanf(%d,&w); switch(w) case 1:browse();break; case 2:menu();break; default:printf(n选择错误噢请再次选择 !nn); printf_back(); 5 运行结果(附带抓图)程序运行主界面如下;选择录入后运行结果;选择3图书信息

22、-添加运行后:添加成功后:选择浏览后的运行结果:选择查询后运行结果:主界面成功搜索后界面:最后,选择6关于程序作者:6 总结 通过这次图书管理系统C程序设计,不但使我我掌握了模块化设计方法,还加深了对结构体和文件这两种数据结构的使用,同时掌握了文件的输入输出,数据的搜索等功能的设计与实现。除此之外,我能够深入的理解结构化程序设计思想,熟练地了运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。附录 A 源码#include #include #include #define N 100struct book char num10;/序号 char name20;/书名 char wri

23、tter20;/作者名 float price;/价格 char indate15;/出版单位 char out15;/出版时间 char outdate15;/分类号 equN;/*以下是搜索函数* void num_search()/搜索-序号 void printf_back_search(); int i,n,c=0; int load(); char a15; void printf_one(int i); void printf_back(); void search(); n=load();printf(请输入序号n);scanf(%s,a);for(i=0;in;i+) if(

24、strcmp(equi.num,a)=0) c=1; printf_one(i); printf_back_search(); switch(c)case 0:printf(对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getchar();search();void writter_search()/作者名-搜索 int i,n,c=0; char a20; void printf_back_search(); void printf_one(int i); void printf_back(); void search(); int load

25、();n=load();printf(请输入作者名n);scanf(%s,a);for(i=0;in;i+) if(strcmp(equi.writter,a)=0) c=1; printf_one(i); printf_back_search(); switch(c)case 0:printf(对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getchar(); search();void name_search()/搜索-书名 int load(); void printf_back_search();void printf_one( int

26、 i);void printf_back();void search();int i,n,c=0;char a20;n=load();printf(请输入书名n);scanf(%s,a);for(i=0;in;i+)if(strcmp(equi.name,a)=0) c=1;printf_one(i);printf_back_search();switch(c)case 0:printf(对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getchar(); search();void out_search()/出版单位-搜索 int load()

27、;void printf_back_search();void printf_one(int i);int i,c=0,n;char a15;void search();void printf_back();n=load();printf(请输入出版单位n);scanf(%s,a);for(i=0;in;i+)if(strcmp(equi.indate,a)=0) c=1;printf_one(i);printf_back_search();switch(c)case 0:printf(对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getcha

28、r(); search();void indate_search()/出版时间-搜索 int i,n,c=0;char a20;void printf_back_search();void printf_one(int i);void printf_back();void search();int load();n=load();printf(请输入出版时间n);scanf(%s,a);for(i=0;in;i+) if(strcmp(equi.out,a)=0) c=1; printf_one(i); printf_back_search(); switch(c)case 0:printf(

29、对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getchar(); search();void outdate_search()/分类号-搜索 int i,n,c=0;char a15;void printf_back_search();void printf_one(int i);void printf_back();void search();int load();n=load();printf(请输入分类号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(equi.outdate,a)=0) c=1;print

30、f_one(i);printf_back_search(); switch(c)case 0:printf(对不起,该序号不存在,将返回重新搜索nn);break; default:printf(n); getchar(); search();void price_search()/价格 -搜索 int i,n,c=0;float a;void printf_back_search();void printf_one(int i);void printf_back();void search();int load();n=load();printf(请输入设备价格n);scanf(%f,&a)

31、;for(i=0;inn 1).序号 2).书名 3).作者名 4).价格 nn5).出版单位 6).出版时间 7).分类号n);printf(输入编号:); scanf(%d,&c);if(c7|c7|c1);/-注意 C的取值 doswitch(c) case 1: printf(新的序号:);scanf(%s,equi.num);break; case 2: printf(新的书名:);scanf(%s,equi.name);break; case 3: printf(新的作者名:);scanf(%s,equi.writter);break; case 4: printf(新的价格:);

32、scanf(%f,&equi.price);break; case 5: printf(新的出版单位:);scanf(%s,equi.indate);break; case 6: printf(新的出版时间:);scanf(%s,equi.out);break; case 7: printf(新的分类号:);scanf(%s,equi.outdate);break;printf_one(i);printf(确定?nnt1).确定 2).不,重新修改 3).退出(不保存) bb);scanf(%d,&w1);while(w1=2);return(w1);int load()/*读取文件后返回n

33、FILE *fp; int i; if(fp=fopen(data.txt,rb)=NULL)printf(找不到文件n);for(i=0;!feof(fp);i+)fread(&equi,sizeof(struct book),1,fp);fclose(fp);return (i-1);int main()/ -主函数在这 void menu(); menu(); return 0; system(pause);void menu()/ 菜单函数 void losd(); void enter(); void modify(); void add(); void browse(); void

34、 search(); void order(); int n,w1; do puts(*图书管理系统-菜单*n); puts(tttt1.图书信息-录入n); puts(tttt2.图书信息-修改n); puts(tttt3.图书信息-添加n); puts(tttt4.图书信息-浏览n); puts(tttt5.图书信息-查询n); puts(tttt6.关于程序作者n); puts(tttt7.退出n); puts(*n); printf(选择数字(1-7): bb); scanf(%d,&n); if(n7) w1=1;getchar(); else w1=0; while(w1=1);

35、switch(n) case 1:enter();break;/对应 信息录入 case 2:modify();break;/ 信息修改 case 3:add();break;/添加 case 4:browse();break;/浏览 case 5:search();break;/查询 case 6:order();break;/ 作者信息 case 7:exit(0); /* void search() /-搜索总函数 int n,w1;void num_search();void writter_search();void name_search();void indate_search(

36、);void out_search();void outdate_search();void out_search();void search();doprintf(*搜索图书信息选择项*n);printf(ttt 1.序号n);printf(ttt 2.书名n);printf(ttt 3.作者名n);printf(ttt 4.价格n); printf(ttt 5.出版单位n);printf(ttt 6.出版时间n);printf(ttt 7.分类号n);printf(ttt 8.退出n);printf(*n);printf(请输入号码 bb);scanf(%d,&n);if(n8)w1=1;

37、getchar();else w1=0;while(w1=1);switch(n) case 1:num_search();break; case 2:name_search();break; case 3:writter_search();break; case 4:price_search();break; case 5:indate_search();break; case 6:out_search();break; case 7:outdate_search();break; case 8:menu(); /* void modify() /modify 修改数据用的 struct b

38、ook e; int i,n,w0=1,w1,w2=0,k; void printf_one(int i); int modify_data(int i,int j); void menu(); void save(int n); int load(); n=load(); dok=-1;for(i=0;in;i+) if(i!=0)&(i%10=0) printf(记住你要改的序号,任意键继续.n); getchar(); puts(nn); printf_one(i);doprintf(n输入你要修改的序号:);scanf(%s,e.num);for(i=0;in;i+)if(strcmp

39、(e.num,equi.num)=0)k=i;e=equi;if(k=-1) printf(nn不存在,请重新输入);while(k=-1);printf_one(k);w1=modify_data(k,n);if(w1=1)printf(n恭喜还想再次修改吗?nn1).是t2).返回并保存t bb);scanf(%d,&w0);w2=1;elsew0=0;if(w2=1)equk=e;if(w0!=1&w2=1)save(n);while(w0=1);menu(); void browse()/- 浏览函数 void printf_back(); void printf_one(int i)

40、; void menu(); int load();int i,n;n=load();for(i=0;in;i+)if(i%10=0)puts(nn);printf_one(i);printf(nt *有%d个记录*nn,n);printf(任意键继续n);getchar();getchar();menu(); void order()/程序作者信息 printf( n本程序作者:杨成 班级:193092-12 学号:20091001488 谢谢支持nnn *按任意键返回*); getchar(); menu(); void input(int i) / 用作添加信息时。 printf(输入序

41、号n); scanf(%s,equi.num); printf(输入书名n); scanf(%s,equi.name); printf(输入作者名n); scanf(%s,equi.writter); printf(输入图书价格n); scanf(%f,&equi.price); printf(输入出版单位n); scanf(%s,equi.indate); printf(输入出版时间n); scanf(%s,equi.out); printf(输入分类号n); scanf(%s,equi.outdate); void add() /-添加书本函数 void printf_back(); in

42、t load(); void save(int n); void input(int i);int i,n,m,k;FILE *fp;n=load();printf(你想添加多少本书呢?(0-%d)?: 本bb,N-1-n);scanf(%d,&m);k=m+n;for(i=0;im;i+)printf(n输入第%d本书的数据nn,i+1);input(i);if(fp=fopen(data.txt,ab)=NULL)printf(找不到文件n); fseek(fp,0,2); for(i=0;im;i+) fwrite(&equi,sizeof(struct book),1,fp); fclose(fp); printf_back(); void printf_back_search() int w; printf(恭喜!操作成功!nn); printf(接下来你想干什么?nn 1.浏览全部数据tt 2.返回继续搜索tt 3.返回主菜单nn 请选择 ); scanf(%d,&w); switch(w) case 1:browse();break; case 2:search();break; case 3:menu();break; defaul

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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