C语言课程设计图书信息管理系统设计.docx
- 文档编号:23811280
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:22
- 大小:315.04KB
C语言课程设计图书信息管理系统设计.docx
《C语言课程设计图书信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书信息管理系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
C语言课程设计图书信息管理系统设计
图书信息管理系统设计
一、【要求】
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)图书信息录入功能
(3)图书信息浏览功能
(4)图书信息查询功能
(5)图书信息的删除与修改功能
二、【各功能模块】
1、菜单模块
N
Y
主函数流程图
《1》、主函数:
建立menu()函数将主函数功能提取出来,主函数main调用menu()函数方便简捷。
voidmain()
{
menu();
}
voidmenu()
{
inta;
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\tpleasechoose:
");
scanf(”%d”,&a);
switch(a)
{
case1:
input();break;
case2:
list();break;
case3:
search();break;
case4:
del();break;
case5:
revise();break;
case6:
append();break;
case0:
exit(0);
default:
printf(”\n序号不对\n");
}
}
while(a!
=0);
}
【定义图书信息结构体】
#include〈stdio。
h〉
#include h> #include h> #include h〉 voidmenu(); #defineN3 typedefstructsystem { longnum; charname[20]; charwriter[10]; charsort[10]; charpublisher[20]; longtime; floatprice; } BOOK; 注: 定义的BOOK结构体 N为限定的录入图书个数(可依据不同要求变化范围) longnum为定义的登录号(长整形变量) charname[20]为定义的书名的数组 charwriter[10]为定义的作者的数组 charsort[10]定义的分类号数组 charpublisher[20]定义的出版单位数组 longtime定义的出版时间长整形变量 floatprice价格为浮点型变量。 《2》、【数据存储】 整个程序没有利用保存save函数,而是利用txt.txt\tab.txt两个文件录入存取数据信息,并通过文件的读取、写入进行图书信息的修改/删除等功能.(fopenfwritefread写入及读取数据进行存储)。 《3》【图书信息录入】 图书录入流程图 【程序】 voidinput()/*定义录入函数*/ { inti; BOOKa; 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",a.name); 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》【图书信息浏览】 该模块的功能是显示所有录入的图书信息,流程图如下: 图书浏览流程 【程序】 voidlist()/*定义浏览函数*/ { BOOKa; 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.name,a.writer, a。 sort,a.publisher,a.time,a.price); fclose(fp); printf(”\n\tpressanykeytocontinue。 。 ."); getch(); } 《5》【图书信息查询】 [需求分析] 用户需要查找的图书,调用函数: 1、按书名查找search_by_name 2、按作者名查找search_by_write,两种方式进行查询。 输入查询方式,进入功能选项, 1、首先打开源文件txt。 txt,则按照输入书名进行for循环查找,若查到则显示图书信息。 若无,则显示“fileopenerror! ! "。 按任意键结束。 2、与1、流程相同,按照作者名查询。 查询功能流程图 【程序】 voidsearch()/*定义查询函数*/ { inta; 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) { case1: search_by_name();break; case2: search_by_writer();break; case0: return;} } voidsearch_by_name()/*定义按书名查询*/ { FILE*fp; inti; BOOKb[N]; chars2[20]; fp=fopen("txt。 txt",”r”); if(fp==NULL) { printf("fileopenerror! ! \n");exit(0); } for(i=0;i =NULL;i++)//shanchu fread(&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); } } voidsearch_by_writer()/*定义按作者名查询*/ { inti; FILE*fp; BOOKb[N]; chars3[20]; fp=fopen("txt。 txt”,"r”); if(fp==NULL) { printf("fileopenerror! ! \n”);exit(0); } for(i=0;i fread(&b[i],sizeof(BOOK),1,fp); printf(”请输入要查询的书的作者: "); scanf(”%20s”,s3); for(i=0;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]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹. 图书信息删除流程 【程序】 voiddel()/*定义删除函数*/ { FILE*fp; longbooknum;/*按登陆号查询*/ inti=0,k; BOOKb[N]; if((fp=fopen(”txt。 txt”,”r"))==NULL) { printf(”error! \n”);getch();exit(0); } for(i=0;i { fread(&b[i],sizeof(BOOK),1,fp); } fclose(fp); printf(”\nPleasetypeinthenumberofthebookyouwanttodelete: "); scanf("%ld",&booknum); for(i=0;i if(booknum==b[i].num){break;} if(i〈N) for(k=i;k<(N-1);k++) { b[k]=b[k+1]; } elseprintf(”\ncannotfound! \n"); fp=fopen(”txt。 txt",”w"); if(fp==NULL) {printf(”\nerror! \n");return;} for(i=0;i〈N-1;i++) { fwrite(&b[i],sizeof(BOOK),1,fp); } fclose(fp); getch(); } 《7》【图书信息修改】 [需求分析] 该模块实现按照用户需求,将需要修改的图书名输入,进行for循环查找是否有此书,若无,则显示未找到,退出,若有,则显示输入新的图书信息,开始输入修改的信息,进行for循环开始录入,替换原文件信息,结束显示“修改成功". 【程序】 voidrevise()/*定义修改函数*/ { inti,j,k; chars1[20]; BOOKb[N]; FILE*fp,*fq; if((fq=fopen("tab。 txt”,”w"))==NULL) { printf("error! ");exit(0); } if((fp=fopen("txt.txt”,”r"))==NULL) { printf("error! ”);exit(0); } for(i=0;! feof(fp)&&i { fread(&b[i],sizeof(BOOK),1,fp); } fclose(fp); printf(”\t\t欢迎进入修改界面\n"); printf("\n\n\n\t\t请输入所要修改的图书名: \n”); scanf("%s”,s1); for(j=0;j if(strcmp(b[j]。 name,s1)==0){k=j;break;} if(j〉i||j==i) { printf("未找到! ");getch();exit(0); } printf("\t\t请输入新登录号图书名作者分类号出版单位出版时间价格\n"); scanf(”%ld%s%s%s%s%ld%f”,&b[k]。 num,b[k]。 name,b[k]。 writer,b[k]。 sort,b[k].publisher,&b[k].time,&b[k].price); for(i=0;i〈(j+1);i++) { fwrite(&b[i],sizeof(BOOK),1,fq); } fclose(fq); printf(”修改成功! ”); if((fq=fopen("txt。 txt”,”w”))==NULL) { printf(”error! ");exit(0); } for(i=0;! feof(fq)&&i〈N;i++) { fwrite(&b[i],sizeof(BOOK),1,fq); } fclose(fq); getch(); } 《8》【图书信息追加】 [需求分析] 该模块功能是用户需要增加新的图书信息,打开源存储文件,按照需要追加的个数n,进行for循环,开始录入追加的信息,流程如下: 【程序】 voidappend()/*定义追加函数*/ { inti,n; BOOKa; FILE*fp; if((fp=fopen(”txt.txt”,"a"))==NULL) { printf("error! \n”);exit(0); } printf(”\n\n\t请输入追加图书的个数: "); scanf("%d",&n); for(i=0;i〈n;i++) { printf("\t请输入追加图书的登录号: "); scanf("%ld",&a.num); printf("\t请输入追加图书的图书名: "); scanf(”%20s",a。 name); printf("\t请输入追加图书的作者名: ”); scanf(”%10s",a。 writer); printf(”\t请输入追加图书的分类号: "); scanf("%10s",a。 sort); printf(”\t请输入追加图书的出版单位: ”); scanf("%20s",a.publisher); printf("\t请输入追加图书的出版时间: ”); scanf("%d”,&a。 time); printf(”\t请输入追加图书的单价: ”); scanf("%f”,&a.price); fwrite(&a,sizeof(BOOK),1,fp); } fclose(fp); } 【上机操作】 1、录入函数 2、编译连接、运行 3、结果 下面是各功能模块的界面图: (1)主菜单 (2)添加模块 【录入模块】 【浏览模块】 【查询模块】 【删除模块】 【修改模块】 修改后的结果 【追加模块】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图书 信息管理 系统 设计