C语言课程设计图书信息管理系统设计.docx

上传人:b****7 文档编号:23811280 上传时间:2023-05-21 格式:DOCX 页数:22 大小:315.04KB
下载 相关 举报
C语言课程设计图书信息管理系统设计.docx_第1页
第1页 / 共22页
C语言课程设计图书信息管理系统设计.docx_第2页
第2页 / 共22页
C语言课程设计图书信息管理系统设计.docx_第3页
第3页 / 共22页
C语言课程设计图书信息管理系统设计.docx_第4页
第4页 / 共22页
C语言课程设计图书信息管理系统设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言课程设计图书信息管理系统设计.docx

《C语言课程设计图书信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书信息管理系统设计.docx(22页珍藏版)》请在冰豆网上搜索。

C语言课程设计图书信息管理系统设计.docx

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模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1