数据库课程设计学生课程管理系统.docx
《数据库课程设计学生课程管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计学生课程管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
数据库课程设计学生课程管理系统
数据库课程设计报告
课题名称:
学生课程管理系统
专业:
计算机科学与技术
班级:
计1072
姓名:
陈道友
学号:
1071301207
指导老师:
刘金岭、周海岩、冯万利、邱军林
2009年12月29日
计任务书
课题
名称
学生课程管理系统
设计
目的
通过一周的课程设计,完善课程管理系统的功能,并达到巩固理论知识、锻炼实践能力、构建合理知识结构的目的。
实验
环境
操作系统:
Windows7
数据库管理系统:
SQLServer2005
高级编程设计语言:
VisualStudio2008
任务
要求
1.搜集学生课程管理问题方面的资料;
2.编写代码,完善窗体;
3.撰写课程设计报告;
4.参加答辩;
工作进度计划
序号
起止日期
工作内容
1
2009.12.20~2009.12.21
查询资料、选择课题
2
2009.12.22~2009.12.23
需求分析、总体设计
3
2009.12.24~2009.12.25
系统整体设计、编写程序代码、调试程序
4
2009.12.25~2009.12.26
撰写课程设计报告
指导教师(签章):
年月日
摘要:
随着科学技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。
而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。
软件产业已成为社会信息化进程中的一个战略性产业。
在软件技术的应用中,软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。
不断开发适应用户需求、市场需要的新型软件产品迫在眉睫。
随着社会的发展,软件也在不断的更新换代。
计算机领域不断取得的新研究成果使计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。
尤其是在学校里,要处理大量的学生数据。
在数字化的今天,使用学生课程管理系统能使学校对学生数据的管理更加简单、到位,可大大的减轻管理人员的负担,实现高效办公。
关键词:
学生课程管理系统;计算机;软件
1需求分析
1.1需求详述
(1)系统需要能够对不同的用户给出不同的权限,比如系统管理员只有对用户的管理权限,它可以增、删、改用户;学校教务人员可以对课程信息和成绩信息进行管理,主要是增、删、改和查询相关信息;学校教工人员可以对班级信息进行管理,学生可以查询个人信息、查询个人成绩;
(2)新的一个学期开始之后,学校教工人员可以添加新的班级信息,比如班号、人数等;如果中途有新转来或转走或退学的学生,也可以修改班级信息;学生毕业之后,学校教工人员可以删除该班的所有信息。
另外该系统应该提供一个方便的查询班级信息的接口。
(3)新的一个学年开始之后,学校教工人员可以添加新的学生学籍信息,比如学号、姓名、性别等;如果学生的基本信息有变化,可以修改学籍的基本信息;如果学生毕业离开了学校,可以删除该生的学籍信息;如果需要查找某个学生的学籍信息,系统应该提供一个方便的查询学籍信息的接口。
另外系统需要提供学籍报表的功能。
(4)学校教工人员可以管理学院信息,比如某个学院更名了,应该可以更新学员信息;或者某个学院不存在了,应该可以删除该学院的相关信息;如需要查找某个学院的信息,系统应该提供一个方便的查询学院信息的接口。
(5)学校教工人员可以管理教师信息,分配教师授课,更改教师信息,比如某个教师退休了,应该可以删除该教师相关信息;如需要查找某个教师的信息,系统应该提供一个方便的查询教师的接口。
(6)新的一个学期开始之后,学校教务人员可以添加新的课程信息,比如课程号、课程名等,如果课程的基本信息有变化,可以修改课程的基本信息;如果课程结束,应该可以删除课程信息;如果需要查找某个课程的信息,系统应该提供一个方便的查询课程信息的接口。
(7)课程结束之后,学校教务人员可以添加课程号、学生号、成绩等信息进行选课管理;如果需要查找成绩信息,系统应该提供一个方便的查询选课及成绩信息的接口;如果由于漏题或其余原因需要删除成绩,可以删除成绩信息。
同·时为了调研的需要,应该能根据学生选课信息按学生统计平均成绩和按课程统计平均成绩。
另外,系统需要提供成绩报表的功能。
(8)系统运行在Windows平台上,要求有一个较好的图形用户界面,操作要求简单。
(9)系统应该有很好的可扩展性,以便学校根据实际情况添加新的功能。
1.2功能需求
学生管理系统需要完成的功能有用户管理、班级管理、教师管理、课程管理、选课管理、成绩管理六个部分。
(1)用户管理该功能用于管理使用该系统的用户,以及模块按权限进行分配,从而为系统提供一定的安全性。
(2)班级管理添加、修改、删除和查询班级信息。
(3)教师管理添加、修改、删除和查询教师信息。
(4)课程管理添加、修改、删除和查询课程信息。
(5)选课管理添加、修改、删除和查询选课信息。
(6)成绩管理添加、修改、删除和查询成绩信息,并可以制作成绩报表。
1.3数据需求
通过分析,总结出本系统对数据的需求如下:
(1)用户信息
包括:
用户名、用户密码。
(2)学生信息
包括:
学号、姓名、性别、班级编号、密码、简历。
(3)课程信息
包括:
课程编号、课程名称、课程性质、学时、开课学院、学分、备注等。
(4)教师信息
包括:
教师编号、教师姓名、性别。
(5)选课信息
包括:
学生学号、课程号、成绩等。
(6)教师任课信息
包括:
教师编号、课程编号
(7)班级信息
包括:
班级编号、所属学院编号。
1.4系统数据字典
数据流图是结构化分析中不可缺少的有力工具,它描述了系统的分解,即系统由哪些部分组成,各部分之间有什么联系等。
但是,它还不能完整地表达一个系统的全部逻辑特征,特别是有关数据的详细内容。
因此,仅仅一套数据流图并不能构成系统说明书,只有对图中出现的每一个成分都给出详细定义以之后,才能全面地描述一个系统。
对数据流、数据存储和数据处理的详细描述,需要用数据字典(DD)。
它包括数据流、数据存储、外部项和处理过程的详细条目。
数据字典中把数据的最小单位定义为数据项,而若干数据项可以组成一个数据结构。
数据字典是通过以数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
(1)模块说明
模块名称:
登录系统
输入数据流:
用户登录信息
输出数据流:
用户登录成功|登录失败
简要描述:
主要负责具有不同权限的用户的登录,对其登录信息进行验证。
模块名称:
成绩管理
输入数据流:
成绩控制信息
输出数据流:
成绩返回信息
简要描述:
主要负责学生成绩方面的管理,包括课程代码、学号、成绩。
模块名称:
选课管理
输入数据流:
选课控制信息
输出数据流:
选课返回信息
简要描述:
主要负责学生选课方面的管理,包括课程代码、学号、成绩。
模块名称:
班级管理
输入数据流:
班级控制信息
输出数据流:
班级返回信息
简要描述:
主要负责学生成绩方面的管理,包括班级代码、班级名、班主任。
模块名称:
教师管理
输入数据流:
教师控制信息
输出数据流:
教师返回信息
简要描述:
主要负责教师信息方面的管理,包括教师代码、教师名、所属院系。
模块名称:
课程管理
输入数据流:
课程控制信息
输出数据流:
课程返回信息
简要描述:
主要负责学生课程方面的管理,包括课程代码、课程名、任课教师。
(2)主要数据流定义
数据流名称:
登录信息
位置:
用户登陆处理
定义:
登录信息=用户名+口令
说明:
对于不同权限的用户具有不同的操作权只有
输入合法的用户名及口令,才能获得一定的操作权。
数据流名称:
验证信息
位置:
登陆处理用户
定义:
验证信息=『登陆成功|口令错误』
说明:
该告知用户登陆的情况,如成功,就可进入操作界面。
数据流名称:
查询成绩
位置:
教务人员学生信息检索
定义:
查询要求=『指定系』
说明:
用户通过选择指定要查询的系及学生。
数据流名称:
查询结果
位置:
学生信息检索教务人员
定义:
查询结果=系记录+系统计人数+『学生记录』
说明:
查询结果包括指定系的信息,系学生数(统计结果)和学生记录(可同时显示多条记录)。
数据流名称:
修改要求
位置:
教务人员教务信息维护
定义:
修改要求=『系|学生|课程|选课』
说明:
指定要维护的对象,然后输入修改的信息(增,删,改)
数据流名称:
选课要求
位置:
学生选课处理
定义:
选课要求=学号+指定课程
说明:
学生在选课界面要首先输入学号,然后要指定选(退)课。
数据流名称:
选课结果
位置:
选课处理学生
定义:
选课结果=(出错信息)已修学分+新课表+新选学分+新选课门数
说明:
出错信息包括学号不对,操作错误等。
2数据库的概念设计
2.1概念模型
概念结构设计就是从现实概念中抽象出概念模型,即对信息世界建模,所以概念模型应该能方便、准确的表示信息世界中的常用概念。
概念模型的表示方法最著名的是实体—联系方法(Entity-RelationshipApproach),在该方法中实体型用矩形表示,矩形框内写明实体名;属性用椭圆表示,并用无向边将其与相应的实体连接起来;联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁表上联系的类型(1:
1,1:
n或n:
m)。
2.2E-R图表示概念模型
(1)学生实体的E-R图
图2-1学生基本信息E-R图
(2)教师实体E-R图
图2-2学生基本信息E-R图
(3)课程实体E-R图
图2-3课程基本信息E-R图
(4)选课实体E-R图
图2-4选课基本信息E-R图
(5)班级实体E-R图
图2-5选课基本信息E-R图
(6)教师任课实体E-R图
图2-6选课基本信息E-R图
2.3合并E-R图
通过分析上述实体间的联系将分E-R图合并为学生管理系统的基本E-R图。
由于用户这一实体它是用来确定使用该系统权限的于其他实体间无内在联系,故在此不考虑。
同时每个实体的属性在上面的分E-R图中已经给出,在此不予给出。
图2-7总体E-R图
2.4E-R图向关系模型转换
在二元联系中,数据模型实体间的联系有一对一(1:
1)、一对多(1:
n)和多对多(m:
n)三种。
两实体的联系为1:
1,可将联系与任意一端对应的关系模式合并。
具体做法是:
将两个实体各用一个关系表示,然后将其中一个关系的关键字和联系的属性加入另一个关系的属性。
一个关系的关键字存储在另一个关系中时,称为另一个关系的外键。
一个1:
n联系可以与“1”端对应的关系模式合并。
首先,一个实体用1个关系表示,然后将联系的属性和“n”端对应关系的键置于“1”端对应的关系中。
一个m:
n转换为一个关系模式。
多对多联系不能与任一端实体对应的关系模式合并,否则会引起插入异常和修改异常。
联系本身的属性以及与该联系相连的实体的键都将转换为该关系的属性,关系的键是各实体键的组合。
根据以上转化原则,得到以下一组关系模式,关系模式的码用下划线标出。
(1)学生(学号,姓名,性别,班级编号,…)
此为学生实体的对应的关系模式。
该关系模式已经包含了联系—“属于”所对应的关系模式。
(2)班级(班级编号,所属学院号)
此为班级实体所对应的关系模式。
该关系模式已经包含了联系—“属于”所对应的关系模式,所属学院号为该关系的候选码。
(3)学院(学院编号,学院名称)
此为学院实体所对应的关系模式。
(4)教师(教师编号,教师姓名,职称,…)
此为教师实体所对应的关系模式。
(5)课程(课程编号,课程名称,开课学院,…)
此为课程实体所对应的关系模式。
该关系模式已经包含了联系—“开设”所对应的关系模式。
(6)选课(课程编号,学号,成绩)
此为联系“选课”所对应的关系模式
(7)授课(课程编号,教师编号)
此为联系“授课”所对应的关系模式。
3数据库的逻辑设计
根据对需求分析得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,并进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。
本系统根据分析确定系统要设置如下表(为了在应用程序中方便使用表名、字段名,在设计表时均采用英文简称或全称,在此为了便于理解均使用它们的中文别名):
(1)学生基本表,包括字段:
学号、姓名、性别、班级编号、密码。
学号为主键、主索引,为班级编号建立索引,通过该索引和班级基本表建立关联。
(2)教师基本表,包括字段:
教师编号、教师姓名。
教师编号为主键、主索引。
(3)课程基本表,包括字段:
课程编号、课程名称、课程性质、学时、学分。
课程编号为主键、主索引。
(4)学生选课表,字段包括:
学号、课程编号、成绩。
学生、课程编号做主索引,分别为学号、课程编号、成绩建立索引,通过学号和学生基本表建立关联,通过课程编号和课程基本表建立关联,成绩索引用于做统计计算,学号和课程号一起构成主键,这两个字段均是外码。
(5)教师任课表,包括字段:
教师编号、课程编号。
分别为教师编号和课程编号建立索引,通过教师编号和教师基本表建立关联,通过课程编号和课程基本表建立关联。
(6)班级表,字段包括:
班级编号、所属学院编号。
为班级编号建立索引,通过班级编号和学生基本表建立关联,通过所属系编号和学院基本表建立关联。
(8)用户信息基本表,字段包括:
用户名、用户密码。
4数据库的物理设计
下面列出选课系统所有表的结构和索引,为了便于理解,将部分数据列出。
(1)学生信息基本表
表名:
Student
结构:
字段名
类型
宽度
必填字段
索引
中文别名
User_id
字符型
20
是
是
学号
Student_name
字符型
20
否
学生姓名
Student_sex
字符型
4
否
性别
Student_nation
字符型
4
否
民族
Student_classid
字符型
50
否
班级
Student_home
字符型
50
否
家庭住址
Student_else
字符型
50
否
备注
User_password
字符型
50
是
密码
(2)教师基本表
表名:
teacher
结构:
字段名
类型
宽度
必填字段
主键
Teacher_id
字符型
50
是
是
Teacher_name
字符型
50
是
Teacher_collage
字符型
50
(3)课程基本表
表名:
course
结构:
字段名
类型
宽度
必填字段
主键
Course_id
字符型
50
是
是
Course_name
字符型
50
Course_period
整型
4
Course_credit
整型
2
Course_kind
字符型
8
(4)学生选课表
表名:
student_course
结构:
字段名
类型
宽度
必填字段
主键
ID
字符型
4
是
是
User_id
字符型
50
是
Course_id
字符型
4
Student_grade
字符型
2
Course_year
字符型
8
(5)班级信息表
表名:
Class
结构:
字段名
类型
宽度
必填字段
主键
Class_id
字符型
50
是
是
Class_name
字符型
50
Class_department
整型
4
Class_collage
整型
2
Class_teacherid
字符型
8
5系统模块设计
5.1登录界面
(1)运行程序,输入用户名和密码,如下图所示。
图5-1登录界面
(2)单击“登陆”,即可进入系统的主界面,如下图所示。
图5-2管理员登录界面图
图5-3学生登录界面图
5.2学生信息设置
图5-4学生课程信息界面图
图5-5学生选课浏览界面图
图5-6学生成绩查询界面图
5.2管理员设置
图5-7学生管理界面图
图5-8班级管理界面图
图5-9课程管理界面图
图5-10教师信息界面图
图5-11选课管理界面图
6部分代码
protectedvoidBt_login_Click(objectsender,EventArgse)
{
if(DropDownList1.SelectedItem.Text.ToString()=="学生")
{
stringconn="server=(local);database=S_Class;UserID=sa;Password=123456";
SqlConnectioncn=newSqlConnection(conn);
cn.Open();
stringstrsql="selectUser_id,User_password,User_powerfromStudentwhereUser_id='"+Tbx_id.Text+"'andUser_password='"+Tbx_pwd.Text+"'";
SqlCommandcm=newSqlCommand(strsql,cn);
SqlDataReaderdr=cm.ExecuteReader();
if(dr.Read())
{
Session["User_id"]=dr["User_id"];
Response.Redirect("xsgr.aspx");
}
else
{
MessageBox.Show("登录失败,请检查输入!
","警告!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
cn.Close();
}
if(DropDownList1.SelectedItem.Text.ToString()=="管理员")
{
stringconn="server=(local);database=S_Class;UserID=sa;Password=123456";
SqlConnectioncn=newSqlConnection(conn);
cn.Open();
stringsql="selectid,passwordfromuserswhereid='"+Tbx_id.Text+"'andpassword='"+Tbx_pwd.Text+"'";
SqlCommandda=newSqlCommand(sql,cn);
SqlDataReaderds=da.ExecuteReader();
if(ds.Read())
{
//Session["id"]=ds["id"];
Response.Redirect("student.aspx");
}
else
{
MessageBox.Show("登录失败,请检查输入!
","警告!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
cn.Close();
}
if(Tbx_id.Text==""||Tbx_pwd.Text=="")
{
MessageBox.Show("登录失败,请检查输入!
","警告!
",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
总结
通过本次课程设计,我加深了对数据库知识的了解。
为了做好这次课程设计,我重新复习了一遍跟题目相关的数据库知识,C#编程语言,特别是需要实现的那部分原理。
除此之外,还有上网查询一些相关的资料,和一些实际问题实现的例子,通过理解别人实现的过程,学习实现的一些基本思路。
在这个过程中,我对整个连接数据库程序的过程有了一个更立体的认识和了解。
在这次的设计中,让我进一步认识了数据库的设计过程以及设计各阶段所做的工作和要注意的细节部分,对于数据库的功能也有了更深的了解。
在了解了数据库的功能以后,我还学会了通过数据环境设计器连接数据库的方法,使得我可以通过VB的编程语言实现与数据库的连接,进而实现相关的读写操作。
在品味成功喜悦的同时我深知自己掌握的知识还远远不够,将学习到的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。
把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来。
知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。
而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。
计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。
在设计阶段,通过对课题的深入分析与研究,迫使我们们对技术有了一定的了解。
计算机技术的高速发展,使我们深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还需加强学习。
致谢
在做课程设计时遇到很多问题,但是在老师的虚心指导和同学的耐心的帮助下,使我增加了自信心,也培养了我对做课程设计的兴趣,一开始,因为有些概念不太清晰,所以做起来有很多困难,耐心与信心逐渐消磨,工作变的枯燥乏味,在老师和同学的帮助下,终于逐渐理清思绪,掌握基本要领,工作也变的顺利且有趣起来。
另外,课程设计过程中,我学会了很多东西:
首先,要想更好的完成一项任务,必须要有一种不屈不挠的精神和坚持不懈的意志。
因为设计的过程,是很枯燥乏味的,稍不留神就会出现错误,而一点小小的错误将导致程序不可运行。
其次,严谨的科学态度也是必不可少的,忽视小的细节,或以无所谓的态度对待,都将导致事情做的不完美。
再次通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
当我们回顾这过去的一周时,我会发现自己收获了很多,也成长了很多,懂得了如何去学习以前未曾学过的新思维新方法,懂得了如何去多方位地查找资料,完善和创新一些旧的思维方式,懂得了如何同老师和同学交流和协作……相信这次课程设计的体