图书信息资料管理系统c++程序设计.docx
- 文档编号:11856036
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:18
- 大小:49.86KB
图书信息资料管理系统c++程序设计.docx
《图书信息资料管理系统c++程序设计.docx》由会员分享,可在线阅读,更多相关《图书信息资料管理系统c++程序设计.docx(18页珍藏版)》请在冰豆网上搜索。
图书信息资料管理系统c++程序设计
C++课程设计报告
图书信息资料管理系统
项目名称:
图书管理系统设计
一、需求分析
以无歧义的陈述说明项目开发的任务,强调的是该项目要实现什么?
并明确规定:
(1)项目采用的技术路线,支持软件;
(2)系统整体框架图;
(3)项目实现的功能点;
该项目为图书资料信息管理系统。
由于经济水平的不断提高,图书馆也逐渐增多,为方便用户借书还书,图书资料信息管理系统的要求也在逐年提高。
特此编写了一个图书资料信息管理系统的代码程序,它的功能主要是完成系统基本功能和要求,统计功能,查找功能;
1、项目采用的技术路线,支持软件
该项目是在VisualC++6.0的平台下用c++语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;程序结束关闭并保存文件。
整体系统功能全部由链表实现。
在系统中,函数之间采用级联调用,即一个函数里调用另一个函数,每个函数实现一个单独的功能,可被一次或多次调用。
整个系统采用的是多文件结构系统,文件结构框图设计,如图4-1所示。
2、系统整体框架图
系统的整体框图如4-1所示
3、项目实现的功能点
基本功能
(1)系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
用户分三种权限:
一般的读者用户,图书管理员。
(2)根据登陆方式,选择相应的操作方式;
如果是图书管理员,除了可以查看数据外还能编辑图书数据以及修改图书数据等功能,同时可以维护图书的采购信息。
如果是读者用户,可添加、删除、查看个人信息,能浏览图书信息。
(3)能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。
(4)图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。
数据的组织形式要求必须使用链表或者二叉树来实现。
(6)系统界面友好,易操作。
统计功能
(1)统计、已借出数据总数、在馆书籍数等。
(3)统计借阅次数最多的10本书。
(4)图书资料信息其它方面的统计。
(5)统计某个单位的借阅数目的情况
查找功能
(1)可以根据图书的编号查找。
(2)可以根据图书的名称查找。
(3)可以根据读者的姓名来查找读者的信息。
(4)可以根据读者的编号查找读者的信息。
系统的操作
(1)有文件的保存和另存为
(2)有文件的打开和载入
(3)系统在退出时,要有相应的提示
二、概要设计
分别有
1、Reader读者类
2、RDatabase读者库类
3、Book图书类
4、BDatabase图书库类
三、详细设计
1、类的原型描述
classReader//读者类
{
inttag;//删除标记1:
已删0:
未删
intno;//读者编号
charname[10];//读者姓名
intborbook[Maxbor];//所借图书
public:
Reader(){}
char*getname()
{
returnname;
}//获取姓名
intgettag()
{
returntag;
}//获取删除标记
intgetno()
{
returnno;
}//获取读者编号
voidsetname(charna[])//设置姓名
{
strcpy(name,na);
}
voiddelbook()
{
tag=1;
}//设置删除标记
voidaddreader(intn,char*na);//增加读者
voidborrowbook(intbookid);//借书操作
intretbook(intbookid);//还书操作
voiddisp();//输出读者信息
};
voidReader:
:
addreader(intn,char*na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;i borbook[i]=0; } voidReader: : borrowbook(intbookid)//借书操作 { for(inti=0;i { if(borbook[i]==0) { borbook[i]=bookid; return; } } } intReader: : retbook(intbookid)//还书操作 { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } else { } } return0; } voidReader: : disp()//输出读者信息 { cout< setw(10)< ["; for(inti=0;i if(borbook[i]! =0) cout< cout<<"]"< } classRDatabase//读者库类 { private: inttop;//读者记录指针 Readerread[Maxr];//读者记录 public: RDatabase()//构造函数,将reader.txt读到read[]中 { Readers; top=-1; fstreamfile("reader.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; read[top]=s; } file.close(); } voidclear()//删除所有读者信息 { top=-1; } intaddreader(intn,char*na)//增添读者信息 { Reader*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); save(); cout<<"读者添加成功"< return1; } return0; } Reader*query(intreaderid)//按编号查找 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&& read[i].gettag()==0) return&read[i]; returnNULL; } voiddisp()//输出所有读者信息 { for(inti=0;i<=top;i++) read[i].disp(); } intReadernum() { returntop; } voidreaderdata();//读者库维护 ~RDatabase()//析构函数,将read[]写入reader.txt文件中 { fstreamfile("reader.txt",ios: : out); for(inti=0;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); else file.close(); } }; classBook//图书类 { private: inttag;//删除标记1: 已删0: 未删 intno;//图书编号 charname[20];//书名 intonshelf;//是否在架1: 在架0: 已借 public: Book(){} char*getname() { returnname; }//获取姓名 intgetno() { returnno; }//获取图书编号 intgettag() { returntag; }//获取删除标记 voidsetname(charna[])//设置书名 { strcpy(name,na); } voiddelbook() { tag=1; }//删除图书 voidaddbook(intn,char*na)//增加图书 { tag=0; no=n; strcpy(name,na); onshelf=1; } intborrowbook()//借书操作 { if(onshelf==1) { onshelf=0; return1; } return0; } voidretbook()//还书操作 { onshelf=1; } voiddisp()//输出图书 { cout< <<(onshelf==1? "在架": "已借")< } }; classBDatabase//图书库类 { private: inttop;//图书记录指针 Bookbook[Maxb];//图书记录 public: BDatabase();//构造函数,将book.txt读到book[]中 voidclear()//全删 { top=-1; } intaddbook(intn,char*na)//增加图书 { Book*p=query(n); if(p==NULL) { top++; book[top].addbook(n,na); save(); cout<<"图书信息增添成功"< return1; } return0; } Book*query(intbookid)//查找图书 { for(inti=0;i<=top;i++) if(book[i].getno()==bookid&& book[i].gettag()==0) return&book[i]; returnNULL; } voiddisp() { for(inti=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } voidbookdata();//图书库维护 ~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(); } }; 2、函数的描述 voidMainMenuinterface();//主菜单 voidMainMenufun();//主菜单功能实现函数 voidAdmininterface();//管理员界面 voidAdminfun();//管理员功能实现函数 voidReaderinterface();//读者信息界面 voidReaderfun();//读者功能实现函数 voidbookdatainterface();//图书信息界面 charFunExit();//系统退出函数 Voidsetname(charna[]);//设置姓名 Voidaddreader(intn,char*na);//增加读者 Voiddelbook();//设置删除 Voidborrowbook(intbookid);//借书操作 Voidretbook(intbookid);//还书操作 VoidRDatabase();//构造函数 voiddisp()//输出读者信息 voidclear()//删除所有读者信息 VoidReader*query(intreaderid);//按编号查找 Voidreaderdata();//读者库维护 Voidsetname(charna[]);//设置书名 voidaddbook(intn,char*na)//增加图书 Book*query(intbookid)//查找图书 voidbookdata();//图书库维护 ~BDatabase()//析构函数 save();//文件的保存 四、测试分析 (一)、此系统存在问题 1)未设登录密码保护系统,是整个图书管理系统失去了安全性; 2)************************************************************* 欢迎进入图书维护界面 1.新增图书信息 2.更改图书信息 3.删除图书信息 4.查找图书 5.浏览图书信息 6.删除全部图书信息 h.返回上一级菜单 q.退出 ************************************************************** 此界面运行时选择4有时会出现内存读取错误; 3)当输入错的数据类型时可能导致内存错误; 4)读者、图书信息不完善; 5)命名不是很规范; 6)信息存储有限; 黑盒测试 目的 本方案主要实施产品程序代码的黑盒测试。 保证软件的功能能正常进行,保证用户可以安全、快捷进行操作 测试项 软件的登陆查找排序统计部分的功能 测试步骤 序号 测试项 测试内容 质量保证标准 问题属性 出错频率 T1 登陆功能 无 T2 查找功能 根据软件说明书,实现查找图书的功能 缺陷 T4 统计功能 根据软件说明书,实现图书、读者信息统计的功能 完备 T5 创建文件 根据软件说明书,创建一个文件夹 缺陷 T6 清除文件 根据软件说明书,清除一个文件夹 缺陷 T7 添加文件 根据软件说明书,往文件夹中添加文件 缺陷 T8 删除文件 根据软件说明书,产出文件夹中的文件 缺陷 问题: 当输入错的数据类型时可能导致内存错误 解决方案: 无 白盒测试 目的 本方案主要实施产品程序代码的白盒测试。 使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。 保证局部模块功能完备性,运行正确性与稳定性。 测试项 所要测试的类: ClassReader读者类 ClassRDatabase读者库类 ClassBook图书类 ClassBDatabase图书库类 所要测试的函数: voidMainMenuinterface();//主菜单 voidMainMenufun();//主菜单功能实现函数 voidAdmininterface();//管理员界面 voidAdminfun();//管理员功能实现函数 voidReaderinterface();//读者信息界面 voidReaderfun();//读者功能实现函数 voidbookdatainterface();//图书信息界面 charFunExit();//系统退出函数 Voidsetname(charna[]);//设置姓名 Voidaddreader(intn,char*na);//增加读者 Voiddelbook();//设置删除 Voidborrowbook(intbookid);//借书操作 Voidretbook(intbookid);//还书操作 VoidRDatabase();//构造函数 voiddisp()//输出读者信息 voidclear()//删除所有读者信息 VoidReader*query(intreaderid);//按编号查找 Voidreaderdata();//读者库维护 Voidsetname(charna[]);//设置书名 voidaddbook(intn,char*na)//增加图书 Book*query(intbookid)//查找图书 voidbookdata();//图书库维护 ~BDatabase()//析构函数 save();//文件的保存 通过的准则 1.界面测试通过的标准: 界面的样式、大小、整体布局的设置;各种标签控件的使用及主题描述以及事件源控件的使用、快捷键使用。 2.程序代码通过的标准: 创建的类、接口、方法、属性应与详细设计保持一致;程序的各种命名、注释、代码行的格式等应符合命名标准和编码规范;程序模块能独立稳定运行。 (二)、经验与心得 经过这次的课程设计,深刻感受到我们所学到的c++语言到现在为止也只不过是冰山一角。 我们所编程序极其简单,但出错率却极高,编程过程中经常因为自己的马虎大意使程序混乱且错误很多。 对于c++的编程,我们还远达不到要求,以后我们会多加练习,在错误中吸取经验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息 资料 管理 系统 c+ 程序设计