数据库课程设计报告

上传人:无*** 文档编号:40951026 上传时间:2021-11-18 格式:DOC 页数:22 大小:1.08MB
返回 下载 相关 举报
数据库课程设计报告_第1页
第1页 / 共22页
数据库课程设计报告_第2页
第2页 / 共22页
数据库课程设计报告_第3页
第3页 / 共22页
点击查看更多>>
资源描述
数据库课程设计报 告班级: 姓名: 学号: 指导老师: 2011年12月24日课程设计说明12月初数据库课程开始进行课程设计,第一次上机面对老师的上机要求我感觉实现一个数据库系统挺复杂。当时自己所在的一个项目组正好需要做一个单机版的数据库,于是我带着强烈的热情和较高的目标开始认真地做课程设计。经过在图书馆一周的针对性学习,我对MFC的ODBC技术有了深入的理解,对完成一个数据库系统的步骤和方案有了初步了解。第二次上机,我开始模仿老师提供的PDF文档案例进行我的数据库设计。通过三次上机,通过不断地查阅资料不断地与同学交流,我终于完成了系统的雏形。虽然给老师验收了,但我知道初始的系统有很多的漏洞与缺陷,在之后的课余时间内我不断地测试优化,遇到问题并解决问题,最终实现了一个相对较完善的系统。虽然这个系统只是个简单的单机数据库系统,但它是通过自己一步步的学习、循序渐进的实践编写完成的,它的里面充满着自己学习的痕迹,所以我将把它进一步完善并作为自己以后数据库编程的基础。系统使用说明书:功能:1.对教师信息的管理与查询;2.对图书信息的管理查询与借阅操作方法:1.进入登录界面,需要输入用户名和密码; 2.数据库已存有的用户名有:管理员“20091001695”,普通用户“20091002718”等,其密码都是“123”;3.进入教师系统,如果是管理员则可以对信息进行添加修改删除操作,普通用户只能查看信息;4.进入图书系统,如果是管理员则可以对信息进行添加修改删除操作,普通用户只能查看信息,管理员与普通用户都可以进行借阅归还查看自己的借阅情况操作。目 录1、 立题 04 1.基本要求 042.确定主题 042、 需求分析 051. 数据库分析 051) 表的数目及属性 052) 采用SQL Server 2008 052. 编程语言选择 053. 资料准备 053、 系统设计 061. 教师管理系统设计 061) 数据库设计 062) 安装SQL,定义数据源 073) 创建MFC AppWizard应用程序 074) 用ClassWizard 为数据库中的每一个表映射一个记录集类 075) 教师信息管理系统界面设计 086) 几个主要函数的实现 097) 设计登录对话框 102. 图书借阅与管理系统设计 111) 该系统基本类的添加 112) 新对话框设计 113) 关键函数操作 124、 系统优化与完善 161. 漏洞发现与解决 162. 界面优化 175、 总结难点与亮点 176、 最终版运行结果 187、 收获与展望 221、 立题1. 基本要求课题背景:现计算机系有一批书作为公共书籍供全系老师借阅。本课程设计针对这一情况做一个应用程序进行借书的管理。基本功能:对书籍信息的维护,比方说增加,删除,以及修改书籍信息。扩充功能:由于计算机系正处于成长阶段,为了增强教师力量,会引进新的人才,还会进一步细化教研室。各个教研室的老师也有可能互相调动。目前本系有三个教研室:网络,应用,软件。还有一些老师不属于任何一个教研室,即不从事于教学,但属于本系的领导及办公人员,他们也可以借阅书籍。所以有余力的话,此课程设计也应有管理教师信息的功能。技术要求:a用ACCESS或SQL SERVER 2000 建库,库如何建自由发挥。b用Delphi,也VB,VC等开发应用程序访问,维护数据库。2. 确定主题根据设计基本要求,实现该系统可以分为两大步,即可以分解成对“教师信息管理系统”和“图书借阅管理系统”这两个系统的设计。由于胡老师提供的pdf资料上有类似“教师信息管理系统”的数据库开发案例,阅读过后我发现该案例操作步骤清晰明了,每一个细节都说得比较详细,所以第一步将设计“教师信息管理系统”这一初始系统,在完成该系统的基础上再自由发挥完成“图书借阅管理”这一完善系统。综上分析,我已经明确自己的设计目标与思路了。目标就是实现一个数据库管理系统,该系统包含两个子系统:一个子系统能够对教职工信息进行管理,另一个子系统能够实现管理员对图书的管理以及教职工对书籍的借还操作。在此做一下说明,下文对该两系统简称为系统一系统二。2、 需求分析1. 数据库分析 1)表的数目及属性本系统需要定义一个数据库用于存储登录者、教师、图书等信息,系统一需要建立两张表,即登录者表和教师信息表,系统二也需要两张表,即图书信息表还有教师与图书之间的借阅关系表。所以本数据库一共需要设计四张表。登录者表应该有三个属性:有户名、用户密码以及用户权限;教师表可以有一下属性:职工编号、姓名、所在部门、性别、出生年月、职称、文化程度、毕业学校、政治面貌、联系电话;图书表可以有:书号、书名、作者、出版社、剩余量、借阅者等属性;借阅关系表应该有以下属性:借阅者号、书号。 2)采用SQL Server 2008通过学习我了解到常用的数据库管理系统(DBMS)主要可以总结为以下几类: a.基于PC的有Microsoft的Access(和FoxPro);b.基于网络的有SQL Server 和Oracle ;它们都提供了一个SQL接口,差别主要是存储量的差别。本系统因为目标是设计在单机上运行,所以完全可以用Access做,但由于我们数据课程讲授的是SQL Server数据库,所以为了巩固所学知识,为了现学现用我决定选择SQL最新的08版做数据库。2. 编程语言的选择目前我接触的计算机编程语言主要用C语言、汇编语言、C+、JAVA,而对VC+的基于MFC编程相对熟练,本系统恰好需要有可视化界面,所以我果断的选择利用VC6.0基于MFC的对话框编程完成本系统。3. 资料准备除了数据库课本,老师提供的pdf资料,我还去图书馆借来了一本数据编程实例书籍,当然每次上机还拥有强大的网络资源支持。3、 系统设计1) 教师管理系统设计1.数据库设计利用SQL Server 2008创建一个数据库 TeacherDB.sql, 其中包含四张表 ,用户登录表 Users 、教师基 本信息表Teachers、图书信息表BOOK以及借阅关系表Borrow,其详细定义如下:用户口令表 Users 的结构 序 号 字段名 字段类型 字段大小 字段含义 1 UserName 文本 10 用户名 2 UserPswd 文本 15 口令 3 UserType 数字 整型 用户类型,0:系统管理员,1:普通用户 教师基本信息表 Teachers 的结构 序 号 字段名称 字段类型 字段大小 说 明 1 Emp_ID 文本 12 职工编号 2 Emp_Name 文本 15 职工姓名 3 Department 文本 30 所在部门名称 4 Sex 文本 2 职工性别 5 Birthday 文本 10 出生年月 6 Title 文本 10 职称 7 Culture_Level 文本 10 文化程度 8 GraduateSchool 文本 30 毕业学校 9 Political_Party 文本 8 政治面貌10 Telephone 文本 12 联系电话 22图书信息表 BOOK的结构 序 号 字段名称 字段类型 字段大小 说 明 1 BOOK_ID 文本 10 书号 2 BOOK_NAME 文本 15 书名 3 BOOK_WRITER 文本 15 作者 4 BOOK_PUBLIC 文本 20 出版社5 BOOK_AVAILABLE 文本 10 剩余量6 BOOK_BORROW 文本 10 借阅者借阅关系表 Borrow的结构 序 号 字段名 字段类型 字段大小 字段含义 1 Emp_ID 文本 12 借阅者号2 BOOK_ID 文本 10 书号其中Users主码为用户名 、Teachers 主码为职工编号、BOOK主码为书号、Borrow主码为借阅者和书号两者。2. 安装SQL Server 2008,定义数ODBC据源1) 前几节上机,我是利用机房电脑编程的,机房装的是SQL Server 2000,用起来相对好用,但是由于机房机器装了还原卡,每次上机都要重新导入数据库,相对麻烦。之后,我决定带自己电脑去编程,我首先要在自己电脑上安装数据库管理系统,SQL Server 2008系统较2000更加稳定,但是其安装较麻烦,我通过跟着安装视频花了半天终于安装08成功。2)定义ODBC数据源建立了数据库之后,必须配备 ODBC 数据源,使其指向刚刚建立的数据库。选择“控制面板”中“管理工具”下的“数据源(ODBC)”项。 双击 ODBC 图标,弹出“ODBC 数据源管理器”对话框。在这里用户可以设置数据源的一些信息,其中的“用户 DSN”选项卡是用户定义的在本地计算机上使用的数据源名(DSN),如图 7.3 所示。 定义用户 DSN 的步骤如下。 (1) 单击“添加”按钮,弹出“创建新数据源”对话框,如图 7.4 所示。 图 7.3 “ODBC 数据源管理器”对话框 图 7.4 “创建新数据源”对话框 (2) 为新的数据源选择数据库驱动程序。由于使用的是 sql数据库,所以选择 Microsoft SQL选项,并单击“完成”按钮。 (3) 为该数据源起了一个名字TeacherDB。 3. 创建 MFC AppWizard 应用程序 用 MFC AppWizard(exe)创建一个对话框应用程序 TeacherMIS。为了是程序支持数据库对象,在头文件 stdafx.h 中加入#include。 4. 用 ClassWizard 为数据库中的每一个表映射一个记录集类 具体映射过程相对简单,老师给的pdf资料上有详细步骤,这里我以BOOK表为例映射一个记录类集。 定义记录集类CBookSet为 CBookSet 类选择 ODBC 数据源 为 CBookSet 类选择数据库表 5. 教师信息管理系统界面设计由于该系统基本是参照pdf编程案例设计的,所以界面设计近似其界面,截图如下: 对话框控件属性、关联变量和消息处理函数 6. 几个重要变量的定义及函数的实现1) 变量定义需要为CSunlight1210Dlg对话框类添加一个Public成员变量int m_UserType,用于记录用户类型,添加一个Protected成员变量CDatabase m_database,用于打开、关闭数据源。2) 函数定义1 初始化函数OnInitDialog()该函数用于初始化对话框,在其中主要实现登录者权限的识别以及列表框的初始化工作。操作见源程序。2 添加 Private 成员函数 ListAll(CString strSQL)该函数主要作用是将数据库中某个表的某些记录显示出来,它可以被添加、修改、删除函数调用。其中需要利用记录集的对象对表进行操作,实现代码如下:void CSunlight1210Dlg:ListAll(CString strSQL)m_ListTeacher.DeleteAllItems(); /清空列表视图CTeacherSet m_teacherset; /定义教师记录集对象try if(m_teacherset.IsOpen() /如果记录集是打开的,关闭之m_teacherset.Close(); if(!m_teacherset.Open(CRecordset:snapshot,strSQL) /以 snapshot 的方 式打开教师表,如果不能打开,报错处理MessageBox(打开数据库失败!,数据库错误,MB_OK); return ; catch ( CDBException *e ) / 异常捕获 e-ReportError(); int nIndex=0; /列表视图指向第 1 行m_teacherset.MoveFirst(); /记录指针指向第 1 条记录while(!m_teacherset.IsEOF() LV_ITEM lvItem; lvItem.mask=LVIF_TEXT; lvItem.iItem=nIndex; /行lvItem.iSubItem=0; /列lvItem.pszText=; m_ListTeacher.InsertItem(&lvItem); /在列表视图中插入一行,每行 10 列m_ListTeacher.SetItemText(nIndex,0,m_teacherset.m_Emp_ID); m_ListTeacher.SetItemText(nIndex,1,m_teacherset.m_Emp_Name ); m_ListTeacher.SetItemText(nIndex,2,m_teacherset.m_Department); m_ListTeacher.SetItemText(nIndex,3,m_teacherset.m_Sex); m_ListTeacher.SetItemText(nIndex,4,m_teacherset.m_Birthday); m_ListTeacher.SetItemText(nIndex,5,m_teacherset.m_Title); m_ListTeacher.SetItemText(nIndex,6,m_teacherset.m_Culture_Level); m_ListTeacher.SetItemText(nIndex,7,m_teacherset.m_GraduateSchool); m_ListTeacher.SetItemText(nIndex,8,m_teacherset.m_Political_Party);m_ListTeacher.SetItemText(nIndex,9,m_teacherset.m_Telephone); m_teacherset.MoveNext(); /后移记录 nIndex+; /行数加 1 m_teacherset.Close(); /关闭记录集 3 添加 Private 成员函数 void DoExecuteSQL(CString strSQL)该函数执行对数据库具体的SQL操作,遇到异常则返回异常,实现如下:void CSunlight1210Dlg:DoExecuteSQL(CString strSQL)TRY m_database.ExecuteSQL(strSQL); CATCH(CDBException, ex) AfxMessageBox(ex-m_strError); AfxMessageBox(ex-m_strStateNativeOrigin); AND_CATCH(CMemoryException, pEx) pEx-ReportError(); AfxMessageBox(Memorry Exception); AND_CATCH(CException, e) TCHAR szError100; e-GetErrorMessage(szError,100); AfxMessageBox(szError); END_CATCH 4 添加、修改、删除函数在系统一中这几个函数操作相对简单,与pdf类似,这里不做介绍。而系统二中这几个消息响应函数的实现由于需要对几张表进行操作,所以相对较复杂,将在系统二设计时详细介绍。7. 设计登录对话框系统登录界面如图所示,在本系统登陆界面可以通过输入用户名与口令进入两个不同的系统,现在已实现的是教职工系统。下面将继续系统二的设计。2) 图书借阅与管理系统设计1. 基本类与对话框的添加该系统在系统一基础上又增加了三个类CBookDlg、CBookSet、CBorrow,其添加方法与系统一的构建一样,不再说明。2. 新添对话框的设计图书信息对话框该对话框可以实现管理员对书的管理操作,用户对书的借阅操作,其中管理操作与系统一相似但是,其可能关联多张表,借阅与还书以及借阅情况查询操作都用到了两张表,下面我将对这几个功能函数做具体说明。3. 关键函数操作1) 添加函数操作void CBooksDlg:OnButtonAdd() / TODO: Add your control notification handler code hereUpdateData(); CString strSQL; strSQL.Format(insert into BOOK VALUES(%s,%s,%s,%s,%s,%s) , m_bookID, m_bookName,m_bookWriter,m_bookPublic,m_bookAvailable,m_bookBorrower); /向表 Employees 插入一条 新记录DoExecuteSQL(strSQL); strSQL=select * from BOOK; /重新查询 BOOK 表DoExecuteSQL(strSQL); ListAll(strSQL); 该函数操作过程是,先利用Format函数格式化SQL插入操作,然后调用DoExecuteSQL(strSQL);函数对数据库进行实际插入操作,之后再格式化选择操作,最后调用ListAll(strSQL);函数显示插入记录后表的情况。2) 修改函数操作void CBooksDlg:OnButtonEdit() / TODO: Add your control notification handler code hereUpdateData(); CString strSQL; strSQL.Format(UpdateBOOKSETBOOK_ID=BOOK_NAME=%s,BOOK_WRITER=%s,BOOK_PUBLIC=%s,BOOK_AVAILABLE=%s,BOOK_BORROWER=%s WHERE BOOK_ID=%s, m_bookID,m_bookName,m_bookWriter,m_bookPublic,m_bookAvailable,m_bookBorrower,m_bookID); DoExecuteSQL(strSQL); strSQL=select * from BOOK; DoExecuteSQL(strSQL); ListAll(strSQL); 该函数作用是以当前界面显示的书号为条件查找库中该条记录,然后将其修改,最后也调用ListAll(strSQL)显示修改后的结果。3) 删除函数操作void CBooksDlg:OnButtonDel() / TODO: Add your control notification handler code hereCString sql;sql.Format(delete from BOOK where BOOK_ID=%s ,m_bookID);DoExecuteSQL(sql); sql=select * from BOOK; DoExecuteSQL(sql); ListAll(sql); 该函数作用依然是以当前界面显示的书号为条件查找库中该条记录,然后利用SQL删除语句将其删除,最后也调用ListAll(strSQL)显示修改后的结果。4) 查找函数操作void CBooksDlg:OnButtonSeach() / TODO: Add your control notification handler code hereUpdateData(); CString strSQL,strField,str; if(m_COMBO_seach=作者) strField=BOOK_WRITER; if(m_COMBO_seach=出版社) strField=BOOK_PUBLIC; if(m_COMBO_seach=书名) strField=BOOK_NAME; if(m_COMBO_seach=书号) strField=BOOK_ID; strSQL.Format(select * from BOOK where %s =%s,strField, m_EDIT_seach); CBookSet m_BookSet; try if (m_BookSet.IsOpen() )m_BookSet.Close(); m_BookSet.Open(CRecordset:snapshot,strSQL); /执行查询/ 判断数据库中是否有记录,如果没有则退出if ( m_BookSet.GetRecordCount()=0 ) MessageBox(无此记录); return; else /将查询出来的第一条记录显示在编辑区m_BookSet.MoveFirst(); m_bookID=m_BookSet.m_BOOK_ID;m_bookName=m_BookSet.m_BOOK_NAME; m_bookWriter=m_BookSet.m_BOOK_WRITER; m_bookPublic=m_BookSet.m_BOOK_PUBLIC; m_bookAvailable=m_BookSet.m_BOOK_AVAILABLE; m_bookBorrower=m_BookSet.m_BOOK_BORROWER; UpdateData(false); ListAll(strSQL); /将查询出来的全部记录显示在列表视图中 catch ( CDBException *e ) / 异常捕获 e-ReportError(); return; 该函数作用是以用户输入的查找条件对数据库进行查找库,如果找不到该条记录则提示无此记录,有则利用SQL投影语句将其在列表框中显示。5) 借书函数操作void CBooksDlg:OnBorrow() / TODO: Add your control notification handler code hereUpdateData(); CString strSQL,SQL; /CLoginDlg m_UserName;strSQL.Format(select * from BOOK where %s between -1 and 0,m_bookAvailable); /优化Borrow等于0的情况CBookSet m_BookSet; try if (m_BookSet.IsOpen() )m_BookSet.Close(); m_BookSet.Open(CRecordset:snapshot,strSQL); /执行查询/ 判断数据库中是否有记录,如果没有则退出if ( m_BookSet.GetRecordCount()=1 ) MessageBox(此书已全部借出); return; else /未借出则执行以下操作strSQL.Format(insert into BORROW VALUES(%s,%s) , UserName,m_bookID ); /向表 borrow 插入一条 新记录DoExecuteSQL(strSQL); SQL.Format(update BOOK SET BOOK_AVAILABLE=BOOK_AVAILABLE-1 WHERE BOOK_ID=%s ,m_bookID ); DoExecuteSQL(SQL); strSQL=select * from BOOK; /重新查询 BOOK 表DoExecuteSQL(strSQL); ListAll(strSQL); /将查询出来的全部记录显示在列表视图中 catch ( CDBException *e ) / 异常捕获 e-ReportError(); return; 该函数作用是响应当前用户借书操作,其需要实现对两张表进行操作,首先需要将book表中该书数目减1,然后还需要在borrow表中添加该用户的一条借书记录。操作过程中如有异常需要进行异常处理,最后将book表被借阅后的情况在列表框中显示出来。具体实现操作见以上代码。6) 还书函数操作void CBooksDlg:OnReturnBack() / TODO: Add your control notification handler code hereCString sql,strSQL;sql.Format(delete from BORROW where Emp_ID=%s and BOOK_ID=%s ,UserName,m_bookID);/有点瑕疵,同一个人借同一本书多次如何办/strSQL=select BOOK.BOOK_ID, BOOK.BOOK_NAME,BOOK.BOOK_WRITER,BOOK.BOOK_PUBLIC,BOOK.BOOK_AVAILABLE,BOOK.BOOK_BORROWER from BOOK,BORROW where BORROW.BOOK_ID = BOOK.BOOK_ID; /sql.Format(delete from BORROW where Emp_ID=%s and BOOK_ID=%s ,UserName,m_bookID);DoExecuteSQL(sql); sql.Format(update BOOK SET BOOK_AVAILABLE=BOOK_AVAILABLE+1 WHERE BOOK_ID=%s ,m_bookID); DoExecuteSQL(sql); strSQL=select BOOK.BOOK_ID, BOOK.BOOK_NAME,BOOK.BOOK_WRITER,BOOK.BOOK_PUBLIC,BOOK.BOOK_AVAILABLE,BOOK.BOOK_BORROWER from BOOK,BORROW where BORROW.BOOK_ID = BOOK.BOOK_ID; DoExecuteSQL(strSQL); ListAll(strSQL); 该函数作用是响应当前用户还书操作,其也需要实现对两张表进行操作,首先需要将book表中该书数目加1,然后还需要在borrow表中删除该用户的一条借书记录。操作过程中如有异常需要进行异常处理,最后将book表被借阅后的情况在列表框中显示出来。具体实现操作见以上代码。7) 我的借阅情况函数操作void CBooksDlg:ListBorrowAll(CString strSQL)m_bookList.DeleteAllItems(); /清空列表视图CBorrowSet m_borrowset; /定义教师记录集对象try if(m_borrowset.IsOpen() /如果记录集是打开的,关闭之m_borrowset.Close(); if(!m_borrowset.Open(CRecordset:snapshot,strSQL) /以 snapshot 的方 式打开教师表,如果不能打开,报错处理MessageBox(打开数据库失败!,数据库错误,MB_OK); return ; catch ( CDBException *e ) / 异常捕获 e-ReportError(); int nIndex=0; /列表视图指向第 1 行m_borrowset.MoveFirst(); /记录指针指向第 1 条记录while(!m_borrowset.IsEOF() LV_ITEM lvItem; lvItem.mask=LVIF_TEXT; lvItem.iItem=nIndex; /行lvItem.iSubItem=0; /列lvItem.pszText=; m_bookList.InsertItem(&lvItem); /在列表视图中插入一行,每行 10 列m_bookList.SetItemText(nIndex,0,m_borrowset.m_BOOK_ID); m_bookList.SetItemText(nIndex,1,m_borrowset.m_Emp_ID ); m_borrowset.MoveNext(); /后移记录 nIndex+; /行数加 1 m_borrowset.Close(); /关闭记录集 该函数作用是响应当前用户的借阅情况,它首先需要以当前用户为条件查看borrow表,然后将表中该用户的信息投影显示出来,具体实现操作见以上代码。4、 系统优化与完善1. 漏洞发现与解决1) 登录密码的隐藏刚开始时,登录界面上用户输入密码是可见的,这违背了信息安全因素与现实情况,通过上网查资料,我才知道原来编辑框本身带有设置隐藏文本的功能,这就解决了这个安全漏洞。2) 实现返回登录界面系统初步实现,我开始运行时发现有一个地方很不用户有好,那就是用户一旦进入某一个系统如果想返回就需要完全退出系统。而一般我们希望的是有一个返回操作,它能实现返回登陆界面让用户再次选择进入的系统。要实现这个理论上还简单,就是在教职工信息对话框和图书信息对话框上添加一个返回按钮,其响应函数主要是先关闭当前对话框然后利用DoMadal()再调用出登录对话框。对于关闭当前对话框操作,我开始是用的DestoryWindow( )操作,试了几次后都实现不了,和同学讨论后我发现OnCancel( )函数可以简单实现销毁当前对话框操作。3) 借书操作漏洞测试运行后发现,借书操作设计时只考虑了数目减1操作,漏了借光了的情况。所以在进入借书函数时首先判断该书剩余量是否大于0,已经为0了则提醒用户“此书已经借光”。4) 还书操作漏洞和借书操作一样,调试运行发现,还书操作设计时只考虑了Boorow表删除记录的操作,忽略了Book表数目复原的操作,添加之后程序漏洞得到弥补。5) 数据库中数据定义成int 型执行查询语言出错2. 界面优化登录界面优化:插入了一个位图、修改字体大小与背景色、更改编辑框的背景色如下教师系统界面优化:实现与登陆界面同样风格的背景色和字体如下 5、 总结难点与亮点1. 系统实现过程中难点的总结 难点1.两个系统对数据库的添加、修改、删除操作的实现因为课堂主要是讲SQL语言的规则与运用细节,对于如何在程序中实现对数据库进行操作介绍的较少,所以以上几个操作在编程中实现起来对于刚刚接触数据库编程的我比较难。 难点2.图书管理系统中借书、退书和查阅我的借阅情况借书、退书函数的实现思想较简单,但是参数传递需要巧妙地实现,例如借书时需要将当前用户以及当前借阅的书号存进borrow表,但在当前图书界面下是不知道当前用户名的,这就需要在用户登录时记录下用户名并传递到之后进入的系统。 难点3.返回按钮的实现,返回时要消掉当前窗口该难点即是漏洞中提到的,实现后看来很容易,但是在遇到问题解决问题的过程中是需要不断探索、查阅资料的。 难点4.表之间的关系图建立,主键的设置主键的设置看起来较简单,其实其关系到程序是否能合理有效地运行,设置不当导致程序报错自己却不知道错在哪这可能会浪费很多时间,所以要仔细分析后再设置主键。 难点5.界面风格的美化及程序优化(Buge的排除)VC对话框的界面美化是一个大学问,我目前只掌握了皮毛,很多想法并不能随心所欲的实现,有些简单的想法可能需要编写很多代码,例如动态按钮的实现、界面的透明化等。就是简单的字体大小、背景颜色的改变都花了很长的实现去搞。实现同样的功能的两串代码可能一个20行一个10行,这就是程序的优化,我一般喜欢只要有想法就试着将程序简化这会对自己解决问题思路有所帮助但是这也会花费太长时间。2.发现并克服以上难点就是本系统在实现过程中的亮点6、 最终版运行结果1. 登录到教师信息管理系统用户名20091001695为管理员身份,进入系统可以对数据库进行管里,其它用户名为普通用户只能查看信息,登录密码都设定为123。以管理员身份登录 以普通用户身份登录 管理员进行添加操作(添加一个新职工张家亮) 管理员进行修改操作(修改张家亮的信息) 管理员进行删除操作(删除掉张家亮的记录) 2. 登录到图书借阅与管理系统管理员进行添加操作(添加一本叫“健康与疾病预防”的书) 添加书目的书号如果已经存在则禁止添加管理员进行修改删除操作同系统一,这里不一一截图普通用户进行借书操作(我借了一本图形学的书,借后书库中书少一本,我的借阅情况里多了一条借阅记录如下截图) 当书目为空时提醒用户 普通用户进行还书操作(还书过后我的借书记录被消除,书库中该书数目加1) 7、 收获与展望写完本报告本次数据库课程设计就完满结束了。在此期间,我在数据库学习方面在程序设计方面都得到了很大的提升。此次课程设计让我对数据库的实用性有了实际上的认识,让我复习巩固了课堂上SQL语言的基本知识点。通过编程实现应用程序对数据库的操作,让我对变量的定义、参数的传递、函数中算法的实现以及图形界面的编程都有了自己独特的理解,这既巩固了自己以前的编程经验又让我遇到了之前没有尝试过的操作。在实践中,我还养成了遇到问题想尽一切办法解决问题的好习惯。无论是看书查资料还是和同学交流,只要是能解决问题我都去做。完成了该系统,再去做项目组的数据库就十分的容易,我只花了一个星期就完成了项目组的任务,这大大提升了自己的学习热情与自信心。该系统是我数据库编程的处女作,在完成她的过程中让我收获很多,今后仍将不断完善她,希望通过学习SQLServer的网络设计将她实现网络化,做成一个局域网的实用系统。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!