数据库原理课程设计报告模板.docx
数据库原理课程设计报告班 级 地信本一 姓 名 王 婷 学 号 2100120101 指导教师 徐 梅 2015年 1 月一引言本设计选题为教学管理系统实例,目的在于通过数据库设计,首先进行需求分析,再进行概念结构设计,然后分别进行逻辑结构设计、物理结构设计、数据库实施运行维护,最终建立完整的教学管理数据库系统,使用前台开发工具ASP.NET(C#语言)进行数据库系统开发与设计,根据现有工作量实现了登录、管理员主页、添加学生、学生信息维护、添加课程、课程信息维护、添加教师、教师信息维护、成绩维护、查询每门课程选修人数、查询每门课程平均成绩、教师查询任课信息、教师查询选课情况、教师录入成绩、学生选修课程、个人成绩查询、修改个人密码功能。二系统实现1.数据库表(1)管理员表(2)教师表(3)课程表(4)选课表(5)学生表2数据库连接方式(给出主要连接代码)SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=王婷-PCWT;Initial Catalog=F:网站设计JIAOXUEGUANLI.MDF;Integrated Security=True"/创建连接对象conn.Open(); /打开连接conn.Close(); /关闭连接3.登录界面(只截图)两个测试用例演示 1. 以管理员的身份进入教学管理系统(1) 添加学生(2) 添加教师(3) 添加课程(4) 学生信息维护及教师信息维护(5) 课程信息维护及学生成绩维护(6) 查询选课人数及平均成绩(7)退出系统(8)修改密码2. 以学生的身份进入教学管理系统(1) 学生个人成绩查询以及选修和退选退选:(2) 修改密码3、以教师的身份登录(1)课程选修情况(1) 录入成绩 (3)修改密码三数据库练习(1) 建立一个视图,用于查询学生可以选修的所有课程的课程名、课程号、教师姓名、学分、课时。create view view3asSELECT 课程.课程号, 课程.课程名, 教师.姓名 AS 教师姓名, 课程.学分, 课程.课时 FROM 课程 , 教师 where 课程.教师号 = 教师.教师号(2)建立一个存储过程,用于查询指定学生已经选修的所有课程的课程名、课程号、教师姓名、学分、课时。alter proc selectcourse SNO varchar(11)asSELECT 课程.课程号, 课程.课程名, 教师.姓名 AS 教师姓名, 课程.学分, 课程.课时 FROM 课程 , 教师,选课 where 课程.教师号 = 教师.教师号 and 选课.课程号=课程.课程号and 选课.学生号=sno(3)创建一个触发器,当教师更新、插入学生基本资料时,该触发器检查指定修改或插入记录的成绩是否是0到100、create trigger Score on 选课for insert,updateasdeclare a intset a=(select 成绩 from inserted)beginif(a not in (0,100)print'您录入的成绩有误'rollbackend四设计心得本次设计是做一个教学管理系统,主要目的是测试SQL server数据库,因此书上提供代码有许多不足之处,都学要我们在做的过程中和后续学习中改变。在做教学管理系统时,首先遇到的问题是:前台界面的设计,由于现在的课程中学习的是及静态脚本,且以界面操作为主,因此对于aspx的动态脚本的设计很不熟悉,在搭建页面的过程中发现用表格搭建页面,便于页面的居中欲对齐设计。但是每一个空间都有很多属性,我们也都不熟悉,但在使用过程中又非常关键,例如GridView中的DataKeyNames、AutoGenerateColumns、OnRowCommand、onselectedindexchanged="GridView1_SelectedIndexChanged"等这些属性都非常关键,经常在前台界面的设计中不小心双击了GridView,会产生onselectedindexchanged="GridView1_SelectedIndexChanged"这个属性,又没有在后台代码中写它的定义,在运行时就会报错,又在GridView的表格中都的每一列,在前台设计了控件,在后台连接的情况,有事会产生重复列,需要添加ReadOnly属性等等。对于这些界面的属性我们都需要多加练习,熟悉这些属性。在设计这个系统中还有一个最大的难关就是数据库的连接问题,书上的代码只是个事例,因此连接的代码都需要改变,根据某一个通过界面操作获得的成功连接的代码,在Web界面中找到代码,粘贴到数据库连接的地方。但是因为这个数据库连接没有专门建立一个公共类,因此需要找到每一个界面中需要数据库连接的地方,将连接数据库的代码替换成正确的代码。因为,这个数据库的连接都是采用硬链接的方法连接,因此这个教学管理系统也不具有移植性,并不具有实用性,这要改变了数据库中的数据,就需要重新连接数据库,因此每一处连接都需要改变,而且,如果数据库不采用SQL Server数据库,所有界面的连接都没用了,因此,改变这个系统的连接,专门建立一个数据文件夹,将连接代码专门放在该文件夹中,如果改变数据库,也只需改变数据库的连接文件夹的代码即可。该系统还有一个大问题,便是系统界面不稳定,每一个界面的都需要从Main界面跳转,因此跳转到其他界面后,又需要在返回Main界面,再继续跳转到其他界面,整个系统给用户的感觉便是不停的跳转,不稳定,所用的连接方式也是硬连接,对硬件系统有一定的损害性,而且运行速度也比较慢,因此可以将Main界面设计成菜单形式,显示到界面的左端,而界面的上部可以用网页制作软件制作一个静态的界面,用来显示系统名称以及主题等等。界面的下部也可以制作一个静态网页,显示一些版权信息等,界面的主体部分用自适应的宽度显示,这样可以适应任何分辨率的显示器,不会出现显示不全或是出现空白部分等等问题。且用静态网页搭建框架,不会给人跳转的感觉,也加快了页面的显示,减少服务器运行的负担。整个网站是用硬连接的方式与数据库连接,对于数据的操作直接在表中进行,不能快速显示和刷新信息,且没有单独的界面超做提示,对数据的增加和减少,只能在数据库中查看信息,并不能及时跟新到界面上。例如学生个人成绩查询界面,学生选课和退选,都不能在界面上及时刷新,也没有提示信息,对于数据的改变,用户只能在数据库中查看。可已将选修和退选单做一个界面,对其单独操作,并且加上相关的提示信息,利用代码实现,自己写出select、insert、delete语句来实现操作,并且加上判定信息,例如点击选修时,首先判断是否已经选修了该课程,并且给出相关的提示信息,进一步完善代码。对于频繁使用的更新、查询、插入、删除等操作,可建立一个公共类的方法,在需要使用的地方调用即可,这样代码的更改操作将变得简单可行。在教室成绩录入界面,需要在GridView控件中插入文本框,由于文本框嵌套在GridView中,因此,对于文本框控件,需要单独声明和发现,因此使用网站有些麻烦,对于整个系统,应该使用项目比较好。对于本系统的这些不足之处,都需要我们在后续的学习中进一步完善和改变,书上的代码仅仅适用于测试数据库,在实际的运用中,这样的代码是不可行的,对于界面的搭建和数据库连接等等问题,都应该建立方法,在调用这些方法,才会使程序具有可移植性和实用性。12