C语言程序设计课程设计小型图书馆管理系统.docx
《C语言程序设计课程设计小型图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计小型图书馆管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计课程设计小型图书馆管理系统
C语言课程设计
题目小型图书馆管理系统
学生姓名专业班级
指导教师职称
所在单位
教学部主任
目 录
1需求分析
1.1系统概述
此系统对于图书馆的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。
系统实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加读者、查询读者、删除读者、借书信息等智能化管理过程。
图书管理员只需略懂电脑知识就可以简易的操作该图书馆管理系统。
1.2系统运行环境
1.硬件环境
处理器:
InterPentium166MX或更高
内存:
32M
硬盘空间:
1GB
显卡:
SVGA显示适配器
2.软件环境
操作系统:
Windows98/ME/2000/XP
开发语言:
VisualC++
1.3功能需求描述
小型图书馆管理系统主要是为图书管理员提供一个方便易用的界面,同时还具有查看读者及书籍的添加、查询、修改、删除的功能。
小型图书馆管理系统主要需要实现以下一些基本功能:
1.借出图书:
依据学号,学生可以借出指定图书。
2.归还图书:
依据学号,学生可以归还所借图书。
3.图书信息维护模块:
增加图书、删除图书,以及更改、查询图书信息。
4.读者信息维护模块:
增加读者、删除读者,以及更改、查询读者信息。
2总体设计
2.1开发与设计的总体思想
本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、借书、还书等主要功能。
系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。
2.2系统模块结构
依据需求分析结果,图书馆管理系统可以分为四个模块:
借书功能模块、还书功能模块、图书信息维护模块、读者信息维护模块
如图2-1所示:
图2-1系统模块结构图
2.3系统总体流程
图2-3系统总体流程图
本系统在执行的过程中,先选择操作方式,选择1则执行借书,选择2则执行还书,选择3进入图书维护,选择4进入读者维护,系统的总体流程图如图2-3所示:
3详细设计
基于系统需求分析与系统总体设计的结论,下面按照模块的划分来分别阐述系统的详细设计和实现过程。
3.1数据类型
本系统中主要采用结构数据类型存储图书、读者等的基本信息。
本系统中定义class类类型用于描述图书信息。
class结构体类型定义格式如下:
classbook
{
public:
intno;
charname[20];
charauthor[10];
intprice;
intb_flag;
intb_del;
public:
其中name用于描述图书名称,author用于描述图书作者。
用于描述读者信息的类类型class定义格式为:
classreader
{
public:
intno;
intsex;//读者性别,1表示男,0表示女
charname[20];
intr_del;//1存在,2删除
intr_bor;//1借过书,2没有借书
bookbrbook;
public:
voidaddreader(intid,charna[],ints)//增加读者
{
no=id;
sex=s;
strcpy(name,na);
r_del=1;
}
3.2图书馆管理系统功能模块
图书馆管理系统模块主要提供图书管理员实现增加图书、查询图书、删除图书、借阅图书、还书;增加读者、查询读者、删除读者、借书信息等。
该模块按照查询方法不同分为借书功能模块、还书功能模块、图书信息维护模块、读者信息维护模块。
一、借书模块功能设计与实现
1.借书模块描述
通过输入学号、书号,借取图书
2.借书模块算法函数设计如下:
intfindbooks(intsuffix)
intno;
cout<<"请输入书号:
";
cin>>no;
for(inti=0;i<=top;i++)
{
if(btarray[i].no==no&&btarray[i].b_del==1)
{
returni;
}
}
return-1;
}
二、还书模块功能设计与实现
1.还书模块描述
通过输入学号、书号,还图书
2.还书模块算法函数设计如下:
intfindreaders(intsuffix)
{
intno;
cout<<"请输入学号:
";
cin>>no;
for(inti=0;i<=top;i++)
{
if(rdarray[i].no==no&&rdarray[i].r_del==1)
{
returni;
}
}
return-1;}
三、图书维护模块功能设计与实现
1.图书维护模块描述
增加图书、删除图书,以及更改、查询图书信息。
2.还书模块算法函数设计如下:
(1)增加图书
voidaddbooks()
{
bookbk;
intno;
charbname[20];
charbau[10];
intpr;
cout<";
cin>>no;
cout<";
cin>>bname;
cout<";
cin>>bau;
cout<";
cin>>pr;
cout<bk.b_flag=1;
bk.addbook(no,bname,bau,pr);
top++;
btarray[top]=bk;
return;
}
(2)修改图书信息
voideditbooks()
{
intcur;
cur=findbooks();
if(cur==-1)
{
cout<<"没有这本书"<return;
}
cout<<"书号:
"<"<"<"<cout<<"请修改数据:
"<cout<";
cin>>btarray[cur].name;
return;
}
(3)删除图书
voiddelbooks()
{
intcur;
cur=findbooks();
if(cur==-1)
{
return;
}
if(btarray[cur].b_flag==2)
{
cout<<"该图书已经借出,请在归还后再删除。
"<return;
}
btarray[cur].b_del=2;
return;
}
(4)查找图书
intfindbooks()
{
intno;
charvalue[6];
cout<<"请输入书号:
";
cin>>no;
for(inti=0;i<=top;i++)
{
if(btarray[i].no==no&&btarray[i].b_del==1)
{
if(btarray[i].b_flag==1)strcpy(value,"在架");
if(btarray[i].b_flag==2)strcpy(value,"借出");
cout<<"书号:
"<"<"<"<"<returni;
}
}
return-1;
}
(5)显示全部图书信息
voidlistbooks()
{
charvalue[6];
for(inti=0;i<=top;i++)
{
if(btarray[i].b_del==1)
{
if(btarray[i].b_flag==1)strcpy(value,"在架");
if(btarray[i].b_flag==2)strcpy(value,"借出");
cout<<"书号:
"<"<"<}
}
return;
}
三、读者维护模块功能设计与实现
1.读者维护模块描述
增加读者、删除读者,以及更改、查询读者信息。
2.读者模块算法函数设计如下:
(1)增加读者
voidaddreaders()
{
readerrd;
intno;
intrs;
charrname[20];
cout<<"请输入学号:
";
cin>>no;
cout<";
cin>>rname;
cout<";
cin>>rs;
cout<rd.addreader(no,rname,rs);
rd.r_bor=2;
top++;
rdarray[top]=rd;
return;
}
(2)修改读者信息
voideditreaders()
{
intcur;
cur=findreaders();
if(cur==-1)
{
cout<<"没有该学生"<return;
}
cout<<"请修改数据:
"<cout<";
cin>>rdarray[cur].name;
return;
}
(3)删除读者
voiddelreaders()
{
intcur;
cur=findreaders();
if(cur==-1)
{
return;
}
if(rdarray[cur].r_bor==1)
{
cout<<"该用户借了图书,请还书后再删除"<return;
}
rdarray[cur].r_del=2;
return;
}
(4)查找读者
intfindreaders()
{intno;
charvalue[3];
cout<<"请输入学号:
";
cin>>no;
for(inti=0;i<=top;i++)
{
if(rdarray[i].no==no&&rdarray[i].r_del==1)
{
if(rdarray[i].r_bor==1)strcpy(value,"借");
if(rdarray[i].r_bor==2)strcpy(value,"无");
cout<<"学号:
"<"<"<returni;
}
}
return-1;}
(5)显示全部图书信息
voidlistreaders()
{charvalue[3];
for(inti=0;i<=top;i++)
{if(rdarray[i].r_del==1)
{
if(rdarray[i].r_bor==1)strcpy(value,"借");
if(rdarray[i].r_bor==2)strcpy(value,"无");
cout<<"学号:
"<"<"<}
}
return;
}
4系统测试
对于软件测试而言,黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。
也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如:
数据库或文件)的完整性。
黑盒测试又成为功能测试。
而白盒测试法的前提是可以把程序看成装在一个透明的白盒子里也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定的要求正确工作。
白盒测试又称为结构测试。
在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同其他模块的功能之间没有相互依赖关系。
因此,可以把每个模块作为一个单独的实体来测试,而且通常比较容易设计检验模块正确性的测试方案。
模块测试的目的是保证每一个模块作为一个单元能正确运行。
4.1登陆图书查询系统
运行程序:
4.2借书
输入“1”来选择书号以借书
4.3查看图书情况
输入“3”进入图书维护,在图书维护中输入“5”来查看图书的基本情况
4.4在读者维护中输入“5”来了解所有读者的借书情况
总结
在初学C语言的一-个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。
在为期两周的时间中,我们同组的同学共同的感受是:
C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。
好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的较为复杂程序。
在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。
而且遇到一-些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一-颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。
还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。
首先我要继续学习好C语言的基础知识,然后能在电脑.上熟练的运用。
然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。
遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。
实训项目使我们熟悉了C程序设计过程,培养了我们的环境适应能力及发现问题、分析问题、解决问题的实际工作能力,为我们今后的发展打下了良好的基础。
参考文献
[1]李瑞.徐克圣.刘月凡.戚海英.C程序设计基础[M].北京:
清华大学出版社.2009.7
[2]布鲁志著.吴丹等译.面向对象的软件工程—构建复杂且多变的系统[M].北京:
清华大学出版社.2002.10
[3]霍顿(美).杨杰(译).北京:
清华大学出版社.2008
[4]薛圆圆.C语言开发手册.北京:
电子工业出版社.2011.4