
图书信息管理系统设计-纯c语言课程设计.doc
《图书信息管理系统设计-纯c语言课程设计.doc》由会员分享,可在线阅读,更多相关《图书信息管理系统设计-纯c语言课程设计.doc(35页珍藏版)》请在咨信网上搜索。
C语言课程设计报告 题 目:图书信息管理系统设计 河南理工大学计算机学院 目 录 第一章 题目与要求 1.1 问题提出...........................................................................1 1.2 本系统涉及的知识点.......................................................1 1.3 功能要求...........................................................................1 第二章 功能设计 2.1 算法设计.............................................................................1 2.2 部分模块流程图.................................................................4 第三章 程序代码设计.............................................................5 第四章 C程序设计总结.........................................................16 第五章 结束语.........................................................................16 参考文献...................................................................................17 附录.......................................................................................16 计算机学院软件11级C程序设计报告 1、题目与要求 1.1 问题提出 本人计划编写一个图书信息管理系统,主要用来管理图书管图书基本信息。 1.2 本系统涉及的知识点 结构、数组、循环、函数、分支、文件 1.3 功能要求 1、管理员进行登录号验证。 2、进行图书信息录入,每本书的信息包括:书名、作者名、分类号、出版单位、出版时间、价格等。 3、进行图书查询,包括按书名查询和按作者查询。 4、进行图书删除,删除一些丢失,毁坏的图书。 5、进行图书修改,修改书籍的书名、作者名、分类号、出版单位、出版时间、价格。 6、进行图书排序,按书名进行排序。 7、进行图书信息保存。 2 功能设计 请输入登录号 2.1 算法设计 1、利用if函数进行输入登录号进入系统 2、进入主菜单 登录后进入主菜单输入编号(1~6)通过switch函数进行操作请输入登录号 1图书录入 3图书浏览 2图书查询 4图书删除 5图书修改 6图书排序 3、图书录入 选择1后用void putin()函数录入信息 作者名 1图书录入 分类号 书名 出版单位 出版时间 图书价格 1 继续录入 0 退出 4、图书查询 选择2后用void search()查询图书; 图书查询 按书名查询 按作者查询 5、图书浏览 选择3后用void lookup()浏览图书 图书浏览 书名 分类号 作者 出版单位 出版时间 价格 6、图书删除 选择4后用void del()函数删除图书信息 图书删除 删除图书全部信息 图书修改 7、图书修改 选择5后用void update()函数相修改图书信息 书名 分类号 作者 出版单位 出版时间 价格 8、图书排序 选择6后用void rank()函数进行图书排序 图书排序 按图书名进行排序 9、图书信息的保存 在每次操作后都用void save()函数进行保存操作后的图书信息 信息保存 save()函数 2.2 部分模块流程图 开始 输入登录号 输入数字 putin switch lookup search update 退出 rank 进入系统 If(? =0) Y N del 1 2 3 4 5 6 0 printf scanf printf scanf if 1 save 0 by作者 by书名 1 2 进入系统 printf for Y N 进入系统 save printf printf scanf 进入系统 save 进入系统 for 处理 进入系统 终止 N Y 3 程序代码设计 1、文件打开:利用文件函数进行打开 1)函数原型FILE *fp; if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书管理系统\n"); fp=fopen("library.doc","w+"); printf("\n进入图书管理系统\n"); fclose(fp); } fread(books,sizeof(books[0]),1,fp); fclose(fp); 2)功能:打开信息文件 2、登录模块,菜单模块:利用if判断语句,比较函数strcmp,当输入号码与已存号码复符合是执行下一步操作,进入图书管理系统,然后输入相应数字,利用switch函数判断执行相应的函数进行操作 1)函数原型: void main() { int key=0; for(key=0;key<100;key++) books[key].id=0; key=0; system("color A"); FILE *fp; if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书管理系统\n"); fp=fopen("library.doc","w+"); printf("\n进入图书管理系统\n"); fclose(fp); } fread(books,sizeof(books[0]),1,fp); fclose(fp); while(1) { if(key==0) { system("cls"); printf("\n\t\t\t请输入管理员登录号(初始登录号123456):\n\n\t\t\tpassword:"); } else { system("cls"); printf("\n\t\t\t密码错误请重新输入:(初始登录号123456):\n\n\t\t\tpassword:"); } scanf("%s",password); if(strcmp(password,"123456")==0) { int a; do { system("cls"); printf("\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 _________________________________________________\n"); printf("\t\t\t2 图书信息浏览\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t3 图书信息查询\n"); printf("\t\t _________________________________________________ \n"); printf("\t\t\t4 图书信息删除\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t5 图书信息修改\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t6 图书信息排序\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t0 退出图书信息系统\n"); printf("\t\t ________________________________________________\n"); printf("\t\t 请进行操作: "); fflush(stdin); scanf("%d",&a); switch(a) { case 1: book_add(); break; case 2: book_lookup(); break; case 3: book_search(); break; case 4: book_del(); break; case 5: book_update(); break; case 6: rank(); break; case 0: printf("\n\n退出\n\n"); break; default: printf("\n序号不对\n"); } }while(a!=0); save(); } else key=1; } }2)实现功能:登录管理系统,进入主菜单进行菜单选择。 3)运行结果: 3、菜单执行模块 (1)图书录入模块:利用while循环进行图书各项信息的录入,一本书信息全部录入完后,再利用switch函数进行继续录入,和返回主菜单操作,利用save函数保存图书信息 1)函数原型: void book_add(void) { int x=1; system("cls"); fflush(stdin); page_title("录入"); while(x) { printf("\t\t\t分类号: "); scanf("%d",&books[n].id); printf("\t\t\t书 名: "); scanf("%s",&books[n].name); printf("\t\t\t作 者: "); scanf("%s",&books[n].author); printf("\t\t\t出版单位:"); scanf("%s",&books[n].publish); printf("\t\t\t出版时间:"); scanf("%s",&books[n].time); printf("\t\t\t价 格: "); scanf("%f",&books[n].price); n++; save(); printf("\n\t\t\t 1.继续;0,退出录入"); fflush(stdin); scanf("%d",&x); if (x!=1) { x=0; break; } } } 2)实现功能:进行图书信息录入,并保存录入的图书信息。 3)运行结果 (2)图书信息浏览:利用for循环对图书进行全部信息输出,使之显示在屏幕上 1)函数原型: void book_lookup(void) /*浏览函数*/ { system("cls"); if(books[0].id==0) printf("\t\t\t无书籍信息!"); else for(i=0;books[i].id!=0;i++) { printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); } fflush(stdin); getchar(); } 2)实现功能:使所有图书信息全部显示在屏幕上,便于管理人员管理。 3)运行结果 11 (3)图书信息查询:利用switch函数进行选择查询方式,按书名查询和按作者查询,然后设计两种方式的函数代码,嵌套在查询主函数内 1)函数原型 : void search_by_name(void) /*按书名查询*/ { char s2[20]; int flag=1; system("cls"); printf("\n\t\t\t请输入要查询的书名: "); fflush(stdin); scanf("%s",&s2); for(i=0;books[i].id!=0;i++ ) if(strcmp(s2,books[i].name)==0) { flag=0; printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); } if (flag) { printf("查无此书!"); } fflush(stdin); getchar(); } void search_by_author(void) /*按作者名查询*/ { char s3[20]; int flag=1; system("cls"); printf("\t\t\t请输入要查询的书的作者: "); fflush(stdin); scanf("%s",&s3); for(i=0;i<n;i++ ) if(strcmp(s3,books[i].author)==0) { flag=0; printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); } if (flag) { printf("无此信息!"); } fflush(stdin); getchar(); } void book_search(void) /*查询函数*/ { int a; system("cls"); /*进行清屏*/ printf("\t\t******************************\n"); printf("\t\t\t开始查询\n"); printf("\t\t\t1---------------按书名查询\n"); printf("\t\t\t2---------------按作者查询\n"); printf("\t\t\t0---------------退出\n"); printf("\t\t******************************\n") ; printf("\t\t\t请选择你想要的查询方式:"); fflush(stdin); scanf("%d",&a); switch(a) { case 1: search_by_name(); break; case 2: search_by_author(); break; case 0: return; } }2)实现功能:可通过按书名查询和按作者进行查询。 (4)图书信息删除:利用for循环对所要删除的图书下一本图书是之各项序列改为其前一项的序号,主次更改,然后用save循环进行保存 1)函数原型: void book_del(void) { long int m; system("cls"); page_title("删除"); printf("\t\t\t输入删除书的分类号"); scanf("%d",&m); for(i=0;i<m;i++) { if(m==books[i].id) for(j=i;books[j+1].id!=0;j++) { strcpy(books[j].name,books[j+1].name); books[j].id=books[j+1].id; strcpy(books[j].publish,books[j+1].publish); strcpy(books[j].author,books[j+1].author); strcpy(books[j].time,books[j+1].time); books[j].price=books[j+1].price; } books[j].id=0; } printf("\t\t\t该书已删除.\n"); n--; } void rank(void) /* 按书名进行排序*/ { system("cls"); /*清屏*/ for(i=0;i<n;i++) { k=i; for(j=i+1;books[j].id!=0;j++) if(strcmp(books[k].name,books[j].name)>0) k=j; if(k!=i) { strcpy(temp,books[i].name); strcpy(books[i].name,books[k].name); strcpy(books[k].name,temp); } } fflush(stdin); printf("\t\t\t新序列为:\n"); for(i=0;books[i].id!=0;i++) { printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); } save(); getchar(); }2)实现功能:可以删除没用的图书的所有信息。 (5)修改模块:先输入所要修改的书的分类号,然后利用if函数找到次书信息,在利用for循环对图书的各个信息进行修改 1)函数原型 void book_update(void)/*修改图书信息*/ { system("cls"); /*清屏*/ printf("\n \t\t\t请输入你想修改图书的分类号:"); scanf("%d",&id); int flag=0; for(i=0;books[i].id!=0;i++) { if(id==books[i].id) { printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); printf("\n\t\t\t请输入修改后此图书的信息\n"); printf("\t\t\t请输入分类号:"); scanf("%d",&id); printf("\t\t\t请输入图书名:"); scanf("%s",&name); printf("\t\t\t请输入作者名:"); scanf("%s",&author); printf("\t\t\t请输入出版单位:"); scanf("%s",&publish); printf("\t\t\t请输入出版时间:"); scanf("%s",&time); printf("\t\t\t请输入该书的价格:"); fflush(stdin); scanf("%f",&price); strcpy(books[i].name,name); books[i].id=id; strcpy(books[i].publish,publish); strcpy(books[i].author,author); strcpy(books[i].time,time); books[i].price=price; save(); flag=1; } } if(flag==0) printf("\t\t\t不存在分类号为%d的书籍!",id); } 2)实现功能:利用此函数可以修改图书的分类号、书名、作者、出版单位、出版时间、价格的信息 (6)、排序模块:根据图书名进行排序,利用for循环实现操作,在排序完成后利用save函数保存信息。 1)函数原型: void rank(void) /* 按书名进行排序*/ { system("cls"); /*清屏*/ for(i=0;i<n;i++) { k=i; for(j=i+1;books[j].id!=0;j++) if(strcmp(books[k].name,books[j].name)>0) k=j; if(k!=i) { strcpy(temp,books[i].name); strcpy(books[i].name,books[k].name); strcpy(books[k].name,temp); } } fflush(stdin); printf("\t\t\t新序列为:\n"); for(i=0;books[i].id!=0;i++) { printf("分类号:%d\t",books[i].id); printf("书名:%s\t",books[i].name); printf("作者:%s\t",books[i].author); printf("出版单位:%s\t",books[i].publish); printf("出版时间:%s\t",books[i].time); printf("价格:%4.2f\n",books[i].price); } save(); getchar(); } 2)实现功能:此函数对图书按照书名排列起来。 4、保存函数:利用文件函数把操作后的图书信息保存在文件里面。 1)函数原型: void save()//保存图书信息。 { FILE *fp; if((fp=fopen("library.doc","w"))==NULL) { printf("\n不能保存图书信息\n"); return; } fwrite(&n,sizeof(int),1,fp); fwrite(books,sizeof(books[0]),n,fp); } 2)实现功能:用文件函数把操作后的图书信息保存在文件里面。 4、C程序设计总结 程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。在程序设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程序设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要 而且程序是非常复杂的,一个函数名不对,标点不对,都可能导致一大片错误。我在设设计时因为一个头函数的错误害的我费了很大劲才改过来. 这次设计,让我掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验! 5 结束语 通过此次C语言程序设计实践,我实在是获益不浅! 参考文献 [1]贾宗璞/徐合利,C语言程序设计,北京:人民邮电出版社,2010.9 附录:程序清单: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include<string.h> struct BOOK { long int id; char name[30],author[20]; char publish[50]; char time[20];/*出版时间*/ float price; }books[100]; long int id; char name[30],author[20]; char publish[50]; char time[20]; char temp[40]; float price; int n=0; int i,j,k; char password[20] ; void page_title(char *menu_item) { printf("\n\t\t\t- %s -\n\n",menu_item); } void save(); void book_add(); void book_lookup(); void book_search(); void book_del(); void book_update(); void rank(); void main() { FILE *fp; int key=0; int i; for(key=0;key<100;key++) books[key].id=0; key=0; system("color A"); if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书管理系统\n"); fp=fopen("library.doc","w+"); printf("\n进入图书管理系统\n"); fclose(fp); } for(i=0;i<100;i++) fread(&books[i],sizeof(struct BOOK),1,fp); fclose(fp); while(1) { if(key==0) { system("cls"); printf("\n\t\t\t请输入管理员登录号(初始登录号123456):\n\n\t\t\tpassword:"); } else { system("cls"); printf("\n\t\t\t密码错误请重新输入:(初始登录号123456):\n\n\t\t\tpassword:"); } scanf("%s",password); if(strcmp(password,"123456")==0) { int a; do { system("cls"); printf("\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 _________________________________________________\n"); printf("\t\t\t2 图书信息浏览\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t3 图书信息查询\n"); printf("\t\t _________________________________________________ \n"); printf("\t\t\t4 图书信息删除\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t5 图书信息修改\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t6 图书信息排序\n"); printf("\t\t _________________________________________________\n"); printf("\t\t\t0 退出图书信息系统\n"); printf("\t\t ________________________________________________\n"); printf("\t\t 请进行操作: "); fflush(stdin); scanf("%d",&a); switch(a) { case 1: book_add(); break; case 2: book_lookup(); break; case 3: book_search(); break; case 4: book_del(); break; case 5: book_update(); break; case 6: rank(); break; case 0: printf("\n\n\t\t\t退出\n\n"); exit(0); default: printf("\n序号不对\n"); } }while(a!=0); save(); } else key=1; } } void save()//保存图书信息。 { int i=0; FILE *fp; if((fp=fopen("library.doc","w"))==NULL) { printf("\n不能保存图书信息\n"); return; } for(i=0;i<n;i++) fwrite(&books[i],sizeof(struct BOOK),1,fp); fclose(fp); } void book_add(void) { int x=1; system("cls"); fflush(stdin); page_title("录入"); while(x) { printf("\t\t\t分类号: "); scanf("%d",&books[n].id); printf("\t\t\t书 名: "); scanf("%s",&books[n].nam- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统 设计 语言 课程设计

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文