收藏 分销(赏)

图书信息管理系统设计-纯c语言课程设计.doc

上传人:a199****6536 文档编号:2269172 上传时间:2024-05-24 格式:DOC 页数:35 大小:325.50KB 下载积分:12 金币
下载 相关 举报
图书信息管理系统设计-纯c语言课程设计.doc_第1页
第1页 / 共35页
图书信息管理系统设计-纯c语言课程设计.doc_第2页
第2页 / 共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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服