图书信息管理系统设计纯c语言-课程设计学士学位论文.doc
C语言课程设计报告题 目:图书信息管理系统设计河南理工大学计算机学院目 录第一章 题目与要求1.1 问题提出.11.2 本系统涉及的知识点.11.3 功能要求.1第二章 功能设计2.1 算法设计.12.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、进入主菜单登录后进入主菜单输入编号(16)通过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 部分模块流程图开始输入登录号输入数字putinswitchlookupsearchupdate退出rank进入系统If(? =0)YNdel1234560printfscanfprintfscanfif1save0by作者by书名12进入系统printfforYN进入系统saveprintfprintfscanf进入系统save 进入系统for处理进入系统终止NY3 程序代码设计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(books0),1,fp);fclose(fp);2)功能:打开信息文件2、登录模块,菜单模块:利用if判断语句,比较函数strcmp,当输入号码与已存号码复符合是执行下一步操作,进入图书管理系统,然后输入相应数字,利用switch函数判断执行相应的函数进行操作1)函数原型:void main() int key=0;for(key=0;key<100;key+)bookskey.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(books0),1,fp);fclose(fp);while(1)if(key=0)system("cls");printf("nttt请输入管理员登录号(初始登录号123456):nntttpassword:");elsesystem("cls");printf("nttt密码错误请重新输入:(初始登录号123456):nntttpassword:");scanf("%s",password); if(strcmp(password,"123456")=0)int a;dosystem("cls");printf("nnnntttt图书信息管理系统ttttn");printf("tt _n");printf("ttt1 图书信息录入n");printf("tt _n");printf("ttt2 图书信息浏览n");printf("tt _n");printf("ttt3 图书信息查询n");printf("tt _ n");printf("ttt4 图书信息删除n");printf("tt _n");printf("ttt5 图书信息修改n");printf("tt _n");printf("ttt6 图书信息排序n");printf("tt _n");printf("ttt0 退出图书信息系统n");printf("tt _n");printf("tt 请进行操作: ");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("nn退出nn");break;default:printf("n序号不对n");while(a!=0);save();elsekey=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("ttt分类号: "); scanf("%d",&booksn.id); printf("ttt书 名: "); scanf("%s",&booksn.name); printf("ttt作 者: "); scanf("%s",&booksn.author); printf("ttt出版单位:");scanf("%s",&booksn.publish);printf("ttt出版时间:");scanf("%s",&booksn.time);printf("ttt价 格: ");scanf("%f",&booksn.price);n+;save();printf("nttt 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(books0.id=0)printf("ttt无书籍信息!");elsefor(i=0;booksi.id!=0;i+)printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.price); fflush(stdin);getchar(); 2)实现功能:使所有图书信息全部显示在屏幕上,便于管理人员管理。3)运行结果11(3)图书信息查询:利用switch函数进行选择查询方式,按书名查询和按作者查询,然后设计两种方式的函数代码,嵌套在查询主函数内1)函数原型 :void search_by_name(void) /*按书名查询*/ char s220; int flag=1;system("cls"); printf("nttt请输入要查询的书名: ");fflush(stdin);scanf("%s",&s2);for(i=0;booksi.id!=0;i+ )if(strcmp(s2,booksi.name)=0) flag=0;printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.price); if (flag)printf("查无此书!");fflush(stdin);getchar();void search_by_author(void) /*按作者名查询*/ char s320;int flag=1;system("cls"); printf("ttt请输入要查询的书的作者: ");fflush(stdin);scanf("%s",&s3);for(i=0;i<n;i+ )if(strcmp(s3,booksi.author)=0) flag=0;printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.price); if (flag)printf("无此信息!");fflush(stdin);getchar();void book_search(void) /*查询函数*/ int a;system("cls"); /*进行清屏*/ printf("tt*n");printf("ttt开始查询n"); printf("ttt1-按书名查询n"); printf("ttt2-按作者查询n"); printf("ttt0-退出n"); printf("tt*n") ; printf("ttt请选择你想要的查询方式:");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("ttt输入删除书的分类号");scanf("%d",&m);for(i=0;i<m;i+)if(m=booksi.id)for(j=i;booksj+1.id!=0;j+)strcpy(booksj.name,booksj+1.name);booksj.id=booksj+1.id;strcpy(booksj.publish,booksj+1.publish);strcpy(booksj.author,booksj+1.author);strcpy(booksj.time,booksj+1.time);booksj.price=booksj+1.price;booksj.id=0;printf("ttt该书已删除.n"); n-;void rank(void) /* 按书名进行排序*/system("cls"); /*清屏*/for(i=0;i<n;i+)k=i;for(j=i+1;booksj.id!=0;j+)if(strcmp(booksk.name,booksj.name)>0) k=j;if(k!=i) strcpy(temp,booksi.name);strcpy(booksi.name,booksk.name);strcpy(booksk.name,temp);fflush(stdin);printf("ttt新序列为:n");for(i=0;booksi.id!=0;i+)printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.price); save();getchar();2)实现功能:可以删除没用的图书的所有信息。(5)修改模块:先输入所要修改的书的分类号,然后利用if函数找到次书信息,在利用for循环对图书的各个信息进行修改1)函数原型void book_update(void)/*修改图书信息*/ system("cls"); /*清屏*/printf("n ttt请输入你想修改图书的分类号:");scanf("%d",&id);int flag=0;for(i=0;booksi.id!=0;i+)if(id=booksi.id)printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.price); printf("nttt请输入修改后此图书的信息n");printf("ttt请输入分类号:");scanf("%d",&id);printf("ttt请输入图书名:");scanf("%s",&name);printf("ttt请输入作者名:");scanf("%s",&author);printf("ttt请输入出版单位:");scanf("%s",&publish);printf("ttt请输入出版时间:");scanf("%s",&time);printf("ttt请输入该书的价格:");fflush(stdin);scanf("%f",&price);strcpy(booksi.name,name);booksi.id=id;strcpy(booksi.publish,publish);strcpy(booksi.author,author);strcpy(booksi.time,time);booksi.price=price;save();flag=1;if(flag=0)printf("ttt不存在分类号为%d的书籍!",id);2)实现功能:利用此函数可以修改图书的分类号、书名、作者、出版单位、出版时间、价格的信息(6)、排序模块:根据图书名进行排序,利用for循环实现操作,在排序完成后利用save函数保存信息。1)函数原型:void rank(void) /* 按书名进行排序*/system("cls"); /*清屏*/for(i=0;i<n;i+)k=i;for(j=i+1;booksj.id!=0;j+)if(strcmp(booksk.name,booksj.name)>0) k=j;if(k!=i) strcpy(temp,booksi.name);strcpy(booksi.name,booksk.name);strcpy(booksk.name,temp);fflush(stdin);printf("ttt新序列为:n");for(i=0;booksi.id!=0;i+)printf("分类号:%dt",booksi.id);printf("书名:%st",booksi.name); printf("作者:%st",booksi.author); printf("出版单位:%st",booksi.publish); printf("出版时间:%st",booksi.time);printf("价格:%4.2fn",booksi.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(books0),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 name30,author20; char publish50;char time20;/*出版时间*/float price;books100; long int id; char name30,author20; char publish50;char time20;char temp40;float price;int n=0;int i,j,k;char password20 ;void page_title(char *menu_item) printf("nttt- %s -nn",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+)bookskey.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(&booksi,sizeof(struct BOOK),1,fp);fclose(fp);while(1)if(key=0)system("cls");printf("nttt请输入管理员登录号(初始登录号123456):nntttpassword:");elsesystem("cls");printf("nttt密码错误请重新输入:(初始登录号123456):nntttpassword:");scanf("%s",password); if(strcmp(password,"123456")=0)int a;dosystem("cls");printf("nnnntttt图书信息管理系统ttttn");printf("tt _n");printf("ttt1 图书信息录入n");printf("tt _n");printf("ttt2 图书信息浏览n");printf("tt _n");printf("ttt3 图书信息查询n");printf("tt _ n");printf("ttt4 图书信息删除n");printf("tt _n");printf("ttt5 图书信息修改n");printf("tt _n");printf("ttt6 图书信息排序n");printf("tt _n");printf("ttt0 退出图书信息系统n");printf("tt _n");printf("tt 请进行操作: ");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("nnttt退出nn");exit(0);default:printf("n序号不对n");while(a!=0);save();elsekey=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(&booksi,sizeof(struct BOOK),1,fp);fclose(fp);void book_add(void) int x=1;system("cls"); fflush(stdin);page_title("录入");while(x) printf("ttt分类号: "); scanf("%d",&booksn.id); printf("ttt书 名: "); scanf("%s",&booksn.n