C语言图书信息管理系统.doc
《C语言图书信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言图书信息管理系统.doc(16页珍藏版)》请在咨信网上搜索。
图书信息管理系统设计 一、【要求】 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。设计一图书信息管理系统,使之能提供以下功能: (1) 系统以菜单方式工作 (2) 图书信息录入功能 (3) 图书信息浏览功能 (4) 图书信息查询功能 (5) 图书信息的删除与修改功能 二、【各功能模块】 1、菜单模块 开始 图书信息 录入 图书信息 浏览 图书信息 查询 图书信息 删除 图书信息 修改 图书信息 追加 N 输入a,判断是否是0~6? 开始 Y 根据a的值调用各功能模块函数 结束 主函数流程图 《1》、主函数: 建立menu( )函数将主函数功能提取出来,主函数main调用menu( )函数方便简捷。 void main() { menu(); } void menu() { int a; do { printf(" ******赵 毅******\n"); printf("\n"); printf("******中国地质大学******\n"); printf("\n"); printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t********************************************\n"); printf("\t\t\t1 ----------------图书信息录入\n"); printf("\t\t\t2 ----------------图书信息浏览\n"); printf("\t\t\t3 ----------------图书信息查询\n"); printf("\t\t\t4 ----------------图书信息删除\n"); printf("\t\t\t5 ----------------图书信息修改\n"); printf("\t\t\t6 ----------------图书信息追加\n"); printf("\t\t\t0 ----------------退出图书信息系统\n"); printf("\t\t********************************************\n"); printf("\t\tplease choose: "); scanf("%d",&a); switch(a) { case 1:input();break; case 2:list();break; case 3:search();break; case 4:del();break; case 5:revise();break; case 6:append();break; case 0:exit(0); default:printf("\n序号不对\n"); } } while(a!=0); } 【定义图书信息结构体】 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> void menu(); #define N 3 typedef struct system { long num; char name[20]; char writer[10]; char sort[10]; char publisher[20]; long time; float price; } BOOK; 注:定义的BOOK结构体 N为限定的录入图书个数(可依据不同要求变化范围) long num为定义的登录号(长整形变量) char name[20]为定义的书名的数组 char writer[10]为定义的作者的数组 char sort[10]定义的分类号数组 char publisher[20]定义的出版单位数组 long time定义的出版时间长整形变量 float price价格为浮点型变量。 《2》、【数据存储】 整个程序没有利用保存save函数,而是利用txt.txt \ tab.txt 两个文件录入存取数据信息,并通过文件的读取、写入进行图书信息的修改/删除等功能。(fopen fwrite fread写入及读取数据进行存储)。 《3》【图书信息录入】 图书信息 录入 输入 书籍登录号 输入 书名 输入 作者名 输入 分类号 输入 出版单位 输入 出版时间 输入 书的价格 开始 输入用户要输入的录入的书的个数N i从1到N调用输入函数input(i) 把信息存入txt.txt文件 关闭录入信息的文件 结束 图书录入流程图 【程序】 void input() /*定义录入函数*/ { int i; BOOK a; FILE *fp; if((fp=fopen("txt.txt","w"))==NULL) { printf("error!\n");exit(0); } for(i=1;i<=N;i++) { printf("\t请输入您所需书籍的登陆号:"); scanf("%ld",&a.num); printf("\t请输入书名:"); scanf("%s",a.name); printf("\t请输入作者名:"); scanf("%s",a.writer); printf("\t请输入分类号:"); scanf("%s",a.sort); printf("\t请输入出版单位:"); scanf("%s",a.publisher); printf("\t请输入出版时间:"); scanf("%ld",&a.time); printf("\t请输入该书的价格:"); scanf("%f",&a.price); fwrite(&a,sizeof(BOOK),1,fp); } fclose(fp); } 《4》【图书信息浏览】 图书信息 浏览 显示 书籍登录号 显示 书名 显示 作者名 显示 分类号 显示 出版单位 显示 出版时间 显示 书的价格 该模块的功能是显示所有录入的图书信息,流程图如下: 显示图书相关信息 打开存入信息的txt.txt文件 按任意键返回主菜单 图书浏览流程 【程序】 void list() /*定义浏览函数*/ { BOOK a; FILE *fp; if((fp=fopen("txt.txt","r"))==NULL) { printf("error!\n");exit(0); } printf("\n\n\n\n\n\n\n\n\n登陆号\t书名\t作者名\t分类号\t出版单位\t 出版时间\t价格\n\n"); while(fread(&a,sizeof(BOOK),1,fp)!=0) printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",a.num,a.name,a.writer, a.sort,a.publisher,a.time,a.price); fclose(fp); printf("\n\t press any key to continue..."); getch(); } 《5》【图书信息查询】 [需求分析] 用户需要查找的图书,调用函数: 1、按书名查找 search_by_name 2、按作者名查找 search_by_write,两种方式进行查询。 输入查询方式,进入功能选项, 1、 首先打开源文件txt.txt ,则按照输入书名进行for 循环查找,若查到则显示图书信息。若无,则显示“file open error!!”。按任意键结束。 2、 与1、流程相同,按照作者名查询。 图书信息查询 按书名查询(1) 按作者名查询(2) EXIT(0) 开始 输入a,判断a是否为1~2? a=1 ,则调用search_by_name按书名查询 a=2,则调用search_by_writer按作者名查询 输入书名,若有此书则输出此书信息,若没有,则输出file open error!! 输入作者名,若有此书则输出此书信息,若没有,则输出file open error!! 退出回到主菜单 a=0 查询功能流程图 【程序】 void search() /*定义查询函数*/ { int a; printf("\t\t******************************\n"); printf("开始查询\n"); printf("\t\t\t1---------------按书名查询\n"); printf("\t\t\t2---------------按作者名查询\n"); printf("\t\t\t0---------------exit\n"); printf("\t\t******************************\n") ; printf("\t\t请选择你想要的查询方式:"); scanf("%d",&a); switch(a) { case 1:search_by_name();break; case 2:search_by_writer();break; case 0:return;} } void search_by_name() /*定义按书名查询*/ { FILE *fp; int i; BOOK b[N]; char s2[20]; fp=fopen("txt.txt","r"); if(fp==NULL) { printf("file open error!!\n");exit(0); } for(i=0;i<N&&fp!=NULL;i++)//shanchu fread(&b[i],sizeof(BOOK),1,fp); printf("请输入要查询的书名: "); scanf("%s",s2); for(i=0;i<N;i++) { if(strcmp(s2,b[i].name)==0) { printf("书号 书名 作者 种类 出版商 出版日期 价格 \n"); printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",b[i].num,b[i].name, b[i].writer,b[i].sort,b[i].publisher,b[i].time,b[i].price); } fclose(fp); } } void search_by_writer() /*定义按作者名查询*/ { int i; FILE *fp; BOOK b[N]; char s3[20]; fp=fopen("txt.txt","r"); if(fp==NULL) { printf("file open error!!\n");exit(0); } for(i=0;i<N;i++) fread(&b[i],sizeof(BOOK),1,fp); printf("请输入要查询的书的作者: "); scanf("%20s",s3); for(i=0;i<N;i++) if(strcmp(s3,b[i].writer)==0) { printf("书号 书名 作者 种类 出版商 出版日期 价格 \n"); printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",&b[i].num,b[i].name, b[i].writer,&b[i].sort,b[i].publisher,&b[i].time,&b[i].price); } fclose(fp); } 《6》【图书信息删除】 [需求分析] 该模块功能是,先输入需要删除的图登陆号,打开存储文件for循环查找该图书信息,然后利用b[k]=b[k+1]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹。 删除功能 输入登录号删除 用b[k]=b[k+1]进行替换完成删除功能 结束 图书信息删除流程 【程序】 void del() /*定义删除函数*/ { FILE *fp; long booknum; /*按登陆号查询*/ int i=0,k; BOOK b[N]; if((fp=fopen("txt.txt","r"))==NULL) { printf("error!\n");getch();exit(0); } for(i=0;i<N;i++) { fread(&b[i],sizeof(BOOK),1,fp); } fclose(fp); printf("\n Please type in the number of the book you want to delete:"); scanf("%ld",&booknum); for(i=0;i<N;i++) if(booknum==b[i].num) {break;} if(i<N) for(k=i;k<(N-1);k++) { b[k]=b[k+1]; } else printf("\n cannot found!\n"); fp=fopen("txt.txt","w"); if(fp==NULL) { printf("\n error!\n");return; } for(i=0;i<N-1;i++) { fwrite(&b[i],sizeof(BOOK),1,fp); } fclose(fp); getch(); } 《7》【图书信息修改】 [需求分析] 该模块实现按照用户需求,将需要修改的图书名输入,进行for循环查找是否有此书,若无,则显示未找到,退出,若有,则显示输入新的图书信息,开始输入修改的信息,进行for循环开始录入,替换原文件信息,结束显示“修改成功”。 【程序】 void revise() /*定义修改函数*/ { int i,j,k; char s1[20]; BOOK b[N]; FILE *fp,*fq; if((fq=fopen("tab.txt","w"))==NULL) { printf("error!"); exit(0); } if((fp=fopen("txt.txt","r"))==NULL) { printf("error!"); exit(0); } for(i=0;!feof(fp)&&i<N;i++) { fread(&b[i],sizeof(BOOK),1,fp); } fclose(fp); printf("\t\t欢迎进入修改界面\n"); printf("\n\n\n\t\t请输入所要修改的图书名:\n"); scanf("%s",s1); for(j=0;j<i;j++) if(strcmp(b[j].name,s1)==0) {k=j;break;} if (j>i||j==i) { printf("未找到!");getch(); exit(0); } printf("\t\t请输入新登录号 图书名 作者 分类号 出版单位 出版时间 价格\n"); scanf("%ld%s%s%s%s%ld%f",&b[k].num,b[k].name,b[k].writer,b[k].sort,b[k].publisher,&b[k].time,&b[k].price); for(i=0;i<(j+1);i++) { fwrite(&b[i],sizeof(BOOK),1,fq); } fclose(fq); printf("修改成功!"); if((fq=fopen("txt.txt","w"))==NULL) { printf("error!"); exit(0); } for(i=0;!feof(fq)&&i<N;i++) { fwrite(&b[i],sizeof(BOOK),1,fq); } fclose(fq); getch(); } 《8》【图书信息追加】 [需求分析] 该模块功能是用户需要增加新的图书信息,打开源存储文件,按照需要追加的个数n,进行for循环,开始录入追加的信息,流程如下: For循环,输入图书信息 输入追加图书个数n 打开txt.txt文件 开始 将追加的图书写入txt.txt文件 【程序】 void append() /*定义追加函数*/ { int i,n; BOOK a; FILE *fp; if((fp=fopen("txt.txt","a"))==NULL) { printf("error!\n");exit(0); } printf("\n\n\t请输入追加图书的个数:"); scanf("%d",&n); for(i=0;i<n;i++) { printf ("\t请输入追加图书的登录号:"); scanf("%ld",&a.num); printf("\t请输入追加图书的图书名:"); scanf("%20s",a.name); printf("\t请输入追加图书的作者名:"); scanf("%10s",a.writer); printf("\t请输入追加图书的分类号:"); scanf("%10s",a.sort); printf("\t请输入追加图书的出版单位:"); scanf("%20s",a.publisher); printf("\t请输入追加图书的出版时间:"); scanf("%d",&a.time); printf("\t请输入追加图书的单价:"); scanf("%f",&a.price); fwrite(&a,sizeof(BOOK),1,fp); } fclose(fp); } 【上机操作】 1、 录入函数 2、 编译连接、运行 3、 结果 下面是各功能模块的界面图: (1) 主菜单 (2) 添加模块 【录入模块】 【浏览模块】 【查询模块】 【删除模块】 【修改模块】 修改后的结果 【追加模块】- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 信息管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文