当前位置:文档之家› C语言图书管理系统课程设计报告[1]

C语言图书管理系统课程设计报告[1]

第三章图书管理系统的设计与实现3.1系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。

根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统功能需求分析描述如下:(1)系统主菜单:进入系统和退出系统(2)功能菜单:显示可以进行的操作(3)查询主菜单:根据图书编号、书名、作者进行查询,并可显示所有图书信息(4)借还书主菜单:可以进行借书和还书等操作3.2系统的设计3.2.1 系统的总统设计下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。

(1)总体思想本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、借书、还书等主要功能。

系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。

(2)系统模块结构图根据需求分析结果,图书管理系统可以分为三大模块:查询图书模块、借书功能模块、还书功能模块。

系统模块结构如图:3.2.2 系统的概要设计㈠系统主菜单。

显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。

功能主要包括:退出系统、查询图书、借书、还书。

㈡查询图书信息进入此菜单功能模块,输入您要查询的图书的编号、名字、作者等。

图书查询模块流程如图:否是是重新输入否退出系统3.3 测试结果系统主界面2功能菜单查询系统菜单3借还系统菜单3.4 源代码# include <stdio.h># include <stdlib.h># include <string.h>typedef struct link{char number[100];char bookname[100];char author[100];char publish[100];char time[100];float price;char status[100];struct link *next;4}link;link *Cbook(){int n=0;link *p,*q,*head;FILE *fp;fp=fopen("图书信息.txt","r+");if(fp==NULL)printf("没有找到文件,请检查……");p=(link *)malloc(sizeof(link));if(p==NULL)printf("申请内存出错!!!\n");fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p ->publish,p->time);fscanf(fp,"%f",&p->price);fscanf(fp,"%s",p->status);while(feof(fp)==0){n++;if(n==1){head=p;}else{q=p;p=(link *)malloc(sizeof(link));if(p==NULL)printf("申请内存出错!!!\n");fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p ->publish,p->time);fscanf(fp,"%f",&p->price);fscanf(fp,"%s",p->status);q->next=p;}5}p->next=NULL;fclose(fp);printf("信息已录入!!!");return head;}void mainmenu(){printf("\n*****************************************\n"); printf("\n** 欢迎使用图书管理系统 **\n"); printf("\n** 1.进入系统 0.退出系统 **\n"); printf("\n*****************************************\n"); printf("\n 请选择");}void menu1(){printf("\n*****************************************\n"); printf("\n** 1.进入图书查询系统 **\n"); printf("\n** 2.进入图书借还系统 **\n"); printf("\n** 3.保存所有图书信息 **\n"); printf("\n** 4.返回上级菜单 **\n"); printf("\n*****************************************\n"); printf("\n请选择");}void cxmenu(){printf("\n*****************************************\n"); printf("\n** 1.显示所有图书信息 **\n"); printf("\n** 2.按编号查询图书 **\n"); printf("\n** 3.按书名查询图书 **\n"); printf("\n** 4.按作者查询图书 **\n"); printf("\n** 5.返回上级菜单 **\n"); printf("\n****************************************\n");6printf("\n请选择");}void jhmenu(){printf("\n*****************************************\n"); printf("\n** 1.借书 **\n"); printf("\n** 2.还书 **\n"); printf("\n** 3.返回上级菜单 **\n"); printf("\n*****************************************\n"); printf("\n请选择");}void print(link *head){link *p;p=head;printf("\n");printf("\n****************************************** ********\n");printf("\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时间\t\t价格\t\t状态\n");while(p!=NULL){printf("\n");printf("%s\t%s\t%s\t%s\t%s",p->number,p->bookname,p->author,p->publish,p->time);printf("\t\t%.2f",p->price);printf("\t\t%s",p->status);printf("\n");p=p->next;}}void hold(link *head){7link *p;FILE *fp;fp=fopen("图书信息.txt","w+");if(fp==NULL){printf("文件操作出错!!!");exit(1);}p=head;for(;p!=NULL;p=p->next){fprintf(fp,"%s\t%s\t%s\t%s\t%s",p->number,p->booknam e,p->author,p->publish,p->time);fprintf(fp,"\t\t%.2f",p->price);fprintf(fp,"\t\t%s",p->status);fprintf(fp,"\n");}fclose(fp);printf("信息已保存。

");}void holdcx(link *t){link *p=NULL;FILE *fp;fp=fopen("查询.txt","a+");p=t;fprintf(fp,"查询到的信息为:\n");fprintf(fp,"\n");fprintf(fp,"\n************************************** ************\n");fprintf(fp,"\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时间\t\t价格\t\t状态\n");fprintf(fp,"\n");fprintf(fp,"%s\t%s\t%s\t%s\t%s",p->number,p->booknam e,p->author,p->publish,p->time);8fprintf(fp,"\t\t%.2f",p->price);fprintf(fp,"\t\t%s",p->status);fprintf(fp,"\n");fclose(fp);printf("信息已保存");}link *findnumber(link *head){char key[100];link *h,*t1=NULL;printf("请输入图书的编号:");getchar();gets(key);for(h=head;h!=NULL;h=h->next){if(strcmp(key,h->number)==0){t1=h;break;}}return t1;}link *findboookname(link *head){char key[100];link *h,*t2=NULL;printf("请输入图书的书名:");getchar();gets(key);for(h=head;h!=NULL;h=h->next){if(strcmp(key,h->bookname)==0){9t2=h;break;}}return t2;}link *findauthor(link *head){char key[100];link *h,*t3=NULL;printf("请输入作者姓名:");getchar();gets(key);for(h=head;h!=NULL;h=h->next){if(strcmp(key,h->author)==0){t3=h;break;}}return t3;}link *sortnumber(link *head){link *p,*q,*temp;temp=(link *)malloc(sizeof(link));if(temp==NULL){printf("申请内存出错!!!");exit(1);}for(p=head;p!=NULL;p=p->next){10for(q=p->next;q!=NULL;q=q->next){if(strcmp(p->number,q->number)>0){strcpy(temp->number,p->number);strcpy(temp->bookname,p->bookname);strcpy(temp->author,p->author);strcpy(temp->publish,p->publish);strcpy(temp->time,p->time);temp->price=p->price;strcpy(temp->status,p->status);strcpy(p->number,q->number);strcpy(p->bookname,q->bookname);strcpy(p->author,q->author);strcpy(p->publish,q->publish);strcpy(p->time,q->time);p->price=q->price;strcpy(p->status,temp->status);strcpy(q->number,temp->number);strcpy(q->bookname,temp->bookname);strcpy(q->author,temp->author);strcpy(q->publish,temp->publish);strcpy(q->time,temp->time);q->price=temp->price;strcpy(q->status,temp->status);}}}return head;}link *borrowbook(link *head){link *h,*p;11char ch,ch1[100]="在库",ch2[100]="不在库";h=head;printf("\n****************************************** ********\n");printf("\t\t欢迎使用借书系统\n");p=findboookname(h);if(p==NULL)printf("借书失败,书库中没有这本书!!!");else if(strcmp(p->status,ch2)==0)printf("借书失败,图书不在库!!!");else{printf("确认借出?Y/N:");scanf("%c",&ch);getchar();if(ch=='Y'||ch=='y'){strcpy(p->status,ch2);printf("借书成功,请返回上级菜单保存信息!!!");}if(ch=='N'||ch=='n'){printf("你没有借任何书!!!");}}return head;}link *returnbook(link *head){link *h,*p;char ch,ch1[100]="在库",ch2[100]="不在库";h=head;printf("\n****************************************** ********\n");printf("\t\t欢迎使用还书系统\n");12p=findboookname(h);if(p==NULL)printf("还书失败,这不是本书库的书!!");else{printf("确认还书?Y/N:");scanf("%c",&ch);getchar();if(ch=='Y'||ch=='y'){strcpy(p->status,ch1);printf("还书成功,请返回上级菜单保存信息!!!");}if(ch=='N'||ch=='n'){printf("你没有还书!!!");}}return head;}void main(){int a,b,c,d;link *h,*t;L:system("cls");mainmenu();while(1){scanf("%d",&a);switch(a){case 1:{B: system("cls");menu1();13while(1){scanf("%d",&b);switch(b){case 1:{system("cls");cxmenu();while(1){scanf("%d",&c);switch(c){case 1:{print(h);}break;case 2:{t=findnumber(h);if(t==NULL)printf("没有要查询的图书!!!");if(t!=NULL){printf("查询的图书为:");printf("\n");printf("\n********************************************** ****\n");printf("\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时间\t\t价格\t\t状态\n");printf("\n");printf("%s\t%s\t%s\t%s\t%s",t->number,t->bookname,t->author,t->publish,t->time);14printf("\t\t%.2f",t->price);printf("\t\t%s",t->status);printf("\n");}}break;case 3:{t=findboookname(h);if(t==NULL)printf("没有要查询的图书!!!");if(t!=NULL){printf("查询的图书为:");printf("\n");printf("\n********************************************** ****\n");printf("\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时间\t\t价格\t\t状态\n");printf("\n");printf("%s\t%s\t%s\t%s\t%s",t->number,t->bookname,t->author,t->publish,t->time);printf("\t\t%.2f",t->price);printf("\t\t%s",t->status);printf("\n");}}break;case 4:{t=findauthor(h);if(t==NULL)printf("没有要查询的图书!!!");if(t!=NULL){printf("查询的图书为:");printf("\n");15printf("\n********************************************** ****\n");printf("\n编号\t\t书名\t\t作者\t\t出版社\t\t出版时间\t\t价格\t\t状态\n");printf("\n");printf("%s\t%s\t%s\t%s\t%s",t->number,t->bookname,t->author,t->publish,t->time);printf("\t\t%.2f",t->price);printf("\t\t%s",t->status);printf("\n");}}break;case 5:{goto B;}break;}}}break;case 2:{system("cls");jhmenu();while(1){scanf("%d",&d);switch(d){case 1:{borrowbook(h);}break;case 2:{returnbook(h);16}break;case 3:{goto B;}break;}}}break;case 3:{hold(h);}break;case 4:{goto L;}break;}}}break;case 0:{printf("\t\t\t感谢使用,再见!!!");exit(0);}}}}第四章心得体会经过一个多星期的编译原理课程设计,在我的努力下,顺利完成该课程设计。

相关主题