C语言课程设计报告图书管理系统
- 格式:doc
- 大小:629.00 KB
- 文档页数:43
..C语言课程设计报告院系:学号:班号:姓名:标题:图书管理系统目录第一部分题目要求 (3)第二部分需求分析 (3)第三部分总体设计 (4)第四部分详细设计 (4)1)主函数 (4)2)各功能模块设计 (6)3)公共函数 (16)第五部分上机操作 (17)第六部分总结 (20)附录(源代码) (22)第一部分题目要求图书管理系统包括:图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号等,是设计一图书管理系统,使之能够提供以下功能:1. 新图书基本信息的输入。
2. 图书基本信息的查询。
3. 对撤销图示基本信息的删除。
4. 办理借书手续。
5. 办理换书手续。
第二部分需求分析根据题目的要求,需要建立一个文件来保存图书信息,每本书的信息用一个结构体来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号,结构体中的存在状态可设为整型,用不同数字代表借还状态;在借书和还书手续中,要注意结构体的成员变量存在状态的值,使用指针会比较方便。
程序中需要对图书信息实现输入、查询、删除、借书和还书的功能,首先要使用菜单进行各项功能的选择;其次需要有文件的输入、输出功能,提供显示、查找等操作。
在程序的运行过程中,注意各功能在使用完毕后返回菜单的设置,以方便运行。
第三部分总体设计根据上面的需求分析,可以将整个图书管理系统分为输入模块、查找模块、删除模块、借书模块和还书模块(如图3-1所示)。
图3-1 系统功能模块图第四部分详细设计在这个程序里,每本书的信息用一个结构体book来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号,结构体中的存在状态设为整型,用不同数字代表库中高本书的数量。
struct book{ char title[30];int number;char author[30];float price;int store;char borrower_name[20];char borrower_gender[5];int borrower_number;}s[N];其中的N定义为该系统所管理书籍的最大值。
#define N 100 //书籍的最多本数4.2 主函数【说明】主函数中,对“菜单”进行了输出,将各个模块的函数列出来,实现对各种功能的选择。
其流程图如图4.1-1所示。
图4.1-1 主函数流程图【程序】void main(){ int x;do{printf("**************************************菜单**************************************\n"" *********** 1.输入图书信息 ********** \n"" *********** 2.查找图书信息 ********** \n"" *********** 3.删除图书信息 **********\n"" *********** 4.借阅图书 ********** \n"" *********** 5.归还图书 ********** \n"" *********** 0.退出 ********** \n");printf("************************************************************* *******************\n");printf("请在0-5中选择,以回车键结束\n");scanf("%d",&x);switch(x){ case 1: input(&s[0]);break;//输入新图书信息模块case 2: search(&s[0]);break;//查找模块case 3: del(&s[0]);break;//删除模块case 4: borrow(&s[0]);break;//借书模块case 5: retur(&s[0]);break;//还书模块case 0: break;//退出}}while(x!=0);}4.2 各功能模块设计(1)输入模块【分析】在输入模块中,主要以输入输出语句为主,使用了do…while…和for…这两种循环方式,do…while…是作为一级循环,for…为二级循环。
在输入图书的基本信息过程中,使用指针进行字符串及值的传递。
全局变量m是用于记录图书的储存位置,便于在后来的查询、删除等功能中的使用。
调用save(struct book*p)来保存输入的数据。
定义的整型变量y,用来储存是否继续的指令。
该模块的流程图如下图4.2-1所示。
图4.2-1 输入模块流程图【程序】void input(struct book *p){ int y;for(;p<(&s[0]+N);p++){ printf("请输入书名:");scanf("%s",p->title);printf("请输入编号:"); scanf("%d",&p->number);printf("请输入作者:"); scanf("%s",p->author);printf("请输入图书价格:"); scanf("%f",&p->price);printf("请输入图书数量:"); scanf("%d",&p->store);m++;printf("第%d个信息已经输入完毕,是否继续?\n按任意键继续,按0键结束.",m);scanf("%d",&y);//读取是否继续if(y==0){ save(&s[0]);read(&s[0]);//调用读取文件函数break;}}}(2)查找模块【分析】此模块的提供两种查找方式,输入书名或作者,均可实现查找功能。
在函数的结尾,选择是否继续查找。
图4.2-2 查找模块流程图【程序】void search(struct book *p)//查询模块{ int n;char name1[20];char name2[20];char c[3];do{ p=&s[0];printf("\t请选择查找方式:\n");//打印查询方式菜单printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");printf("请在0-2中选择:\n\n");scanf("%d",&n);//读取查找方式if(n==0) break;switch(n){ case 1: printf("请输入书名:\n");scanf("%s",name1);break; case 2: printf("请输入作者:\n");scanf("%s",name2); break; }for(;p<&s[m];p++){ read(&s[0]);//调用读取函数if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0) { printf("\n查找图书信息成功!\n");printf("书名编号作者价格数量\n");printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//打印信息break;}}printf("是否继续查找?\n“是”请键入“yes”, “否”请按任意键,返回菜单\n");scanf("%s",c);}while(strcmp(c,"yes")==0);//判断是否结束}(3)删除模块【分析】该模块实现对撤销图书的删除。
用户首先查找要删除的图书,图书列表出来后,确认是否删除。
当删除成功后,询问是继续删除还返回退出并返回菜单。
其流程图如下图4.2-3所示。
图4.2-3 删除模块流程图【程序】void del(struct book *p)//删除模块{ int i;struct book *p1,*p2;char name1[20];char name2[20];char c[3];int n;do{ p=&s[0];printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单 printf( " 1.按书名删除\n 2.按作者删除\n 0.返回\n");printf("请在0-2中选择:\n\n");scanf("%d",&n);//读取查找方//if(n==0) break;switch(n){case 1:printf("请输入书名:\n");scanf("%s",name1); break;case 2: printf("请输入作者:\n");scanf("%s",name2); break;}read(&s[0]); //调用读取函数for(i=0;i<m;i++,p++){if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0) { p1=p;for(p2=p1+1;p2<=&s[m];p1++,p2++){strcpy(p1->title,p2->title);strcpy(p1->author,p2->author);p1->number=p2->number;p1->store=p2->store;p1->price=p2->price;m--;printf("删除成功!!\n");}}else {printf("没有该书记录!!");break;}}printf("是否继续删除?“是”请键入“yes”, “否”请按任意键,返回菜单\n");scanf("%s",c); //读取是否继续save(&s[0]); //调用保存函数}while(strcmp(c,"yes")==0); //判断是否继续删除}(4)借书模块【分析】该模块实现系统的借书功能。