《《数据库原理》课程设计.doc》由会员分享,可在线阅读,更多相关《《数据库原理》课程设计.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库原理课程设计报告2010 年12 月 25日一、需求分析系统描述:随着计算机技术的快速发展,计算机在日常生活中的应用越来越广泛,无论是国防,军事,科技,医疗卫生,教育,计算机总是不可或缺的。在如今这个飞速发展的信息化世界,每时每刻都有海量的数据在产生,传输和存储。最为贴近我们学生生活的,比如大量的学生信息的管理,用传统的纸笔已经不现实,正式基于这一点,本人开发了这个简单的学生宿舍管理系统,以方便的对学生宿舍的学生信息进行管理,提高宿舍管理员的工作效率。学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说
2、还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统
3、做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库的存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。 由于现在的大学生数量较多,并且对于一个大学,管理好学生的宿舍是至关重要的,所以开发一个较好的宿舍管理系统是很有必要的,而且在开发的基础上,设计一个较好的数据库是很重要的,并且对于每一个访问数据库的成员也是很重要的,在此基础上,数据库设计的结构同样是很重要的,基于数据库的开发必然涉及到前台的开发,在这里使用MFC进行前台开发,利用对话框来实现可视化连接数据库以及对数
4、据库的操作,可以以一种直观的角度来实现对数据库操作,同时,这也是现在可视化发展的需要,由于现在绝大多数用户使用的是windows操作系统,可视化的编程显得尤为重要,而且用可视化的界对数据库实现操作,具有直接、简单、简洁等一系列功能与作用,在从数据库的角度来说,管理好一个宿舍,也就相当于管理好一个学校,学校是由学生组成的,对于学生的基本信息,要有一个系统的信息管理系统,也只有这样,才能使得管理员有较好的管理方向,也只有管理好,才能实现宿舍系统的可用性与实用性,在此的基础上,才能实现对于学生的基本信息管理,开发环境:CPU:Intel Pentium4 2.1GHz内存:2G操作系统:Micros
5、oft Windows XP后台数据库在Microsoft SQL Server 2000 中文企业版 前台最终用户接口程序在 Microsoft Visual C+ 6.0 Enterprise推荐用户配置:CPU:Intel Pentium3 1.2GHz 或更高 内存:256MB 或更高 操作系统:Windows 2000 Server 或更高 数据库系统:Microsoft SQL Server 2000 管理员可进行的操作:宿舍管理员删除学生记录查询学生信息修改学生信息增加学生记录数据流图:二、 概念结构设计E-R图:入住寝室号寝室长寝室学号姓名登记编号学生N1年龄空闲床位数寝室电话
6、登记时间系别寝室号 N管理 1宿舍管理员三、逻辑结构设计模式设计:属性名存储代码类型长度备注登记编号IDint4登记编号姓名NameNvarchar10姓名学号SnoNvarchar20学号年龄AgeNvarchar10年龄系别DeptNvarchar20系别联系电话PhoneNvarchar20联系电话入住时间DateDatetime8入住时间属性名存储代码类型长度备注寝室号DVDIDInt4寝室号寝室长DVDNameNvarchar50寝室长空闲床位数NumInt4寝室还可容纳人数寝室电话NoteNvarchar100寝室电话关系模式:学生(登记编号,姓名,学号,年龄,系别,联系电话,寝室
7、号,入住时间)寝室(寝室号,寝室长,空闲床位数,寝室电话)四、数据库的物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于某些属性建立索引。给出所建立的索引。(包括按哪些表中哪些属性按升序还是降序来创建索引及相应的T-SQL的创建语句)。五、数据库设计实现及运行(1)数据库的创建T-SQL语句:create database DVDRentDb;(2)数据表的创建(可同时在创建时定义相关的约束)T-SQL语句:CREATE TABLE tbDVDInfo(DVDID int(4) not null unique,DVDName char(50) not null,Num int(4)
8、 null);create table Worker(ID int(4) not null unique,DVDID int(4) not null,Name char(10) not null,Age char(4),Dept char(20),Date char(20) null,Sno char(20) null,Phone int,primary key(ID);(3)视图的创建(仅需给出自己设计模块中所用的视图)T-SQL语句:(4)各模块中的功能实现a) 功能界面(截图);b)功能界面简单描述;1、 记录学生的编号、姓名、学号、年龄、系别、联系电话、寝室号、入住日期。2、 记录整栋
9、楼的寝室号、寝室长、寝室空闲床位、寝室电话等。c)T-SQL语句与宿主语言嵌套使用代码段。void DORINFO:OnOK() /得到输入UpdateData(TRUE); CString strDorNum,strDate,strSQL;/获得日期 GetDlgItem(IDC_START_TIME)-GetWindowText(strDate);int sel=m_dorinfolist.GetSelectionMark();if(selActiveConnection =m_pConnection;strSQL.Format(insert into tbRentInfo(DVDID,N
10、ame,Age,Dept,Date,Sno,Phone) values(%s,%s,%s,%s,%s,%s,%s),strDorNum,m_name,m_age,m_dept,strDate,m_sno,m_phone); pCommand-CommandText =_bstr_t(strSQL);HRESULT hr; tryhr=pCommand-Execute(NULL,NULL,adCmdText);if(SUCCEEDED(hr)MinusNum(strDorNum); catch(_com_error *e)AfxMessageBox(e-ErrorMessage();return
11、; MessageBox(登记信息成功!);CDialog:OnOK();void CMyDBDlg:OnBtnAlter() int sel=m_stuinfolist.GetSelectionMark();if(selGetFirstSelectedItemPosition();if (pos = NULL)return;int nItem = pListCtrl-GetNextSelectedItem(pos);ALTER dlg;CString strID;dlg.m_strName = pListCtrl-GetItemText(nItem, 1);dlg.m_alter_sno =
12、 pListCtrl-GetItemText(nItem, 2);dlg.m_alter_age = pListCtrl-GetItemText(nItem, 3);dlg.m_alter_dept = pListCtrl-GetItemText(nItem, 4);dlg.m_alter_phone = pListCtrl-GetItemText(nItem, 5);strID = pListCtrl-GetItemText(nItem, 0);if (dlg.DoModal() != IDOK)return;_RecordsetPtrpDVDRecordset; pDVDRecordset
13、.CreateInstance(_uuidof(Recordset);_bstr_t vSQL; vSQL=select * from tbRentInfo where ID=+strID; trypDVDRecordset-Open(vSQL,m_pConnection.GetInterfacePtr(), / 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e-ErrorMessage();return; if(pDVDRecordset-BOF)&(p
14、DVDRecordset-adoEOF) MessageBox(error!);pDVDRecordset-Close();pDVDRecordset=NULL;return; pDVDRecordset-PutCollect(Name,_variant_t(dlg.m_strName);pDVDRecordset-PutCollect(Sno,_variant_t(dlg.m_alter_sno);pDVDRecordset-PutCollect(Age,_variant_t(dlg.m_alter_age);pDVDRecordset-PutCollect(Dept,_variant_t(
15、dlg.m_alter_dept);pDVDRecordset-PutCollect(Phone,_variant_t(dlg.m_alter_phone);pDVDRecordset-Update();pDVDRecordset-Close();pDVDRecordset=NULL;MessageBox(修改完成!);void CMyDBDlg:OnBtnDel() /从用户选中的列中得到ID,DVDName调用DeleteRecord函数int sel=m_stuinfolist.GetSelectionMark();if(sel=0 & AfxMessageBox(确定删除?,MB_OK
16、CANCEL) = IDOK)CString rentid=m_stuinfolist.GetItemText(sel,0);CString managerName=m_stuinfolist.GetItemText(sel,7);/根据managerName查找/DeleteRecord(rentid,dvdName);DeleteRecordTran(rentid,managerName);m_stuinfolist.DeleteItem(sel);else if(selBeginTrans();m_pConnection-Execute(_bstr_t(vSQL),&RecordsAff
17、ected,adCmdText);vSQL=select * from tbDVDInfo where DVDID=+strDVDID;pDVDRecordset-Open(vSQL,m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);if(pDVDRecordset-BOF)&(pDVDRecordset-adoEOF) MessageBox(error!);pDVDRecordset-Close();pDVDRecordset=NULL;return;var=pDVDRecordset-Get
18、Collect(Num);if(var.vt != VT_NULL)strValue = (LPCSTR)_bstr_t(var);dvdNum=atoi(strValue);dvdNum+=1;strValue.Format(%d,dvdNum);pDVDRecordset-PutCollect(Num,_variant_t(strValue);pDVDRecordset-Update();m_pConnection-CommitTrans();catch(_com_error *e)/如果出错,回滚事务m_pConnection-RollbackTrans();AfxMessageBox(
19、e-ErrorMessage();六、课程设计心得通过这个系统的开发,让我本人初步的了解到了做一个小项目的全过程。让我们经历了从系统规划、分析、设计到后台数据库的搭建和前台开发的一个相对较为完整的过程。在此过程中我们遇到了许多实际的问题在课堂讲的教材上是找不到的。为了解决这些实际的问题我们要实际调查,查询资料等等,在这过程中不仅让我们学到了许多专业知识而且锻炼了我的分析问题、解决问题的能力以及实际的动手能力。并且让我们感受最深的一点是做项目最最重要的是一个团队的团结协作,只有这样才能很好的完成一个工程项目七、参考资料1SQL Server 2000 基础教程 清华大学出版社 DUSAN PETKOVIC 著 2SQL Server 2000 实用教程 人民邮电出版社 黄梯云 编著 3. Visual C+ 6.0 开发指南