图书管理系统 中国地址大学 数据库课程设计报告.docx
- 文档编号:11377627
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:17
- 大小:703.48KB
图书管理系统 中国地址大学 数据库课程设计报告.docx
《图书管理系统 中国地址大学 数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统 中国地址大学 数据库课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
图书管理系统中国地址大学数据库课程设计报告
数据库课程设计说明书
二O一一年12月
目录—-----------------图书管理系统
一、问题描述--------------------2
二、需求分析--------------------2
三、概念模型设计----------------2
四、逻辑结构设计----------------3
五、特殊功能介绍(含用户手册)--3
六、遇到的问题------------------7
七、心得体会-------------------9
八、附特殊功能的部分代码-------9
一、问题描述
1、设计目标
为优化学校图书馆的检索系统,学以致用,自己利用所学的知识,开发了一个学校图书管理系统,具有基本的查询、删除、增加图书功能,此外,增加了新生注册功能,以及修改密码的功能,检索系统除按类别检索外,设计了按关键字匹配检索功能。
具有一定数量的数据,基本具有必要的功能,能够管理一个小型的图书管理系统。
在此基础上,模拟实现了网上借书、还书功能。
方便易于实现,大大减少了校管理员管理工作量。
其中,数据库中包含学生的基本信息,管理员基本信息,以及学校所书本的具体信息。
通过此次课程设计,把数据库理论知识与VC相结合,巩固加深了对SQL查询语句以及数据库查询的理解。
2、设计环境
① MicrosoftSQLServer2008
② MicrosoftVisualC++6.0
二、需求分析
1、系统功能分析
(1)使得学生查找数目更加方便、快捷。
(2)使得图书管理工作更加清晰和自动化。
(3)通过用户名和密码登录系统,查询校图书资料,修改图书资料,修改用户密码等功能;方便、快捷地完成图书信息的查询操作。
(4)设计人机交互的界面,合理安排布局,增加背景图片,使得界面更加人性化。
2、模块设计
(1):
图书基本信息模块,包含有对图书信息的按类查询、按关键字查询、删除、修改、增加等。
(2),学生基本信息模块。
(3):
用户登录模块。
系统流程图:
3、关系模式
下表列出了本数据库的表单。
利用SQLServer2008建立“学生图书”数据库,其表清单及表结构描述如下:
Users表:
列名
数据类型
允许NULL值
UserName
nchar(10)
不允许
UserPswd
nchar(10)
允许
UserType
Int
允许
Students表:
S_ID
nchar(10)
不允许
S_Name
nchar(10)
允许
S_Dep
nchar(10)
允许
S_Sex
nchar(10)
允许
S_Sta
nchar(10)
允许
S_Age
nchar(10)
允许
S_Addr
nchar(10)
允许
Books表:
B_ID
nchar(10)
不允许
B_Name
nchar(10)
允许
B_Kind
nchar(10)
允许
B_Work
nchar(10)
允许
B_Writer
nchar(10)
允许
B_Ref
nchar(10)
允许
StuBook表:
S_ID
nchar(10)
不允许
B_ID
nchar(10)
允许
三、概念模型设计
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:
学号,姓名,性别,地址,年龄,院系,入学年份。
(2)书本基本信息:
图书编号,书名,出版社,类别,作者,状态。
这些实体间的联系包括:
每位学生可以借阅多本书,每本只能供一位学生借阅。
由上述分析可得到系统的E—R图:
四、逻辑结构设计
(1)学生(学号,姓名,性别,年龄,地址,系别),其主键为学号;
(2)书本(图书编号名,图书名,作者,出版社,状态),其中主关键字为图书编号;
(3)联系集(图书编号,学号)其中主键为学号和图书编号。
五、特殊功能介绍(含用户手册)
a、用户登录
包括管理员登录与学生登录,“登录用户名”中输入学号,“登录密码”中输入密码,若密码正确方可登录,错误则跳出下面右图所示的提示对话框,点击“确定”重新输入密码:
b、注册
新生在录取进校后,在学校的学生个人信息Students表格中具有相应的记录,但是却未注册成为校图书馆的用户,故在此设定新生注册功能,点击“注册”按钮,进入注册页面,如下图所示,
算法:
在Students表单中查询输入的学号,若存在该学生,则允许注册,否则不能注册!
此外,输入密码前后不一致,系统会报错,如下图所示:
c、修改密码
对于已经注册的用户,若因为密码强度过低或密码被盗,可以选择修改密码,密码支持10以内的字符。
键入属性值之后,点击修改即可,然后返回登陆界面,即可登录。
d、主界面
成功登录进去之后,出现主界面,如下图所示。
界面分为七个模块,分别为个人信息、图书信息、管理员区域、图书信息、学生借书区域、在校图书显示区和查找区。
每个区功能独立,完备,在右下角可点击查询“已借阅书籍”、“匹配查询”、“刷新”、“图书馆介绍”、“匹配查询”等按钮,响应相应的功能。
界面添加了背景图片,使得图书管理系统更加人性化,给用户以更好的视觉感受。
这点是学校的图书馆检索系统所要改善的,使用图形化的界面,添加合适的背景图片,丰富多彩的颜色,可以给用户一种更好的享受!
e、匹配查询
本数据库查询系统在一般查询(即按书名、编号、出版社、作者查询)的基础上还支持按关键字匹配查询,方便了广大用户查找不知道全名的书本,为用户提供了更人性化、快捷的功能。
f、已借阅书籍查询
每一个登录进去的用户,都对应一个响应的对话框,显示该用户所借阅的书籍,在这个页面上,可以模拟用户还书,点击“还书”按钮即可,系统自动刷新显示当前用户所借的书籍;返回主界面后,点击“刷新”按钮,即可刷新显示在校图书的当前状态。
g、图书馆介绍
在图书管理功能中,新增图书馆介绍功能,显示图书馆的历史,藏书量,配合图片,更加合理的将校图书馆展现在各用户面前!
h、在这里,查找,(管理员)添加、删除、修改功能均可正常使用,不再熬述
六、遇到的问题
1、数据库连接不上(异常处理问题)
程序在执行的时候跳进了下面这个catch
CATCH(CDBException,ex){AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
导致无法实现修改密码的功能。
找到的原因:
数据库未打开。
添加如下语句:
m_database.open(_T("数据源"));成功打开数据库!
2、字符串匹配问题
由于在VC中用Edit控件中输入的内容会出现单引号('s%'),来获得关联变量的值,在语句执行时%有可能引起错误;
如何避免这种因为输入内容中包含(‘%')引起的错误,,实现按关键字查询,目前还存在一点问题,尚在修改中。
3、自然连接问题
本数据库共有四张表格,分别是Students,Books,Users,StuBook,将用户表Users与学生个人信息表Students做自然连接,并显示在主界面的个人信息栏中的edit空间中,出现问题,无法显示。
途径:
通过两次查询,成功实现;第一次查询出Users表中登录用户的ID,第二次查询出Students表中该ID对应的属性。
显示情况如下(对应不同的登录用户):
七、心得体会
这次的数据库课程设计在历时两个多周终于完成,完成了除PDF上的基本功能,还实现了自然连接,字符串匹配查询,借书、还书等等功能,采用人性化的界面,使得该图书管理系统更加接近应用阶层。
通过此次的数据库课程设计,我进一步深入理解数据库设计的整个过程,历经各个阶段:
系统的需求分析、数据库概念结构设计等,综合掌握了程序设计技术VC和SQLServer的结合设计;熟悉并练习了SQL语言在编程中的使用,提高了实现目标代码得能力及调试代码的能力。
八、附特殊功能的部分代码
a、修改密码:
voidCEditDlg:
:
OnBUTTONok()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();//
m_database.Open(_T("123"));//打开数据源
//C2dlg2;
if(m_name=="")
{
MessageBox("请输入用户名");
return;
}
if(m_newpswd=="")
{
MessageBox("请输入新密码");
return;
}
if(m_okpswd=="")
{
MessageBox("请输入确认密码");
return;
}
if(m_oldpswd=="")
{
MessageBox("请输入旧密码");
return;
}
CUserSetm_UserSet;//用户记录集对象
CStringstrSQL;
CStringstrSQL1;//?
strSQL.Format("select*fromUserswhereUserName='%s'andUserPswd='%s'",m_name,m_oldpswd);
m_UserSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);//打开用户表
if(!
m_UserSet.IsEOF())//如果存在该用户&&(m_oldpswd==m_UserSet.m_UserPswd)
{
CStringm=m_newpswd;
CStringm1=m_name;
strSQL1.Format("UpdateUsersSETUserPswd='%s'whereUserName='%s'",m_newpswd,m_name);//m_newpswd,m_name
//strSQL.Format("UpdateBooksSETB_Name='%s',B_Kind='%s',B_Writer='%s',B_Work='%s',B_Ref='%s'whereB_ID='%s'",m_bname,m_bkind,m_bwriter,m_bwork,m_bref,m_bid);
DoExecuteSQL(strSQL1);
//strSQL1="select*fromUsers";
//DoExecuteSQL(strSQL1);
MessageBox("修改成功!
");
}
else
{
MessageBox("用户信息不正确,无法修改!
");
}
CDialog:
:
OnOK();
}
b、新生注册:
voidCRegi:
:
OnBUTTONregi()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_database.Open(_T("123"));//打开数据源
CStuSetm_stu;
CStringstrSQL;
CStringstrSQL1;
strSQL.Format("select*fromStudentswhereS_Name='%s'",m_name);
m_stu.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);//打开学生表
if(!
m_stu.IsEOF())//如果存在该学生
{
strSQL1.Format("insertintoUsersVALUES('%s','%s')",m_name,m_pswd);//向表Employees插入一条新记录
DoExecuteSQL(strSQL1);
MessageBox("注册成功!
");
}
}
c、匹配查询
voidCpipei:
:
OnBUTTONok()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
//m_database.Open(_T("123"));//打开数据源
CStringstrSQL,strField,str;
if(m_box=="编号")
strField="B_ID";
if(m_box=="书名")
strField="B_Name";
if(m_box=="类别")
strField="B_Kind";
if(m_box=="出版社")
strField="B_Work";
if(m_box=="作者")
strField="B_Writer";
strSQL.Format("select*fromBookswhereB_Namelike'红%'");
//strSQL.Format("select*fromBookswhere%slike'红%'",strField);//%s,m_main
//selectcustomer-name
fromcustomer
wherecustomer-streetlike‘%Main%’
CBookSetm_TeacherSet;
try
{if(m_TeacherSet.IsOpen())
m_TeacherSet.Close();
m_TeacherSet.Open(CRecordset:
:
snapshot,strSQL);//执行查询
//判断数据库中是否有记录,如果没有则退出
if(m_TeacherSet.GetRecordCount()==0)
{
MessageBox("无此记录");return;
}
else
{//将查询出来的第一条记录显示在编辑区
ListAll(strSQL);//将查询出来的全部记录显示在列表视图中
}
}
catch(CDBException*e)//异常捕获
{e->ReportError();return;}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书管理系统 中国地址大学 数据库课程设计报告 图书 管理 系统 中国 地址 大学 数据库 课程设计 报告