数据库课程设计Word格式.docx
《数据库课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计Word格式.docx(34页珍藏版)》请在冰豆网上搜索。
要求:
1.培养学生自学参考书籍,查阅手册、图表和文献资料的能力。
2.了解与课程有关的工程技术规范,能正确解释和分析实验结果。
3.题目具有足够的工作量。
注:
1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;
2.此表1式3份,学生、指导教师、教研室各1份。
四、参考资料和现有基础条件(包括实验室、主要仪器设备等)
1.操作系统:
windows2000server中文版、windows2003Server或者WindowsXP
2.数据库:
SQLServer2005中文企业版
3.开发工具:
MicrosoftVisualStudio.NET2008企业版(C#)
4.面向对象程序设计(C++)
5、进度安排
得到课程设计的要求
查找课题的有关资料
完成课题任务书
完成课程设计
提交课程设计
六、教研室审批意见
教研室主任(签字):
年
月
日
七|、主管教学主任意见
主管主任(签字):
八、备注
指导教师(签字):
学生(签字):
图书管理系统设计目录
一.问题分析与功能定义..............................5
二、对象(类)设计及实现...........................6
3、核心控制设计...................................7
4、测试分析.......................................10
五、源程序代码.....................................13
六、总结...........................................25
七、参考文献.......................................26
八、致谢........................................26
图书管理系统设计
一、问题分析与功能定义
二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。
如何获取信息?
图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。
迫使人们起用新的管理方法来管理图书,但如何把图书管理员从繁重的工作中解脱出来呢?
科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。
信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。
因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。
1、设计内容及要求
设计一个图书馆管理系统,完成图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成一下功能,图书资料管理,可以添加、修改、删除、查询书籍信息,读者资料管理,可以添加、修改、删除、查询读者信息;
借书管理,可以进行添加借书信息;
还书管理,可以进行还书信息;
该项目是在VisualC++6.0的平台下用c++语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;
程序结束关闭并保存文件。
2、模块图
二、对象(类)设计及实现
1、概要设计
Reader读者类、RDatabase读者库类、Book图书类、BDatabase图书库类
classRDatabase//读者库类
inttop;
//读者记录指针
Readerread[Maxr];
//读者记录
RDatabase();
//构造函数,将reader.txt读到read[]中
voidclear();
//删除所有读者信息
intaddreader(intn,char*na);
//增添读者信息
Reader*query(intreaderid);
//按编号查找
voiddisp();
//输出所有读者信息
intReadernum();
//记录读者信息
voidreaderdata();
//读者库维护
~RDatabase();
//析构函数,将read[]写入reader.txt文件中
2、详细设计
1)类的原型描述
classReader//读者类
inttag;
//删除标记1:
已删0:
未删
intno;
//读者编号
charname[10];
//读者姓名
intborbook[Maxbor];
//所借图书
Reader(){}
char*getname()//获取姓名
intgettag()//获取删除标记
intgetno()//获取读者编号
voidsetname(charna[])//设置姓名
voiddelbook()//设置删除标记
voidaddreader(intn,char*na);
//增加读者
voidborrowbook(intbookid);
//借书操作
intretbook(intbookid);
//还书操作
//输出读者信息
classBDatabase//图书库类
//图书记录指针
Bookbook[Maxb];
//图书记录
BDatabase();
//构造函数,将book.txt读到book[]中
voidclear();
//全删
intaddbook(intn,char*na);
//增加图书
Book*query(intbookid);
//查找图书
//输出所有图书信息
voidbookdata();
//图书库维护
~BDatabase();
//析构函数,将book[]写入book.txt文件中
classBook//图书类
//删除标记1:
//图书编号
charname[20];
//书名
intonshelf;
//是否在架1:
在架0:
已借
Book(){}
char*getname();
//获取姓名
intgetno();
//获取图书编号
intgettag();
//获取删除标记
voidsetname(charna[]);
//设置书名
voiddelbook();
//删除图书
voidaddbook(intn,char*na);
//增加图书
intborrowbook();
//借书操作
voidretbook();
//还书操作
//输出图书
三、核心控制设计
1、在主函数中我们要做的操作包括:
(1)建立1个Reader读者类、1个RDatabase读者库类、1个Book图书类、1个BDatabase图书库类
(2)建立菜单界面。
完成以下内容:
①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑图书数据以及修改图书数据、维护图书的采购信息。
添加、删除、查看读者个人信息,浏览图书信息。
②能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。
(3)将图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。
(4)系统界面友好,易操作。
2、本程序应具备的功能:
A.添加、借阅、还书功能:
(1)添加读者和图书信息。
(2)借阅尚在架的图书。
(3)读者归还的图书。
B.查找功能
(1)根据图书的编号查找图书信息。
(2)根据读者的编号查找读者的信息。
C.系统的操作
(1)系统在进入时,要有菜单提示;
(2)系统在用户退出时,有一定的提示。
3、算法分析
1)添加操作:
(读者信息的添加与图书信息的添加类似)
包括两个部分,先通过输入设备输入信息,系统获取;
然后添加入读者数据库read.txt文件中。
㈠获取信息
voidReader:
:
addreader(intn,char*na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;
i<
Maxbor;
i++)
borbook[i]=0;
}
intRDatabase:
addreader(intn,char*na)//增添读者信息
{
der*p=query(n);
if(p==NULL)
{
top++;
read[top].addreader(n,na);
cout<
<
"
读者添加成功"
endl;
return1;
}
return0;
}
流程图:
㈡析构函数写入新读者的编号跟姓名
RDatabase:
~RDatabase()
{
fstreamfile("
reader.txt"
ios:
out);
for(inti=0;
=top;
i++)
if(read[i].gettag()==0)
file.write((char*)&
read[i],sizeof(read[i]));
else
file.close();
}
2)借书操作:
利用for语句和if语句,通过判断图书的borbook的编号是否为0,来判断图书是否未被借走或还没有被借完。
borrowbook(intbookid)//借书操作
for(inti=0;
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
3)还书操作:
利用for语句和if语句,通过判断图书的borbook的编号是否为要还书的编号,来判断是否借出此书。
intReader:
retbook(intbookid)//还书操作
for(inti=0;
{
if(borbook[i]==bookid)
borbook[i]=0;
return1;
else
continue;
}
(4)查找功能:
利用for语句和if语句,寻找与要查询的编号相同的读者编号或图书编号,如果找到,向系统返回相应的编号,输出相应的信息。
(读者的查找与图书查找类似)
Reader*query(intreaderid)//按编号查找
if(read[i].getno()==readerid&
&
read[i].gettag()==0)
return&
read[i];
returnNULL;
四、测试分析
(一)、此系统存在问题
1)未设登录密码保护系统,是整个图书管理系统失去了一定的安全性;
2)程序运行界面
此界面运行时选择4有时会出现内存读取错误;
1)当输入错的数据类型时可能导致内存错误;
2)读者、图书信息不完善;
3)命名不是很规范;
4)信息存储有限;
五、源程序代码
#include<
iostream>
iomanip>
string>
fstream>
//输入/输出文件流类
usingnamespacestd;
constintMaxr=100;
//最多的读者
constintMaxb=100;
//最多的图书
constintMaxbor=5;
//每位读者最多借五本书
//读者类,实现对读者的信息的描述
classReader
{
private:
inttag;
//删除标记1:
已删0:
未删
intno;
//读者编号
charname[10];
//读者姓名
intborbook[Maxbor];
//所借图书
public:
Reader(){}//构造函数
char*getname()
returnname;
}//获取姓名
intgettag()
returntag;
}//获取删除标记
intgetno()
returnno;
}//获取读者编号
voidsetname(charna[])//设置姓名
voiddelbook()//设置删除标记
tag=1;
voidaddreader(intn,char*na);
voidborrowbook(intbookid);
intretbook(intbookid);
voiddisp();
};
continue;
return0;
disp()//输出读者信息
cout<
setw(5)<
no<
setw(10)<
name<
"
借书编号:
["
;
if(borbook[i]!
=0)
borbook[i]<
|"
cout<
]"
//读者类库,实现建立读者的个人资料
classRDatabase
private:
inttop;
//读者记录指针
Readerread[Maxr];
//读者记录
public:
RDatabase();
//构造函数,将reader.txt读到read[]中
voidclear()//删除所有读者信息
top=-1;
intaddreader(intn,char*na);
//增添读者信息
Reader*query(intreaderid)//按编号查找
read[i].gettag()==0)
//输出所有读者信息
intReadernum();
//得到读者编号
voidreaderdata();
//读者库维护
~RDatabase();
//析构函数,将read[]写入reader.txt文件中
RDatabase()//构造函数,将reader.txt读到read[]中
Readers;
fstreamfile("
in);
while
(1)
file.read((char*)&
s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
file.close();
~RDatabase()//析构函数,将read[]写入reader.txt文件中
if(read[i].gettag()==0)
file.write((char*)&
else
file.close();
}
intRDatabase:
Reader*p=query(n);
voidRDatabase:
disp()//输出所有读者信息
read[i].disp();
Readernum()
returntop;
readerdata()//读者库维护
charchoice;
charrname[100];
intreaderid;
Reader*r;
do
cout<
\n\n\t\t\t欢迎进入读者维护界面\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"
cin>
>
choice;
switch(choice)
case'
1'
cout<
输入读者编号:
cin>
readerid;
输入读者姓名:
rname;
addreader(readerid,rname);
break;
2'
r=query(readerid);
if(r==NULL)
{
cout<
该读者不存在"
}
输入新的姓名:
r->
setname(rname);
3'
输入读者编号:
cin>
r=query(readerid);
if(r==NULL)
{
该读者不存在"
<
endl;
break;
}
r->
delbook();
case'
4'
读入读者编号:
该读者不存在"
disp();
5'
disp();
6'
clear();
default:
if(choice!
='
0'
)cou