C++毕业课程设计报告图书管理系统.docx
《C++毕业课程设计报告图书管理系统.docx》由会员分享,可在线阅读,更多相关《C++毕业课程设计报告图书管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
C++毕业课程设计报告图书管理系统
(此文档为word格式,下载后您可任意编辑修改!
)
目录
(1)实践任务书....,............................................1
(2)总体设计方案...............................................2
1.设计分析...................................................2
2.模块设计...................................................3
3.流程图.....................................................3
(3)使用说明及运行实例.........................................4
1.系统首页...................................................4
2.操作主页...................................................4
3.功能模块...................................................5
(1)新增图书...............................................5
(2)更改图书...............................................5
(3)删除图书...............................................6
(4)查找图书...............................................6
(5)统计图书...............................................7
(6)清空全部...............................................7
(7)退出系统...............................................8
(4)成员设计内容简介...........................................9
(5)项目源程序代码.............................................10
(6)课程设计心得...............................................19
1.设计心得体会(侯想).........................................19
2.设计心得体会(孙昱).........................................20
3.设计心得体会(周易).........................................21
(7)成绩评定及评语.............................................22
(一)设计任务书
1.题目:
图书管理系统
2.程序功能组成:
程序为图书管理系统。
包括以下功能:
图书增添,修改,删除,统计,查找,清空记录。
3.成员组成与分工:
(1)成员组成:
机械1309侯想
机械1309周易
机械1309孙昱
(2)分工:
人员:
侯想
周易
孙昱
分工:
1.模块设计
2.报告修改
1.程序美化
程序调试
2.报告设计制作
1.模块设计
2.报告修改
(3)进度安排:
时间:
进度安排:
实施情况:
6月23日
自由组队,选择设计项目,明确分工。
按时完成
6月24日—26日
小组成员进行模块设计,包括编写、查找代码,运行调试代码。
按时完成
6月27日—28日
进行程序代码的组合,调试。
按时完成
7月1日—2日
进行程序的运行,检查,修改。
按时完成
7月3日—4日
提交,答辩。
按时完成
(二)总体设计方案
1.设计分析
(1)系统功能:
图书管理系统基本功能:
增加,更改,查找,删除;
全部图书记录的统计与显示;
快捷清空所有图书记录。
(2)系统要求:
数据成员
charname[StrNum];用来存放书名。
charnumber[StrNum];用来存放图书的编号。
charkind[Type];用来存放图书的类型。
inttag;定义删除标记。
intnum;定义图书编号为整形。
intadd;增加标记。
函数成员
Book(){}无参构造函数,用于为书名和作者姓名设置默认值。
chargetkind()用于获取图书类型。
chargetname()用于获取书名。
intgetnum()用于获取图书编号。
intgettag()用于获取删除标记。
voidsetname(charna[])用于设置书名。
voidsetkind(charkin[])用于设置类型。
voidsetauthor(charau[])用于设置作者。
voidsetpress(charpr[])用于设置出版社。
voiddelbook()用于删除图书。
voidaddbook(intn,char*na,char*kin,char*au.char*pr)用于增加图书。
voiddisp()用于输出图书。
(3)系统特点:
操作界面有颜色(背景蓝,字体白);
功能齐全;
系统稳定,无bug。
2.模块设计
共七个模块:
(1)新增图书
按编号,书名,类型,作者,出版社信息顺序添加图书;
(2)更改图书
按编号查找图书,然后进行信息更改录入;
(3)删除图书
按编号查找图书,然后进行删除工作;
(4)查找图书
根据编号查找图书;
(5)统计图书
显示系统所以已录入图书信息;
(6)清空全部
一次性清空系统记录,慎用(无恢复功能);
(7)退出系统
3.流程图
(三)使用说明及运行实例
1.系统首页
注)选择1才正式进入操作图书管理系统,选择0退出系统。
2.操作主页
注)输入数字1-6进入相应操作模块,输入0则退出系统。
3.功能模块
(1)新增图书
注)进入“新增图书”模块后,分别输入图书的编号,类型,书名,作者,出版社,回车结束操作。
(2)更改图书
注)进入“更改图书”模块后,输入对应需要更改的类容。
(3)删除图书
注)进入“删除图书”模块后,输入图书编号,键入y确认删除,n取消删除。
(4)查找图书
注)进入“查找图书”模块后,输入图书编号,回车后则显示所查找图书,且同时显示图书的信息。
(5)统计图书
注)进入“统计图书”模块后,即会显示所以系统保存的图书信息。
(6)清空全部
注)进入“新增图书”模块后,键入y确认清空,n取消清空。
(7)退出系统
注)在功能模块,键入0,即会返回系统首页。
若需重新操作,参考前面类容介绍;若需退出系统,则再键入0,回车,然后任意键退出系统。
(四)成员设计内容简介
成员设计工作表及简介
姓名
侯想
孙昱
周易
设计
类容
1.图书增加
加入图书书名,作者,编号,类型,出版社五种信息,录入记录。
2.图书显示
加入编号显示图书记录与信息。
3.图书统计
显示所以图书记录。
4.设计报告修改
进行报告后期修改。
1.图书删除
加入删除指定编号图书信息与记录,带有确认提示。
2.图书清空
加入清空所以图书记录信息,带有确认提示系统。
3.图书更改
加入按编号显示查找出需修改的图书,然后进行信息修改。
1.系统修改
修改源代码,美化操作界面,添加蓝色背景白色字体代码。
2.程序调试
调试程序,查看是否存在bug,修复不合理地方。
3.报告设计与制作
进行报告结构设计与简单制作,明确设计报告具体内容。
(五)项目源程序代码
程序源代码:
*****************************************************************************************
#defineStrNum20
#defineType20
#include
#include
#include
#include输入输出文件流类
usingnamespacestd;
constintMaxb=100;最多可存储的图书
classBook
{
private:
inttag;删除标记
intnum;图书编号
intadd;增加标记
charnumber[StrNum];编号
charname[StrNum];书名
charkind[Type];图书类型
charauthor[StrNum];图书作者
charpress[StrNum];出版社
public:
Book(){}
chargetkind()获取图书类型
{
returnkind[Type];
}
chargetname()获取书名
{
returnname[StrNum];
}
chargetauthor()获取作者
{
returnauthor[StrNum];
}
chargetpress()获取出版社
{
returnpress[StrNum];
}
intgetnum()获取图书编号
{
returnnum;
}
intgettag()获取删除标记
{
returntag;
}
voidsetname(charna[])设置书名
{
strcpy(name,na);
}
voidsetkind(charkin[])设置类型
{
strcpy(kind,kin);
}
voidsetauthor(charau[])设置作者
{
strcpy(author,au);
}
voidsetpress(charpr[])设置出版社
{
strcpy(press,pr);
}
voiddelbook()删除图书
{
tag=1;
}
voidaddbook(intn,char*na,char*kin,char*au,char*pr)增加图书
{
tag=0;
num=n;
strcpy(name,na);
strcpy(kind,kin);
strcpy(author,au);
strcpy(press,pr);
}
voiddisp()输出图书
{
cout.flags(ios:
:
left);设置对齐的标志位为左
cout<}
};
*****************************************************************************************
classBDatabase
{
private:
inttop;图书记录指针
Bookbook[Maxb];图书记录
public:
BDatabase()构造函数,将book.txt读到book[]中
{
Bookb;
top=-1;
fstreamfile("book.txt",ios:
:
in);
while
(1)
{
file.read((char*)&b,sizeof(b));
if(!
file)break;
top++;
book[top]=b;
}
file.close();
}
voidclear()全删
{
top=-1;
}
intaddbook(intn,char*na,char*kin,char*au,char*pr)增加图书
{
Book*p=query(n);
if(NULL==p)
{
top++;
book[top].addbook(n,na,kin,au,pr);
return1;
}
return0;
}
Book*query(intbookid)查找图书
{
for(inti=0;i<=top;i++)
if(book[i].getnum()==bookid&&book[i].gettag()==0)
{
return&book[i];
}
returnNULL;
}
voidbookdata();图书库
voiddisp()
{
for(inti=0;i<=top;i++)
if(book[i].gettag()==0)
book[i].disp();
}
~BDatabase()析构函数,将book[]写到book.txt文件中
{
fstreamfile("book.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(book[i].gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
};
voidBDatabase:
:
bookdata()
{
charchoice;
charbname[40];
charbkind[40];
charnewType[20];
charbauthor[40];
charbpress[40];
intbookid;
Book*b;
while(choice!
='0')
{
cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<cout<<"※※"<cout<<"※图书管理系统※"<cout<<"※※"<cout<<"※1.新增图书※"<cout<<"※2.更改图书※"<cout<<"※3.删除图书※"<cout<<"※4.查找图书※"<cout<<"※5.统计图书※"<cout<<"※6.清空全部※"<cout<<"※0.退出系统※"<cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<cout<<"请选择(0):
";
cin>>choice;
switch(choice)
{
case'1':
cout<<"输入图书编号:
"<cin>>bookid;
cout<<"输入图书类型:
"<cin>>newType;
cout<<"输入图书书名:
"<cin>>bname;
cout<<"输入图书作者:
"<cin>>bauthor;
cout<<"输入出版社:
"<cin>>bpress;
addbook(bookid,bname,newType,bauthor,bpress);
break;
case'2':
cout<<"输入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<break;
}
cout<<"输入新的书名:
"<cin>>bname;
b->setname(bname);
cout<<"输入新的类型:
"<cin>>bkind;
b->setkind(bkind);
cout<<"输入新的作者:
"<cin>>bauthor;
b->setauthor(bauthor);
cout<<"输入新的出版社:
"<cin>>bpress;
b->setpress(bpress);
break;
case'3':
cout<<"读入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<break;
}
chartg1;
cout<<"确定要删除此记录吗?
(YN)"<cin>>tg1;
if(tg1!
='n'&&tg1!
='N')
{
b->delbook();
cout<<"已成功删除该书记录!
"<break;
}
case'4':
cout<<"读入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<break;
}
cout<<"图书编号图书名称图书类型图书作者出版社\n";
b->disp();
break;
case'5':
cout<<"图书编号图书名称图书类型图书作者出版社\n";
disp();
break;
case'6':
chartg2;
cout<<"确定要清空所有记录吗?
(YN)"<cin>>tg2;
if(tg2!
='n'&&tg2!
='N')
{
clear();
cout<<"已成功清空记录!
"<break;
}
case'0':
break;
default:
cout<<"输入错误,请从新输入(数字为0~6):
";
}
}
}
main()函数的实现,程序的主界面的引导
voidmain()
{
system("color3f");
charchoice;
BDatabaseBookDB;
while(choice!
='0')
{cout<<"※※※※※※※※※※※※※※※※※※欢迎使用※※※※※※※※※※※※※※※※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※图书管理系统※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※※"<cout<<"※by侯想孙昱周易※"<cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<cout<<"\t\t\t1进入系统\n\n\t\t\t0离开"<cout<<"请选择:
";
cin>>choice;
switch(choice)
{
case'1':
BookDB.bookdata();
break;
case'0':
cout<<"\n\n\t\t\t欢迎再次使用图书管理系统\n\n";
break;
default:
cout<<"输入错误,请从新输入:
";
}
}
}
注)操作环境:
在win732位系统中使用软件Microsoft visual c++6.0简体中文版编写。
(六)课程设计心得
1.设计心得体会(侯想)
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算起来在实验室的时间只有三天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
通过此次课程设计,使我更加扎实的掌握了有关C++程序设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的观念。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于解决了。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,