C语言课程设计图书管理系统Word格式文档下载.docx

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

C语言课程设计图书管理系统Word格式文档下载.docx

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

C语言课程设计图书管理系统Word格式文档下载.docx

输入新书

查找图书

删除图书

借阅图书

归还图书

图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(&

//查找模块

case3:

del(&

//删除模块

case4:

borrow(&

//借书模块

case5:

retur(&

//还书模块

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?

开始

返回菜单

结束

图4.2-1输入模块流程图

voidinput(structbook*p)

{inty;

for(;

p<

(&

s[0]+N);

p++)

{printf("

请输入书名:

scanf("

%s"

p->

title);

请输入编号:

p->

number);

请输入作者:

author);

请输入图书价格:

%f"

price);

请输入图书数量:

store);

m++;

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

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

m);

y);

//读取是否继续

if(y==0)

{save(&

read(&

//调用读取文件函数

}

(2)查找模块

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

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

选择查找方式0-2

1或2

输入书名或作者

调用read(structbook*p)

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

判断是否继续

图4.2-2查找模块流程图

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

{intn;

charname1[20];

charname2[20];

charc[3];

{p=&

s[0];

\t请选择查找方式:

\n"

//打印查询方式菜单

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

请在0-2中选择:

\n\n"

n);

//读取查找方式

if(n==0)break;

switch(n)

请输入书名:

name1);

请输入作者:

name2);

&

s[m];

{read(&

//调用读取函数

if(strcmp(p->

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

author,name2)==0)

\n查找图书信息成功!

书名编号作者价格数量\n"

%-10s%-10d%-10s%-10.2f%-10d\n"

p->

title,p->

number,p->

author,p->

price,p->

//打印信息

printf("

是否继续查找?

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

c);

}while(strcmp(c,"

yes"

)==0);

//判断是否结束

(3)删除模块

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

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

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

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

选择删除方式0-2

输入要删除的书名或作者

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

调用save(structbook*p)

图4.2-3删除模块流程图

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

{inti;

structbook*p1,*p2;

intn;

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

//打印删除方式菜单

printf("

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

//读取查找方//

{case1:

//调用读取函数

for(i=0;

i<

m;

i++,p++)

{

{p1=p;

for(p2=p1+1;

p2<

=&

p1++,p2++)

strcpy(p1->

title,p2->

author,p2->

p1->

number=p2->

number;

store=p2->

store;

price=p2->

price;

m--;

删除成功!

else{printf("

没有该书记录!

是否继续删除?

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

//读取是否继续

save(&

//调用保存函数

//判断是否继续删除

(4)借书模块

该模块实现系统的借书功能。

首先查找要借阅的图书,并且显示该项图书的记录,输入借书人的信息后store--,借书成功,询问是否继续。

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

选择借阅查找方式

0-20-2

输入要借阅的书名或作者

使用for循环查找,m--

调用save(structbook*p)

输入借书人的基本信息

显示图书借阅信息

图4.2-4借书模块流程图

voidborrow(structbook*p)//借书模块

{intz;

charname3[20],name4[20];

charw[3];

printf("

请先查找您要借阅的图书!

请选择查找方式:

z);

if(z==0)break;

switch(z)

name3);

name4);

{if(strcmp(p->

title,name3)==0||strcmp(p->

author,name4)==0)

%-10s%-10d%-10s%-10.2fs%-10d\n"

number,

p->

author,p->

请输入您的姓名:

borrower_name);

请输入您的性别:

borrower_gender);

请输入您的学号:

borrower_number);

store--;

借书成功!

书名编号作者价格数量借书人性别学号\n"

%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n"

title,

store,p->

borrower_name,

borrower_gender,p->

是否继续借书?

w);

}while(strcmp(w,"

//判断是否继续借书

(5)还书模块

该模块实现还书功能。

首先作者查找所要还得图书,找到后将借书人的基本信息清除并保存,实现还书功能。

其流程图如图4.2-5所示。

选择还书查找方式

输入要还的书名或作者

清除借书人的基本信息

显示图书信息

图4.2-5还书模块流程图

voidretur(structbook*p)//还书模块

{inte,f;

charname5[20];

charname6[20];

chart[3];

请先查找您要还的图目!

//打印查询方式菜单

e);

//读取查找方式

if(e==0)break;

switch(e)

name5);

name6);

title,name5)==0||strcmp(p->

author,name6)==0)

确认还书请按“1”!

//确认是否还书

f);

if(f==1)

{strcpy(p->

borrower_name,"

0"

strcpy(p->

borrower_gender,"

borrower_number=0;

store++;

borrower_name,p->

//打印信息

是否继续还书?

t);

}while(strcmp(t,"

//判断是否继续还书

4.3公共函数

(1)保存图书信息函数

voidsave(structbook*p)

{FILE*fp,*fp1;

inti;

if((fp=fopen("

tushu.dat"

"

wb"

))==NULL)//打开文件并判断是否出错

创建文件失败!

//打印出错提示

getchar();

return;

if((fp1=fopen("

book.dat"

))==NULL)//打开文件并判断是否出错

if(fwrite(p,sizeof(structbook),1,fp)==0)//向文件写入数据,并判断是否出错

向文件输入数据失败!

fprintf(fp1,"

fclose(fp);

//关闭文件

fclose(fp1);

(2)读取文件信息函数

voidread(structbook*p)//从文件读取信息模块

rb"

))==NULL)//打开文件,并判断是否出错

出错,请检查文件是否存在,按任意键返回住菜单"

fscanf(fp1,"

m);

i++,p++)

{fread(p,sizeof(structbook),1,fp);

//从文件中读取信息

第五部分上机操作

(1)运行主函数,进入主菜单

(2)输入模块

(3)查找模块

(4)删除模块

(5)借书模块

(6)还书模块

(7)退出

第六部分总结

通过这次为期一周的C语言上机实习,我明白C语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。

通过上机训练,才能够明白自己知识的不足,更加深刻的理解C语言中的知识点,从而找到知识漏点,还对以前认为自己已懂了的知识点也理解更加深刻。

当遇到了自己当时不知如何编写的C语言题目时,通过自己的学习和同学的交流,得以顺利的编写,使我增加了对C语言的兴趣和学好C语言的信心。

本次C语言实习的几个作用:

1.加深对课堂讲授容的理解

课堂上要讲授许多关于C语言的语法规则,听起来比较枯燥,不易记忆。

而通过多次上机练习,对于语法知识就有了更深的认识,自然而然地掌握C语言的语法规定。

学习C语言不能停留在书本,而是要利用学到的知识编写C语言程序,解决实际问题。

通过对自己编写程序的调试,发现问题,解决问题,逐步提高自己对C语言的理解和程序开发能力。

2.熟悉程序开发环境、学习计算机系统的操作方法

一个C语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。

所谓"

环境"

就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。

通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。

同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。

在这次实习的过程我中遇到了一些难题,老师给予了我细心的指导,帮助我解决了很多程序上的问题,再次向老师的帮助表示衷心的感谢!

附录(源程序)

【总程序】

#include<

stdio.h>

math.h>

stdlib.h>

string.h>

intm=0;

v

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

当前位置:首页 > 求职职场 > 职业规划

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

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