图书信息管理系统设计与C语言课程设计_第1页
图书信息管理系统设计与C语言课程设计_第2页
图书信息管理系统设计与C语言课程设计_第3页
图书信息管理系统设计与C语言课程设计_第4页
图书信息管理系统设计与C语言课程设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书信息管理系统设计

一、【规定】

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。设计

一图书信息管理系统,使之能提供如下功能:

(1)系统以菜单方式工作

(2)图书信息录入功能

(3)图书信息浏览功能

(4)图书信息查询功能

(3)图书信息的删除与修改功能

二、【各功能模块】

1、菜单模块

根据a的值调用各功

结束

主函数流程医

《1》、主函数:

建立menu()函数洛主函数功能提取出来,主函数main调用menu()函数以便简捷。

voidmain()

menu();

voidmenu()

inta;

printf(******赵毅******\n〃);

printfC\n");

printf(〃******中国地质大学******\n〃);

printfCV);

printf(/z\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n〃);

printf(〃\t\t\tl图书信息录入\n〃);

printf(z/\t\t\t2图书信息浏览\n〃);

printf(/z\t\t\t3图书信息查询\n〃);

printf(〃\t\t\t4图书信息删除\n〃);

printf(,z\t\t\t5图书信息修改\n〃);

printf(z,\t\t\t6------------------图书信息追加\n〃);

printf("\t\t\tO------------------退出苗书信息系统\n〃);

printf(z,\t\tpleasechoose:〃);

scanf&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!=O);

)

【定义图书信息构造体】

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

voidmenu();

#defineN3

typedefstructsystem

(

longnum;

charname[20];

charwriter[10];

charsort[10];

charpublisher[20];

longtime;

floatprice;

}

BOOK;

注:定义的IBOOK构造体

N为限定H勺录入图书个数(可根据不同样规定变化范围)

longnum为定义口勺登录号(长整形变量)

charname[20]为定义H勺书名的J数组

charwriter[10]为定义的作者的数组

charsort[10]定义欧)分类号数组

charpublisher[20]定义的I出版单位数组

longtime定义日勺出版时间长整形变量

floatprice价格为浮点型变量。

《2》、【数据存储】

整个程序没有运用保留save函数,而是运用ixt.txt\tab.txt两个文献录入存取数据信息,

并通过文献的读取、写入进行图书信息的修改/删除等功能。(fopenfwritefread写入及

读取数据进行存储)o

《3》【图书信息录入】

图书录入流程图

【程序】

voidinput。/*定义录入函数*/

(

inti;

BOOKa;

FILE*fp;

if((fp二fopen("txt.txt",〃w〃))二二NULL)

printf("error!\n〃);exit(0);

for(i=l;i<=N;i++)

printfCAt请输入您所需书籍的登陆号:〃);

scanf&a.num);

printfC\t请输入书名:“);

scanf(〃%s〃,a.name);

printf("\t请输入作者名:"),、

scanfC%s",a.writer);

printfC\t请输入分类号:〃);

scanf(〃%s〃,a.sort);

printf(z,\t请输入出版单位:〃);

scanf(〃%s〃,a.publisher);

printf(z/\t请输入出版时间:〃);

scanf(〃%ld〃,&a.time);

printfC\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);

)

printfC\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...,z);

getchO;

)

《5》【图书信息查询】

[需求分析]

顾客需要查找的图书,调用函数:

1>按书名查找search_by_name

2、按作者名查找search_by_write,两种方式进行查询。

输入查询方式,进入功能选项,

1、首先打开源文献则按照输入书名进行for循环查找,若查到则显示图书信息。

若无,则显示“fileopenerror!!”。按任意键结束。

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

查询功能流程图

【程序】

voidsearch()/*定义查询函数*/

inta;

printf('\t\t******************************\n");

printf(〃开始查询\n〃);

printf(z,\t\t\tl按书名查询\n〃);

printf(/z\t\t\t2按作者名查询\n〃);

printf(z/\t\t\tOexit\n〃);

printf(〃\i\i******************************\n〃);

printfC\t\t请选择你想要的I查询方式:〃);

scanf(〃%d〃,&a);

switch(a)

case1:searchbyname();break;

case2:searchbywriter();break;

case0:return;}

voidsearch_by_name()/*定义按书名查询*/

FILE*fp;

inti;

BOOKb[N];

chars2[20];

fp=fopen(/ztxt.txt〃,〃r");

if(fp==NULL)

(

printf("fileopenerror!!\nM);exit(0);

}

for(i=0;i<N&&fp!=NULL;i++)//shanchu

fread(&b[i],sizecf(BOOK),1,fp);

printf("请输入要杳询的书名:〃);

scanfs2);

for(i=0;i<N;i++)

(

if(strcmp(s2,b[i].name)==0)

{

printf(〃书号书名作者种类出版商出版日期价格\n〃);

printf(z/\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(,zfileopenerror!!\nz,);exit(0);

}

for(i=0;i<N;i++)

fread(&b[i],sizecf(BOOK),1,fp);

printf(〃请输入要查询时书时作者:〃);

scanf("%20s”,s3);

for(i=0;i<N;i++)

if(strcmp(s3,b[i].writer)==O)

printf(〃书号书名作者种类出版商出版日期价格\n〃);

printf(,z\t%lcl\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,time,&b[i].price);

)

fclose(fp);

}

《6》【图书信息删除】

[需求分析]

该模块功能是,先输入需要删除的图登陆号,打开存储文献for循环查找该图书信

息,然后运用b[k]=b[k+l]语句进行删除,即将要删除的一列用后一列进行替代完毕删

除功能,最终将改后的信息在写入构造体存入文献,关闭文献夹。

图书信息删除流程

【程序】

voiddel()/*定义删除函数*/

(

FILE*fp;

longbooknum;/*按登陆号查询*/

inti=0,k;

BOOKb[N];

if((fp=fopen(/ztxt.txt","r〃))=NULL)

!

printf("error!\n〃);getch();exit(0);

)

for(i=0;i<N;i++)

{

fread(&b[i],sizeof(BOOK),1,fp);

)

fclose(fp);

printf(z,\nPleasetypeinthenumberofthebookyouwanttodelete:");

scanf(〃%ld〃,&booknum);

for(i=0;i<N;i++)

if(booknum==b[i].num){break;)

if(i<N)

for(k=i;k<(N-l);k++)

(

b[k]=b[k+u;

)

elseprintfC\ncannotfound!\n〃);

fp=fopenCtxt.txt","w");

if(fp==NULL)

{printf(z/\nerror!\nz/);return;}

for(i=0:i<N-l:i+4-)

{

fwrite(&b[i],sizeof(BOOK),1,fp);

}

fclose(fp);

getchO;

}

《7》【图书信息修改】

[需求分析]

该模块实现按照顾客需求,将需要修改的图打名输入,进行for循环查找与否有此回

若无,则显示未找到,退出,若有,则显示输入新的图书信息,开始输入修改的信息,

进行for循环开始录入,替代原文献信息,结束显示“修改成功”。

【程序】

voidrevise()/*定义修改函数*/

(

inti,j,k;

charsi[20];

BOOKb[N];

FILE*fp,*fq;

if((fq=fopen(/ztab.txt",〃w〃))二二NULL)

(

printf("error!〃);exit(0);

}

if((fp=fopen("txt.txt",〃r〃))二二NULL)

printf("error!");exit(0);

for(i=0;!feof(fp)&&i<N;i++)

frcadsizeof(BOOK),1,fp);

)

fclose(fp);

printfC\t\t欢迎进入修改界面\n〃);

printf(〃\n\n\n\t\t请输入所要修改『、J图书名:\n〃);

scanf(〃%s",si);

for(j=0;j<i;j++)

if(strcmp(b[j].name,sl)~0){k=j;break;}

if(j>i||j==i)

(

printf(〃未找到!");getch。;exit(0):

}

printf(〃\l\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+l);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循环,开始录入追加的信息,流程如下:

r7__心、附廿/土白

将追加的图书写入txt.txt

【程序】

voidappend()/*定义追加函数*/

{

inti,n;

BOOKa;

FILE*fp;

if((fp=fopen(z/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);

printfCAt请输入追加图书的图书名:〃);

scanf(绘20s〃,a.name);

printfC\t请输入追加图书的作者名:〃);

scanf(〃%10s〃,a.writer);

printf(z/\t请输入追加图书/、J分类号:〃);

scanf(〃%10s〃,a.sort);

printf(〃\t请输入追加图书的出版单位:〃);

scanf(〃%20s〃,a.publisher);

printf(〃\t请输入追加图书的出版时间:〃);

scanf&a.time);

printf(,z\t请输入追加图书的单价:〃);

scanf&a.price);

fwrite(&ci,sizeof(BOOK),1,fp);

)

fclose(fp);

)

【上机操作】

1、录入函数

2、编译连接、运行

3、成果

下面是各功能模块的界面图:

(1)主菜单

'X・X***X击乂^^******

*****中国地质大学

图书信息管理系统

1息菊

E-信

2息

0-信

3删

E-信

4息

5息

60^-息

?信

0^系统

-3

pleasechoose:

(2)添加模块

【录入模块】

aeC

入您

ho号

se的

书:1

请:1

'名

<=

入:1

号:1

r.出

-入

:1冬

=入

请:2

入0:2

请,

出:2

?间

入:2

该:2

入2

的:

入&.

请M

■A书

请:3

F=.名

r刀0:3

出:$3

u

出^:3

价:3

的30

【浏览模块】

C:\DocunientsandSettings\Administrator\^ffi\Debug\2.exe

X,**X,X*,X,*X,X**,*XXXx,**xx,x,x*

pleasechoose:2

当陆号书名作者名分类号出版单位出版时间价格

11111110.00

22222220.00

33333330.00

pressanykeytocontinue...

【查询模块】

pleasechoose:3

开始查询

1------------------------------芨书名查询

较便者名查询

2-------------------------------

0------------------------------exit

请选择你想要的查询方式门

谓输入劈查询的书各1

令粤镒作者种类出版商出版日期价格

1111110.00

pleasechoose:

3

%始查询

1技书名查询

接作者名查询

2

exit

MXXXXXXMXXXMXXXXXMXXXXXXXXXXXX

请选择你想要的查询方式:2

谓揄入藜询的书&>者:2

用粤晓作者种英出版商出版日期价格

2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论