1、 SQL数据库课程设计 20 2020年4月19日 文档仅供参考 课程设计(论文)任务书 一、课程设计(论文)题目: 图书管理系统 二、课程设计(论文)工作: 自 年 12 月 22日起 三、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握数据库开发的基本工作流程; (2)巩固数据库课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求
2、 (1)研究课程设计任务,并进行系统需求分析; (2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作; (3)实现各功能模块代码; (4)组装各模块,并测试、完善系统。 2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。 3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结 (3)论文装订按学校的统一要求完成 4)参考文献: (1)《数据库系统概论》(第四版) 王珊、萨师煊编著 高等教育出版社 (2)《SQ
3、L-结构化查询语言详解》 高守传编著 人民邮电出版社 (3)《Visual C++.NET程序设计实用教程》 曾宪权编著 清华大学出版社 5)课程设计进度安排 内容 天数 地点 系统总体设计 2 实验室 软件设计及调试 4 实验室、图书馆 撰写报告 2 实验室、图书馆 答辩 2 实验室 学生签名:
4、 课程设计(论文)评审意见(建议单独一页 (1)课程设计过程(20分):优( )、良( )、中( )、一般( )、差( ); (2)是否完成调试,系统运行效果(30分):优( )、良( )、中( )、一般( )、差( ); (3)回答问题(20分):优( )、良( )、中( )、一般( )、差( ); (4)课程设计报告(30分):优( )、良( )、中( )、一般( )、差( ); (5)格式规范性及考勤是否降等级:是( )、否( ) 评阅人: 职称: 讲师 目录 一 项目内容、要求与分组情况
5、总体介绍 1 二 概要设计 1 2.1开发工具及环境 1 2.2 系统设计任务分析 2 2.3 系统相应数据字典及实体联系图 2 2.4 系统功能流程图 4 三 具体实现 5 3.1 数据库的建立语句 5 3.2系统运行界面及部分功能的实现和介绍 6 3.3 数据库与VC的连接实现 13 四 设计体会与小结 14 五 参考文献 15 一 项目内容、要求与分组情况总体介绍 本实验的目标是利用数据库实现一个简单的图书管理系统,实现了管理员登录、图书查询、图书借阅、图书增删、图书借阅排行榜以及其它一些对图书以及用户进行管理的功能。 二
6、概要设计 2.1开发工具及环境 开发工具:Microsoft SQL Server 、Visual Studio .net 以及Visual C++ 6.0 操作系统:windows XP或win7等windows操作系统 运行环境:VC++6.0、Microsoft SQL Server 2.2 系统设计任务分析 使用所学知识,根据图书管理系统所要实现的具体功能要求,利用数据库以及其它开发工具和语言,完成以下任务: (1) 图书管理系统数据库的建立及数据库所需信息的分析; (2) 图书管理系统界面布局及窗口设计; (3) 图书管理系统相关控件及子窗口的设计;
7、4) 图书管理系统相关控件及功能的具体实现; (5) 运行测试程序,调试并纠正运行错误; (6)调试无误,运行程序,测试具体功能并对系统进行相关优化。 2.3 系统相应数据字典及实体联系图 系统所需数据字典一览表: Admin 管理员 备注 字段 类型 字长 是否允许为空 是否为主键 管理员号 userid char 10 N PRI 密码 passward char 10 N Bookid图书 备注 字段 类型 字长 是否允许为空 是否为主键 图书编号 ISBN_ID char 10 N 书名编号 book
8、id char 10 N PRI Booktype图书属性 备注 字段 类型 字长 是否允许为空 是否为主键 图书编号 ISBN_ID char 10 N PRI 书名 book_name char 20 N 出版时间 yeartime char 10 Y 作者 actor char 20 Y 书的类型 book_type char 20 Y 书本数 allnumber int Y 剩下书本数 lastnumber int Y Borrow借书还书记录 备注 字段
9、 类型 字长 是否允许为空 是否为主键 借书证号 reader_id char 10 N PRI 书名编号 book_id char 10 N PRI 借书时间 borrow_time char 12 N 应还书时间 return_time char 12 N 实还书时间 fact_time char 12 Y 是否未还书 return int N Position方位(存放位置) 备注 字段 类型 字长 是否允许为空 是否为主键 书号 ISBN_ID char 10 N PRI
10、 方位 book_position char 30 N Readertype 图书借阅者 备注 字段 类型 字长 是否允许为空 是否为主键 借书证号 reader_id char 10 N PRI 人名 reader_name char 10 N 学历 type char 10 N Type学历 备注 字段 类型 字长 是否允许为空 学历 type char 10 N PRI 可借书数 number char 10 N 实体及其属性图: 实体
11、及其联系图: 管理员登录 2.4 系统功能流程图 系统 修改密码 用户登陆 超级管理员登录 退出登录 图 书 管 理 系 统 读者类型管理 读者管理 读者类型设置 添加图书 图书管理 借书管理 还书管理 借阅管理 续借管理 图书查询 系统查询 帮助 三 具体实现 3.1 数据库的建立语句 CREATE TABLE admin (userid char(10) NOT NULL,
12、 passward char(10) NOT NULL, primary key(userid) ) ;//管理员登录信息 CREATE TABLE bookid (ISBN_ID char(10) NOT NULL, book_id char(10) NOT NULL, primary key (book_id) );//图书编号及书名编号 CREATE TABLE booktype (ISBN_ID char(10) NOT NULL, book_name char(20) NOT NULL, yeartime
13、 char(10) NULL, actor char(20) NULL, book_type char(20) NULL, allnumber int NULL, lastnumber int NULL, PRIMARY KEY (ISBN_ID) );//图书属性信息 CREATE TABLE borrow (reader_id char(10) NOT NULL, book_id char(10) NOT NULL, borrow_time char(12) NOT NULL, return_time char(1
14、2) NOT NULL, fact_time char]12) NULL, returned char(2) NOT NULL , primary key(reader_id,book_id), foreign key(reader_id) references readertype(reader-_id), foreign key(book_id) references booktype(book_id) );//图书借阅者借阅情况的信息 CREATE TABLE position (ISBN_ID char(10) NO
15、T NULL, book_position char(30) NOT NULL, primary key(ISBN_ID), foreign key(ISBN_ID) references booktype(ISBN_ID) );//图书放置位置信息 CREATE TABLE readertype (reader_id char(10) NOT NULL, reader_name char(10) NOT NULL, type char(10) NOT NULL, primary key(reader_id)
16、 );//图书借阅者信息 CREATE TABLE type (type char(10) NOT NULL, number char(10) NOT NULL, primary key(type) );//图书借阅者类型 3.2系统运行界面及部分功能的实现和介绍 (1)系统主界面如下: 主界面框架具体由以下函数实现: CLMSystemDoc::~CLMSystemDoc() { } BOOL CLMSystemDoc::OnNewDocument() { if (!CDocument::OnNewDocument
17、)) return FALSE; SetTitle("图书管理系统"); return TRUE; } 相关子选项的功能函数也与主框架类似,更改相应的控件名称即可。 在主界面中添加图片的函数主要由一下代码实现: void CLMSystemView::OnDraw(CDC* pDC) { CLMSystemDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CDC dc; dc.CreateCompatibleDC(pDC); CBitmap bitmap; bitmap.L
18、oadBitmap(IDB_BITMAP2); dc.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); BITMAP bmp; bitmap.GetBitmap(&bmp); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,bmp.bmWidth,bmp.bmHeight, SRCCOPY); // TODO: add draw code for native data here } 在此函数中,只要相应的更改图片的I
19、D以及相应的更改图片的存储路径,即可实现不同的图片插入到主界面中,实现主界面的美化。 (2) 管理员登录界面: void CEntry::OnOK() { UpdateData(); CString strSQL; strSQL.Format("select passward from admin where userid='%s'",m_IDEdit); if (m_PasswardEdit==DBOpt.PasswardReturn(strSQL)) { CDialog::OnOK(); } else { M
20、essageBox("用户名或密码不正确!"); } } 经过Format函数实现界面与数据库的联系,判断登录信息是否正确,如果不正确,弹出一个警告窗口。 (3) 读者类型管理: 经过该界面能够增删读者信息,用户即读者的借书证号,增加、删除以及修改按钮控件的操作分别对应着数据库中对readertype表进行的插入、删除以及更新操作。 下面以删除读者类型按钮的功能实现为例,实现如下: void CTypeSet::OnDeletebutton() { CString strSQL; strSQL.Format("select * from readertype
21、where type='%s'",m_typeEdit); DBOpt.ReadReaderType(strSQL); if (DBOpt.curItem>0) { MessageBox("存在此类型用户,不能删除!"); return; } strSQL.Format("delete type where type='%s'",m_typeEdit); DBOpt.ReaderTypeOperate(strSQL); UpdateMessage(); } (4) 读者类型设置: 经过该界面能够添加或删除一些用户的类型,其中增加类型、修改以及删除该
22、类型控件的操作分别对应着对数据库中type表进行插入、更新以及删除的操作,与数据库相连接的具体实现语句如下: “增加类型”控件与数据库连接的实现语句: strSQL.Format("insert into type(type,number) values('%s','%d')",m_typeEdit,number); DBOpt.ReaderTypeOperate(strSQL); “修改”控件与数据库连接的实现语句: strSQL.Format("update type set number='%d' where type='"+m_typeEdit+"'",numbe
23、r); DBOpt.ReaderTypeOperate(strSQL); “删除该类型”控件与数据库连接的实现语句: strSQL.Format("select * from readertype where type='%s'",m_typeEdit); DBOpt.ReadReaderType(strSQL); if (DBOpt.curItem>0) { MessageBox("存在此类型用户,不能删除!"); return; } strSQL.Format("delete type where type='%s'",m_typeEdit);
24、 DBOpt.ReaderTypeOperate(strSQL); (5) 添加图书界面: 经过该界面能够添加一些图书馆新引进的图书,相当于对数据库中的booktype以及book、position表做了个连接,并对其相关内容都做了插入的操作。 (6)借书管理界面: 经过该界面能够实现对读者借书的管理,经过借书证号以及图书编号来确定读者借书记录的存储,并在数据库中插入相应的借书记录。 (7) 还书管理界面: 在该界面中可根据输入的借书证号从列表中获得借书情况,可直接勾选要书的ISBN图书编号还书,也可输入图书编号后点击还书按钮。点击还书后则会相应的更新该读者在数
25、据库中相关的借书信息,使得return标记为1即已还该书。 (8) 续借管理界面: 经过该界面能够实现图书的续借管理,主要的实现功能函数如下: strSQL.Format("update borrow set return_time='%s' where book_id='%s' and returned='0'",strTime,strISBN); DBOpt.ReaderTypeOperate(strSQL); strSQL.Format("select * from borrow where reader_id='"+m_readerEdit+"'and returne
26、d='0'");
DBOpt.BorrowOperate(strSQL);
for ( i=0;i 27、面
在该界面中,每个编辑框都相当于数据库中的一个索引,输入相应的信息便能在列表中列出相关的图书信息,能够很方便的查找到相关图书以及图书的其它有用的信息。
(10) 借阅排行榜界面:
经过该界面能够查看读者借阅的排行也能够查看读者借阅图书的排行,经过该界面能够让管理员更好的了解读者的需求,引进能够满足读者借阅需求的相应图书数量。
3.3 数据库与VC的连接实现
经过初始化COM库,引入ADO库定义文件,用Connection对象连接数据库,利用建立好的连接,经过Connection、Command对象执行SQL命令,使用完毕后关闭释放连接对象。执行后会生成一个. 28、dul的文件,打开后会出现以下界面:
四 设计体会与小结
在这次课程设计的过程中,我主要负责搭建该图书系统的主界面和各个子窗口的控件搭建,在搭建模块和窗口的同时我更进一步的熟悉了.net中每个控件的不同使用方法和不同的应用范围,对MFC的理解也有进一步的加深。
经过这次的课程设计,让我感觉更深刻的就是和组员之间的相互配合是该系统能够成功实现相应简单功能的关键,每个人都有自己的长处,所谓“闻道有先后,术业有专攻”,发挥各自的长处相互配合,遇到问题时一起讨论,共同出力来想办法解决,在这次课设中发现了团队合作的重要性,在以后的学习生活 29、中也要继续的坚持着这种团队合作的精神,和团队和集体共同努力,发挥自己的长处,实现自己想要或是当下需要完成的目标。
图书管理系统功能的实现,使我对数据库的认识从一个抽象的认识进入到了一个具体的认识的境界,让我更加深入的了解到了数据库在工程和项目中的具体应用,而不是仅仅停留在一个从理论上认识的层次,经过相互讨论分析图书管理系统所需完成的基本任务和功能,结合大家的认识做了个简单的需求分析,又经过数据字典的创立基本抽象出实体之间的联系,在此基础上我们建立了所需的数据库BOOK,用来实现图书管理信息在计算机中的存储,为图书管理员提供了方便。
经过这次的课程设计我学到了很多以前并不是很了解的知识,最主 30、要的是学会了如何经过VC连接到数据库,即了解了如何将数据库语句嵌入到程序和软件当中,如何真正的使数据库的建立有其存在的意义,如何充分的利用数据库实现数据存储以及如何利用不同的方式如ADO或ODBC等实现数据库和界面进行交互,为用户提供一个应用程序接口API,这些认识和收获在以后的学习生活中仍能够起到很重要的作用。
在此系统中,具体的功能实现是由另外两名组员完成的,也正是因为如此,我发现了自己在利用语言实现函数功能上的欠缺,在以后的学习生活中还要继续加强自己在程序语言上的学习。
五 参考文献
[1]《数据库系统概论》(第四版) 王珊、萨师煊编著 高等教育出版社
[2]《SQL-结构化查询语言详解》 高守传编著 人民邮电出版社
[3]《Visual C++.NET 程序设计实用教程》 曾宪权编著 清华大学出版社






