数据库课程设计作业(共20页).doc
精选优质文档-倾情为你奉上课程设计成果 学院:_ 计算机工程学院_ _ 班 级: 计算机科学与技术2班 学生姓名: 学 号: 设计地点(单位): 计算机应用实验室A5101 设计题目:_ 学生选课系统_ _ 完成日期: 2012年 6 月 15 日 指导教师评语:_ 成绩(五级记分制):_ _ _ 教师签名:_ _目 录第一章 需求分析报告31.1 需求分析31.2 设计目的31.3 设计内容31.4 功能3第二章 数据字典4 2.1 表(a)系数据字典 4 2.2 表(b)课程数据字典 4 2.3 表(c)学生数据字典 4 2.4 表(d)教师数据字典 5 2.5 表(e)选课数据字典 5第三章 E-R图与关系模型 5 3.1各实体集及其属性图 53.2 E-R图7第四章 编码与管理9 4.1 SQL的特点 9 4.2 代码生成 9 4.2.1 建表代码 9 4.2.2 录入数据代码 10 4.2.3 基表操作代码 15 4.2.3.1:查询 15 4.2.3.2:插入 15 4.2.3.3:更新 16 4.2.3.4:删除 17 4.2.3.4:综合操作18第五章 总结 19致 谢19第一章 需求分析报告 1.1 需求分析 对待开发系统的一般概述: 立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性强、实用的系统,以提高学生课程信息的现代化管理水平,实现信息资源共享。学生课程信息管理系统是一种基于集中统一规划的数据库管理新模式。在对学生课程信息、读者的管理,其实是对学生课程信息,选课信息的管理。本系统的建成无疑会为管理者对学生课程信息管理系统提供极大的帮助。使用该系统之后,可以减少相关人员的工作量,使学校的学生课程信息管理工作真正做到科学、合理的规划,系统、高效地实施。1.2设计目的 根据所学的数据库原理与程序设计的知识,针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。1.3设计内容 1)系基本情况模块 2)学生信息模块 3)教师信息模块 4)课程信息模块 5)选课信息模块1.4功能 系基本情况:查询、添加、修改、删除、退出 学生信息:查询、添加、修改、删除、退出 教师信息:查询、添加、修改、删除、退出 课程信息:查询、添加、修改、删除、退出 选课信息:查询、添加、修改、删除、退出第二章 数据字典2.1 表(a)系数据字典:项目数据类型长度空值约束约束系编号Char(6)6是主键系名Varchar(20)20是唯一位置Varchar(30)30否2.2 表(b)课程数据字典:项目数据类型长度空值约束约束课程号Char(10)10是主键系编号Char(6)6否教师编号Varchar(20)20否课程名称Varchar(20)20是唯一开课学期Varchar(6)6否2.3 表(c)学生数据字典:项目数据类型长度空值约束约束学号Char(9)9是主键姓名Varchar(16)16是性别Char(2)2是男或女地址Varchar(50)50是2.4 表(d)教师数据字典:项目数据类型长度空值约束约束教师编号Char(9)9是主键教师姓名Vatchar(16)16否系编号Char(6)6否办公室号Char(4)4否2.5表(e)选课数据字典:项目数据类型长度空值约束约束学号Char(9)9是主键课程号Char(10)10是主键选课日期datetime否实践成绩Tinyint1否0<=成绩<=100考试成绩Tinyint1否0<=成绩<=100第三章 E-R图与关系模型概念设计的任务包括两个方面:数据库概念模式设计和事务设计。其中事务设计的任务是,考察需求分析阶段提出的数据库操作任务,形成数据库事务的高级说明。数据库概念模式设计的任务是,以需求分析阶段所识别的数据项和应用领域的未来改变信息为基础,使用高级数据模型建立数据库概念模式。3.1各实体集及其属性图:学生学号姓名性别地址系系 编 号系名位置教师教师编号教师姓名系编号办公室号课程课程号开课学期系编号课程名称教师编号选课学号考试成绩课程号实践成绩选课日期图3.13.2 关系模型得到以下学院数据库关系模式:系基本情况表(系编号,系名,位置)课程表(课程号,系编号#, 教师编号#,课程名称,开课学期)学生基本情况表(学号,姓名,性别, 地址)教师基本情况表(教师编号,教师姓名,系编号#,办公室号)学生选课表(学号#,课程号#,选课日期,实践成绩,考试成绩)3.2 E-R图:学生学号性别姓名地址课程号选课考试成绩选课日期实践成绩学号系编号课程号教师编号课程名称课程开课学期教师系编号教师编号教师姓名办公室号系编号系位置系名工作管理从属客体主体第四章 编码与管理 SQL是结构化查询语言(Structured Query Language)的英文缩写,可读作“sequel”,它是一种最常用的关系数据库语言,通过它可以对数据库进行查询和更新。4.1 SQL的特点(1) 高度非过程化(2) 面向集合的操作方式(3) 简洁易学,灵活易用4.2 代码生成 4.2.1 建表代码: CREATE TABLE 系基本情况表 ( 系编号 Char(6) PRIMARY KEY, 系名 Varchar(20) NOT NULL UNIQUE, 位置 Varchar(30), ) CREATE TABLE 学生基本情况表 ( 学号 CHAR(9) PRIMARY KEY, 姓名 VARCHAR(16) NOT NULL , 性别 CHAR(2) check(性别='男'or 性别='女'), 地址 VARCHAR(20) not NULL, ) CREATE TABLE 教师基本情况表 (教师编号 Char(9) primary key, 教师姓名 Varchar(16) not null, 系编号 Char(6) references 系基本情况表(系编号) , 办公室号 Char(4), ) CREATE TABLE 课程表 ( 课程号 CHAR(10) PRIMARY KEY, 系编号 Char(6) references 系基本情况表(系编号), 教师编号 Char(9) references 教师基本情况表(教师编号), 课程名 VARCHAR(20) NOT NULL UNIQUE, 开课学期 Varchar(6), ) CREATE TABLE 学生选课表 (学号 char(9) NOT NULL REFERENCES 学生基本情况表(学号), 课程号 CHAR(10) NOT NULL REFERENCES 课程表(课程号), 选课日期 datetime, 实践成绩 TINYINT CHECK(实践成绩>=0 AND 实践成绩<=100), 考试成绩 TINYINT CHECK(考试成绩>=0 AND 考试成绩<=100), primary key (学号,课程号), )4.2.2 录入数据代码: Use 课程设计实验数据库 go insert into 系基本情况表 values('D03001','计算机系','A5') insert into 系基本情况表 values('D03002','电子工程系','D1') insert into 系基本情况表 values('D03003','外语系','B3') insert into 系基本情况表 values('D03004','机械工程系','B1') insert into 系基本情况表values('D03009','师范系','四合院')代码运行效果:insert into 学生基本情况表values('S','张红','女','荆门')insert into 学生基本情况表values('S','刘东成','男','洪湖')insert into 学生基本情况表values('S','王珍英','女','天门')insert into 学生基本情况表values('S','赵成东','男','天门')insert into 学生基本情况表values('S','许文一','男','襄樊')insert into 学生基本情况表values('S','周敏','女','洪湖')insert into 学生基本情况表values('S','李光兵','男','潜江')insert into 学生基本情况表values('S','刘芳芳','女','天门')insert into 学生基本情况表values('S','李工生','男','监利')insert into 学生基本情况表values('S','刘小英','女','武汉')代码运行效果:insert into 教师基本情况表values('T','田原','D03001','1001')insert into 教师基本情况表values('T','吴天成','D03002','1002')insert into 教师基本情况表values('T','刘五于','D03003','1003')insert into 教师基本情况表values('T','刘小勇','D03004','1004')insert into 教师基本情况表values('T','钟东红','D03009','1005')代码运行效果:insert into 课程表values('C','D03001','T','C语言','2学期')insert into 课程表values('C','D03002','T','电信基础','3学期')insert into 课程表values('C','D03003','T','大学英语','1学期')insert into 课程表values('C','D03004','T','机械技术基础','4学期')insert into 课程表values('C','D03009','T','幼儿教育','3学期')代码运行效果:insert into 学生选课表values('S','C','2012-3-1','80','90')insert into 学生选课表values('S','C','2012-3-1','60','99')insert into 学生选课表values('S','C','2012-3-1','75','80')insert into 学生选课表values('S','C','2012-3-1','49','100')insert into 学生选课表values('S','C','2012-3-1','50','60')insert into 学生选课表values('S','C','2012-3-1','80','80')insert into 学生选课表values('S','C','2012-3-1','65','59')insert into 学生选课表values('S','C','2012-3-1','77','88')insert into 学生选课表values('S','C','2012-3-1','54','62')insert into 学生选课表values('S','C','2012-3-1','79','93')insert into 学生选课表values('S','C','2012-3-1','80','75')代码运行效果:4.2.3 基表操作代码:4.2.3.1:查询(查询选修了'C'课程的所有学生的学号、姓名、课程名和考试成绩)select s.学号,s.姓名,c.课程名,sc.考试成绩from 学生基本情况表 s,课程表 c,学生选课表 scwhere s.学号=sc.学号 and c.课程号=sc.课程号 and sc.课程号='C'代码运行结果:4.2.3.2:插入(在学生选课表中插入学号为'S'和'S'的学生的信息, 已知这两个学生的信息放在已经建好的表SC中) SC表: insert into 学生选课表 select * from SC 代码运行后的效果:4.2.3.3:更新(将周敏的实践成绩改为60分)update 学生选课表set 实践成绩='60'where 学号 in (select 学号 from 学生基本情况表 where 姓名='周敏' )代码运行效果:周敏的学号是'S',我们看到她的实践成绩已经变为60分了。4.2.3.4:删除(删除学生选课表中所有成绩低于70分的学生的信息)delete from 学生选课表where 实践成绩<70 or 考试成绩<70代码运行效果:4.2.3.4:综合操作(如果有选修2门课以上的学生就列出学生名单,否则给出信息“没有选修2门课以上的学生”。要求将选课门数作为参量,以便给该参量赋不同值时可以得到相应的信息。) begin Declare Num int Set Num=2 If exists(select count(课程号) from 学生选课表 SC Group by SC.学号 having count(课程号)>=Num) BEGIN SELECT '选课'+ CAST(Num AS CHAR(2) + '门以上课程的的名单:' Select SC.学号,姓名,count(课程号) 选课门数 from 学生选课表 SC,学生基本情况表 S group by SC.学号,S.姓名,S.学号 having count(课程号)>=Num and S.学号=SC.学号 Order by count(课程号) DESC END Else PRINT '没有选课'+ CAST (Num AS CHAR(2) + '门以上的学生' End代码运行效果: 第五章 总 结 在本次课程设计的全过程中,我们对本学期所学的知识有了一个比较系统的认识和理解。进一步掌握了数据库的方法和技术,提高软件开发的实际能力,培养综合分析、解决问题的能力。涉及了各方面的知识,大大扩展了我们的知识面,同时使我们学会了如何使用所学的知识去解决一些实际问题。 在设计中,我们深知自己所掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。把学到的知识应用到实践中去,多做多练,才可以把理论的精华发挥出来。知识不是知道、了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。在设计阶段,通过对课题的深入分析与研究,迫使我们对技术有了一定的了解。在遇到问题时,得到了指导老师与同学的悉心帮助,使我们感受到集体的力量是无穷的。 通过本次课程设计,我学会了怎样与别人合作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。同时也使我们学到了许多书本上学不到的知识,增强了自己的动手能力。作为大二的我们,十分珍惜这次锻炼的机会,我们按部就班的完成了小组的设计任务,本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对于我们来说,是一次很好的锻炼,使我们各方面的能力有了很大的提高,为我们今后踏出校门,走上社会增添了几分自信。 计算机技术的高速发展,使我们深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我们还要更加努力地学习。致 谢本次课程设计从选题到上交作品,一直都是在周良泽老师的悉心指导下进行的。在整个过程中,周老师帮助我们分析课题,在我们一脸茫然的时候鼓励我们。周老师严谨的教学态度,认真负责的工作精神,让我钦佩不已。在此,向周老师致以真诚的谢意。课程设计是本科教学的一项重要措施,可以提高学生软件开发的实际能力。在周老师的指导下,我们都完成了各自的课程设计。作为大二的我们,要感谢大学近两年来各科老师对我的辛勤教导,没有他们的付出,就不会有我们今天的成就。同时也要感谢学校领导在学习和生活中,对我给予的无私帮助。学校良好的学习氛围为我们学习和生活提供了有力条件。作为计算机工程学院的一名学生,我们感到很荣幸,我们正在不断地提升自己。课程设计的内容复杂庞大,单靠个人的力量,是远远不够的。在本次课程设计中,我很荣幸能和我们班的同学在一个小一组。由于我们都有各自的优点,经过协调和安排,我们比较轻松地完成了学生选课管理系统的课程设计。虽然有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等,但我们都是通过自己的努力去完成的。最后,也要感谢我的同学们。在设计过程中,遇到难题或是不懂的地方,可以跟她们一起讨论,他们对我的认可和支持,让我有了继续下去的恒心。专心-专注-专业