C语言课程设计报告图书管理系统.docx

上传人:b****3 文档编号:933572 上传时间:2022-10-14 格式:DOCX 页数:29 大小:364.08KB
下载 相关 举报
C语言课程设计报告图书管理系统.docx_第1页
第1页 / 共29页
C语言课程设计报告图书管理系统.docx_第2页
第2页 / 共29页
C语言课程设计报告图书管理系统.docx_第3页
第3页 / 共29页
C语言课程设计报告图书管理系统.docx_第4页
第4页 / 共29页
C语言课程设计报告图书管理系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告图书管理系统.docx

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

C语言课程设计报告图书管理系统.docx

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

C语言课程设计报告

 

 

院系:

学号:

班号:

姓名:

标题:

图书管理系统

第一部分

题目要求………………………………………………3

第二部分

需求分析………………………………………………3

第三部分

总体设计………………………………………………4

第四部分

详细设计………………………………………………4

1)主函数………………………………………4

2)各功能模块设计……………………………6

3)公共函数…………………………………16

第五部分

上机操作……………………………………………17

第六部分

总结…………………………………………………20

附录

(源代码)…………………………………………22

 

第一部分题目要求

图书管理系统包括:

图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号等,是设计一图书管理系统,使之能够提供以下功能:

1.新图书基本信息的输入。

2.图书基本信息的查询。

3.对撤销图示基本信息的删除。

4.办理借书手续。

5.办理换书手续。

第二部分需求分析

根据题目的要求,需要建立一个文件来保存图书信息,每本书的信息用一个结构体来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号,结构体中的存在状态可设为整型,用不同数字代表借还状态;在借书和还书手续中,要注意结构体的成员变量存在状态的值,使用指针会比较方便。

程序中需要对图书信息实现输入、查询、删除、借书和还书的功能,首先要使用菜单进行各项功能的选择;其次需要有文件的输入、输出功能,提供显示、查找等操作。

在程序的运行过程中,注意各功能在使用完毕后返回菜单的设置,以方便运行。

第三部分总体设计

根据上面的需求分析,可以将整个图书管理系统分为输入模块、查找模块、删除模块、借书模块和还书模块(如图3-1所示)。

图书管理系统

输入新书

查找图书

删除图书

借阅图书

归还图书

图3-1系统功能模块图

 

第四部分详细设计

4.1数据结构

在这个程序里,每本书的信息用一个结构体book来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、学号,结构体中的存在状态设为整型,用不同数字代表库中高本书的数量。

structbook

{chartitle[30];

intnumber;

charauthor[30];

floatprice;

intstore;

charborrower_name[20];

charborrower_gender[5];

intborrower_number;

}s[N];

其中的N定义为该系统所管理书籍的最大值。

#defineN100//书籍的最多本数

4.2主函数

【说明】

主函数中,对“菜单”进行了输出,将各个模块的函数列出来,实现对各种功能的选择。

其流程图如图4.1-1所示。

显示一系列功能选项

输入n,判断n

是否是0~5?

调用与n相应的模块

N

Y

开始

结束

图4.1-1主函数流程图

【程序】

voidmain()

{intx;

do

{printf("**************************************菜单**************************************\n"

"***********1.输入图书信息**********\n"

"***********2.查找图书信息**********\n"

"***********3.删除图书信息**********\n"

"***********4.借阅图书**********\n"

"***********5.归还图书**********\n"

"***********0.退出**********\n");

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

printf("请在0-5中选择,以回车键结束\n");

scanf("%d",&x);

switch(x)

{case1:

input(&s[0]);break;//输入新图书信息模块

case2:

search(&s[0]);break;//查找模块

case3:

del(&s[0]);break;//删除模块

case4:

borrow(&s[0]);break;//借书模块

case5:

retur(&s[0]);break;//还书模块

case0:

break;//退出

}

}while(x!

=0);

}

4.2各功能模块设计

(1)输入模块

【分析】

在输入模块中,主要以输入输出语句为主,使用了do…while…和for…这两种循环方式,do…while…是作为一级循环,for…为二级循环。

在输入图书的基本信息过程中,使用指针进行字符串及值的传递。

全局变量m是用于记录图书的储存位置,便于在后来的查询、删除等功能中的使用。

调用save(structbook*p)来保存输入的数据。

定义的整型变量y,用来储存是否继续的指令。

该模块的流程图如下图4.2-1所示。

输入图书的基本信息

调用save(struckbook*p)保存函数,m++

判断y是否为0?

Y

N

开始

返回菜单

结束

图4.2-1输入模块流程图

【程序】

voidinput(structbook*p)

{inty;

for(;p<(&s[0]+N);p++)

{printf("请输入书名:

");scanf("%s",p->title);

printf("请输入编号:

");scanf("%d",&p->number);

printf("请输入作者:

");scanf("%s",p->author);

printf("请输入图书价格:

");scanf("%f",&p->price);

printf("请输入图书数量:

");scanf("%d",&p->store);

m++;

printf("第%d个信息已经输入完毕,是否继续?

\n按任意键继续,按0键结束.",m);

scanf("%d",&y);//读取是否继续

if(y==0)

{save(&s[0]);

read(&s[0]);//调用读取文件函数

break;

}

}

}

(2)查找模块

【分析】

此模块的提供两种查找方式,输入书名或作者,均可实现查找功能。

在函数的结尾,选择是否继续查找。

开始

选择查找方式0-2

1或2

输入书名或作者

调用read(structbook*p)

使用for循环查找并显示记录

判断是否继续

Y

N

返回菜单

结束

0

图4.2-2查找模块流程图

【程序】

voidsearch(structbook*p)//查询模块

{intn;

charname1[20];

charname2[20];

charc[3];

do

{p=&s[0];

printf("\t请选择查找方式:

\n");//打印查询方式菜单

printf("1.按书名查找\n2.按作者查找\n0.返回\n");

printf("请在0-2中选择:

\n\n");

scanf("%d",&n);//读取查找方式

if(n==0)break;

switch(n)

{case1:

printf("请输入书名:

\n");scanf("%s",name1);break;

case2:

printf("请输入作者:

\n");scanf("%s",name2);break;

}

for(;p<&s[m];p++)

{read(&s[0]);//调用读取函数

if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)

{printf("\n查找图书信息成功!

\n");

printf("书名编号作者价格数量\n");

printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//打印信息

break;

}

}

printf("是否继续查找?

\n“是”请键入“yes”,“否”请按任意键,返回菜单\n");

scanf("%s",c);

}while(strcmp(c,"yes")==0);//判断是否结束

}

(3)删除模块

【分析】

该模块实现对撤销图书的删除。

用户首先查找要删除的图书,图书列表出来后,确认是否删除。

当删除成功后,询问是继续删除还返回退出并返回菜单。

其流程图如下图4.2-3所示。

开始

选择删除方式0-2

1或2

输入要删除的书名或作者

调用read(structbook*p)

使用for循环查找并显示记录,m--

判断是否继续

Y

N

返回菜单

结束

0

调用save(structbook*p)

图4.2-3删除模块流程图

【程序】

voiddel(structbook*p)//删除模块

{inti;

structbook*p1,*p2;

charname1[20];

charname2[20];

charc[3];

intn;

do

{p=&s[0];

printf("请选择删除以方式回车键结束:

\n");//打印删除方式菜单

printf("1.按书名删除\n2.按作者删除\n0.返回\n");

printf("请在0-2中选择:

\n\n");

scanf("%d",&n);//读取查找方//

if(n==0)break;

switch(n)

{case1:

printf("请输入书名:

\n");

scanf("%s",name1);break;

case2:

printf("请输入作者:

\n");

scanf("%s",name2);break;

}

read(&s[0]);//调用读取函数

for(i=0;i

{

if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)

{p1=p;

for(p2=p1+1;p2<=&s[m];p1++,p2++)

{

strcpy(p1->title,p2->title);

strcpy(p1->author,p2->author);

p1->number=p2->number;

p1->store=p2->store;

p1->price=p2->price;

m--;

printf("删除成功!

\n");

}

}

else{printf("没有该书记录!

");

break;}

}

printf("是否继续删除?

“是”请键入“yes”,“否”请按任意键,返回

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

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

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