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

图书信息管理系统设计—C语言课程设计报告

图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块主函数流程图《1》、主函数:建立menu( )函数将主函数功能提取出来,主函数main调用menu( )函数方便简捷。

void main(){menu();}void menu(){int a;do{printf(" ****** 毅******\n");printf("\n");printf("******中国地质大学******\n");printf("\n");printf("\n\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\t2 ----------------图书信息浏览\n");printf("\t\t\t3 ----------------图书信息查询\n");printf("\t\t\t4 ----------------图书信息删除\n");printf("\t\t\t5 ----------------图书信息修改\n");printf("\t\t\t6 ----------------图书信息追加\n");printf("\t\t\t0 ----------------退出图书信息系统\n");printf("\t\t********************************************\n");printf("\t\tplease choose: ");scanf("%d",&a);switch(a){case 1:input();break;case 2:list();break;case 3:search();break;case 4:del();break;case 5:revise();break;case 6:append();break;case 0:exit(0);default:printf("\n序号不对\n");}}while(a!=0);}【定义图书信息结构体】#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>void menu();#define N 3typedef struct system{long num;char name[20];char writer[10];char sort[10];char publisher[20];long time;float price;}BOOK;注:定义的BOOK结构体N为限定的录入图书个数(可依据不同要求变化围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10]为定义的作者的数组char sort[10]定义的分类号数组char publisher[20]定义的出版单位数组long time定义的出版时间长整形变量float price价格为浮点型变量。

《2》、【数据存储】整个程序没有利用保存save函数,而是利用txt.txt \ tab.txt 两个文件录入存取数据信息,并通过文件的读取、写入进行图书信息的修改/删除等功能。

(fopen fwrite fread写入及读取数据进行存储)。

《3》【图书信息录入】图书录入流程图【程序】void input() /*定义录入函数*/{int i;BOOK a;FILE *fp;if((fp=fopen("txt.txt","w"))==NULL){printf("error!\n");exit(0);}for(i=1;i<=N;i++){printf("\t请输入您所需书籍的登陆号:");scanf("%ld",&a.num);printf("\t请输入书名:");scanf("%s",);printf("\t请输入作者名:");scanf("%s",a.writer);printf("\t请输入分类号:");scanf("%s",a.sort);printf("\t请输入出版单位:");scanf("%s",a.publisher);printf("\t请输入出版时间:");scanf("%ld",&a.time);printf("\t请输入该书的价格:");scanf("%f",&a.price);fwrite(&a,sizeof(BOOK),1,fp);}fclose(fp);}《4》【图书信息浏览】该模块的功能是显示所有录入的图书信息,流程图如下:图书浏览流程【程序】void list() /*定义浏览函数*/{BOOK a;FILE *fp;if((fp=fopen("txt.txt","r"))==NULL){printf("error!\n");exit(0);}printf("\n\n\n\n\n\n\n\n\n登陆号\t书名\t作者名\t分类号\t出版单位\t 出版时间\t价格\n\n");while(fread(&a,sizeof(BOOK),1,fp)!=0)printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",a.num,,a.writer,a.sort,a.publisher,a.time,a.price);fclose(fp);printf("\n\t press any key to continue...");getch();}《5》【图书信息查询】[需求分析]用户需要查找的图书,调用函数:1、按书名查找search_by_name2、按作者名查找search_by_write,两种方式进行查询。

输入查询方式,进入功能选项,1、首先打开源文件txt.txt ,则按照输入书名进行for 循环查找,若查到则显示图书信息。

若无,则显示“file open error!!”。

按任意键结束。

2、与1、流程相同,按照作者名查询。

查询功能流程图【程序】void search() /*定义查询函数*/{int a;printf("\t\t******************************\n");printf("开始查询\n");printf("\t\t\t1---------------按书名查询\n");printf("\t\t\t2---------------按作者名查询\n");printf("\t\t\t0---------------exit\n");printf("\t\t******************************\n") ;printf("\t\t请选择你想要的查询方式:");scanf("%d",&a);switch(a){case 1:search_by_name();break;case 2:search_by_writer();break;case 0:return;}}void search_by_name() /*定义按书名查询*/{FILE *fp;int i;BOOK b[N];char s2[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N&&fp!=NULL;i++)//shanchufread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书名: ");scanf("%s",s2);for(i=0;i<N;i++){if(strcmp(s2,b[i].name)==0){printf("书号书名作者种类出版商出版日期价格\n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",b[i].num,b[i].name,b[i].writer,b[i].sort,b[i].publisher,b[i].time,b[i].price);}fclose(fp);}}void search_by_writer() /*定义按作者名查询*/{int i;FILE *fp;BOOK b[N];char s3[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N;i++)fread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书的作者: ");scanf("%20s",s3);for(i=0;i<N;i++)if(strcmp(s3,b[i].writer)==0){printf("书号书名作者种类出版商出版日期价格\n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",&b[i].num,b[i].name, b[i].writer,&b[i].sort,b[i].publisher,&b[i].time,&b[i].price);}fclose(fp);}《6》【图书信息删除】[需求分析]该模块功能是,先输入需要删除的图登陆号,打开存储文件for循环查找该图书信息,然后利用b[k]=b[k+1]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹。

相关主题