1、 洛 阳 理 工 学 院 课 程 设 计 报 告 课程名称 数据库课程设计 设计题目 学生成绩查询系统 专 业 计算机科学与技术 班 级 B100506 学 号 B10050634 姓 名 孙帅杰 完成日期 2013年1月6号
2、 课 程 设 计 任 务 书 设计题目: 学生成绩管理系统 设计内容与要求: 设计内容: 教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。一个教师可以教授多个班的多门课程。 教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。 课程分两类,必修课和选修课。学生可以选修课程,每学期几门。学生可以查看自己各门课程的成绩。学生还可以进行评教,给老师打分。 系统管
3、理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。 设计要求: 要求完成需求分析,写出功能需求和数据需求描述; 在需求分析的基础上完成数据库的概念结构设计、逻辑结构设计、物理结构 设计; 用C#语言,完成管理系统的部分程序模块的界面设计。 指导教师: 陶 荣 2012年12月28日 课 程 设 计 评 语 成绩: 指导教师:
4、 年 月 日 洛 阳 理 工 学 院 课 程 设 计 报 告 目 录 1.绪论 1 1.1 设计目的 1 1.2 开发工具选择 1 1.3 开发环境 1 1.4 本报告的主要内容 1 2.需求分析 2 2.1 需求分析的任务 2 2.2 功能需求 3 2.3 数据需求 3 3.总体设计 4 3.1设计概述 4 3.2系统总体结构及功能模块划分 4 3.3系统数据库概念结构设计 5 3.4 逻辑结构
5、设计 8 4.主程序设计 10 4.1 登录模块 10 4.2 学生信息查询、保存、及修改 12 4.3 用户管理 14 5.设计总结 16 6.心得体会 17 参考文献 17 1.绪论 1.1 设计目的 随着学生的数量的日益增多,学校对学生成绩管理的要求也越来越高,因此学校对学生信息的管理也更系统化,数字化,为了提高学生的实际应用数据库的能力,使学生锻炼简单的数据库开发能力,因此决定设计一个简单的学生成绩管理系统,包括学生信息,课程信息,以及成绩信息和任课教师信息,能够存储相应学生评教信息,和课程安排提供的学
6、生成绩管理各种功能分为面向学生,教师和教务员三部分,其中教务员可以录入学生,教师,班级,课程信息,每个专业、每个班级需要学习哪些课程,指定课程的任课教师,给每个班的每门课程安排指定的认课老师。教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。课程分两类,必修课和选修课。学生可以选修课程,每学期几门。学生可以查看自己各门课程的成绩,进行评教,给老师打分。该学生成绩管理系统类似于简单的学校教务系统,能对学校日常事务进行简单的管理。 本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO.net的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际
7、问题的能力。 1.2 开发工具选择 本系统后台数据库采用Microsoft SQL Server 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft 公司的Visual Studio 2010作为主要开发工具,可与SQL Server 2008数据库无缝链接。 1.3 开发环境 系统开发平台:Microsoft Visual Studio2010 系统开发语言:C# 数据库管理软件:SQL Server 2008 1.4 本报告的主要内容 本报告详细的介绍了学生成绩管理系统的开发过程,主要涉及到的工作如下:系统的
8、需求分析、系统的总体设计、系统的概念设计、系统部分模块的详细设计。 2.需求分析 进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。求分析是整个设计过程的基础,作为“地基”的需求分析是否做得充分与准确,决定了 在其上构建数据库大厦的速度与质量。需求分析做的不好,甚至会导致整个数据库返工重做,因此对用户需求进行正确,合理的分析是至关重要的。 2.1 需求分析的任务 需求分析是在于弄清用户对数据库应用系统的确切需求。明确有哪些用户,主要实体之间的联系和信息;需要保存哪些信息,即是创建表的内容,在此基础上明确登录用户能实现哪些功能操作。 学生成绩管理系统有
9、三类登录用户:教务员、教师、学生。需要实现的功能和操作如下: (1)教务员 可以录入学生、教师、班级和课程信息,可以安排每个专业每个班级需要学习那些课程,可以为每门课程安排任课教师,可以结合每个班的必修课的开课情况,以及教授相应课程的任课教师情况对各个班级各门课程指定相应的任课教师,并且对所有的这些信息拥有查看和录入权限。 (2)教师 可以查看自己所教授的必修课的班级及学生信息,并且可以查看选修自己所教授的选修课的学生名单。课程结束后,教师可与录入学生成绩,包括学生的必修课成绩和选修课成绩。 (3)学生 可以查看本学期所开设的所有选修课的详细情况,并可以查看相应的选修课的任课教师,
10、然后结合自己想选修的课程,及想选修哪个老师开的这门课的情况选定课程。登录系统后学生还可以查看自己各门课程的成绩。包括选修课成绩及必修课成绩。最后学生可以对教自己课程的所有认可教师进行评教。 2.2 功能需求 我们的系统需要实现的功能主要包括以下几个方面: (1)设计不同用户的操作权限和登录方法。 (2)教务员可以录入班级、课程、学生和任课教师的信息;安排专业必修课,给任课教师安排课程;给每个班级每门课制定任课教师。 (3)教师可以查询所授课程的学生信息,可以录入所授课程的学生的成绩。 (4)学生有评教和查询个人成绩信息的权利。 (5)用户界面的直观性和成绩查询结果的
11、可视化。 满足上述要求的系统应该包括以下几个模块:基本数据维护功能;数据库管理功能;基本业务功能。 基本数据维护功能如下: (1)录入学生的信息。 (2)录入学生的成绩信息。 (3)录入课程信息。 (4)录入任课教师信息。 (5)录入班级详细信息。 (6)查询结果的可视化管理。 数据库管理功能如下: (1)成绩信息管理。 (2)帐户信息管理。 基本业务功能 (1)查看成绩信息。 (2)录入成绩信息。 2.3 数据需求 通过调查,总结出用户对数据的需求如下: (1)学生信息 包括:学号、学生
12、姓名、性别、年龄、登录密码,班级。 (2)课程信息 包括:课程号、课程名、学分、课程性质(必修或选修)。 (3)专业信息 包括:专业号、系别、专业类别(理科、工科或文科)。 (4)教师信息 包括:教师工号、姓名、年龄、性别、登录密码。 3.总体设计 3.1设计概述 根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。 3.2系统总体结构及功能模块划分 经过对系统的需求分析,学生信息管理系统主要划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。系统的总体结构如图3-1所示。 学
13、 生 成绩录入 学 生 信 息 管理 学生信息管理系统 学 生 信 息 查询 图3-1 系统的总体结构示意图 (1)学生信息查询模块 学生信息查询:学生可以根据本人学号、姓名进行信息查询。学生信息查询模块结构如图3-2所示。 学生信息查询 学号查询 姓名查询 图3-2 学生信息管理模块结构示意图 (2)学生信息管理模块 学生信息管理:主要是用于学生信息更新、插入、删除。学生管理模块结构如图3-3所示。 基本信息录入 成绩录入
14、 基本信息更新 成绩更新 学 生 信息删除 学 生 信 息 录入 学生信息管理 学生信息更新 图3-3 学生信息管理模块结构示意图 3.3系统数据库概念结构设计 根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。 系统E-R图 系统E-R图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。 学生实体 密码 性别 姓名 学号 班号 年龄 (1)学生实体包括学号、姓名、年龄、性别、班
15、号、密码等属性,实体图如图3-4所示 图3-4 学生实体图 (2)班级实体包括班号、专业号和班长等属性,实体图如图3-5所示 班号 班级实体 班长 专业号 图3-5 班级实体图 (3)任课教师实体包括工号、姓名、年龄、性别、密码等属性,实体图如图3-6所示 任课教师实体 工号 姓名 年龄 性别 密码 图3-6 任课教师实体图 (4) 专业实体包括专业号、系别
16、专业性质等属性,实体图如图3-7所示 专业实体 系 专业号 性质 图3-7专业实体图 (5)课程实体包括课程号、课程名、学分、课程性质即分类等属性,实体图如图3-8所示 课程实体 课程名 课程号 分类 学分 图3-8 课程实体 整体E-R图如3-9所示 学生 班级 专业 课程 任课教师 属于 担任 包括 排课 必修 评教 考试 选修 m n n 1 1 n n n n n n m m m m
17、 3-9 整体E-R图 3.4 逻辑结构设计 (1) 将E-R图转化为关系模型为: 学生(学号,姓名,年龄,性别,班号,密码) 此为学生实体对应的关系模式,该关系模式已包含了联系“属于”所对应的关系模式。 专业(专业号,系,性质) 此为专业实体对应的关系模式。 班级(班号,专业号,班长) 此为班级实体对应的关系模式,该关系模式包含了联系“包括”锁对应的关系模式。 任课教师(工号,姓名,年龄,性别,密码) 此为实体任课教师对应的关系模
18、式。 教务员(帐号,密码) 课程(课程号,课程名,学分,分类) 此为课程实体对应的关系模式。 排课(课程号,工号) 此为联系“排课”对应的关系模式。 选修(学号,课程号,工号) 此为联系“选修”对应的关系模式。 必修(专业号,课程号) 此为联系“必修”对应的关系模式。 评教(学号,工号,课程号,评分) 此为联系“评教”对应的关系模式。 考试(学号,课程号,成绩) 此为联系“考试”对应的关系模式。 担任(班号,工号,课程号) 此为联系“担任”对应的关系模式。 (2) 物理模型设计 学生信息
19、表具体有学号,姓名,性别,系名,专业,出生日期,如表3-1所示 表3-1学生信息表 字段 类型 长度 约束 索引 学号 字符型 8 主键约束 有 姓名 字符型 10 性别 字符型 2 系名 字符型 20 专业 数值型 20 出生日期 字符型 8 教师信息具体有教师号,姓名,性别,院系,专业,联系电话,如表3-2所示 表3-2教师信
20、息表 字段 类型 长度 约束 索引 教师号 字符型 8 主键约束 有 姓名 字符型 10 性别 字符型 2 院系 字符型 20 专业 数值型 20 联系电话 字符型 11 管理员信息具体有用户名、密码、用户级别,如表3-3所示 字段 类型 长度 备注 用户名 字符型 8 学号、教师号 密码 字符型 6 用户级别 字符型 10 一般操作员/系统管理员 表3-3管理员信息表 课程表信息具体有课程号,课程名,学分,教师,如表3
21、4所示 表3-4课程表信息 字段 类型 长度 约束 索引 课程号 字符型 10 主键约束 有 课程名 字符型 30 学分 字符型 2 教师 字符型 10 成绩表具体有学号,课程号,成绩,如表3-5所示 表3-5成绩表 字段 类型 长度 约束 索引 学号 字符型 8 主键 有 课程号 字符型 10 主键 有 成绩 数值型 5 4.主程序设计 4.1 登录模块 根据不同的用户身份进入系统,查询相关信息,图4-1为用户登录界面。
22、 图4-1用户登录界面 源代码: private void btnOK_Click(object sender, EventArgs e) { if (txtBoxUser.Text.Trim() == "") { this.labelInfo.Text = "请输入您的用户名!"; } else if (txtBoxPsw.Text.Trim() == "")
23、 { this.labelInfo.Text = "请输入您的密码!"; } else { Command com = new Command(); string str = @"select * from UserInfo where userId = '" + txtBoxUser.Text.ToString() + "'"; DataTable table = co
24、m.GetDataSet(str); if (table.Rows.Count <= 0) { this.labelInfo.Text = "用户名不存在!"; txtBoxUser.Text = ""; txtBoxPsw.Text = ""; return; } str = @"select
25、 * from UserInfo where userId = '" + txtBoxUser.Text.ToString() + "' and passWard = '" + txtBoxPsw.Text.ToString() + "'"; DataTable tableUser = com.GetDataSet(str); if (tableUser.Rows.Count > 0) { _currentUser = txtBoxUser.Text;
26、 _currentPsw = txtBoxPsw.Text; IsLogin = true; this.Close(); } else { this.labelInfo.Text = "密码错误!"; txtBoxPsw.Text = ""; }
27、 } } 4.2 学生信息查询、保存、及修改 对学生成绩等信息的查询,图4-2为查看学生信息界面,图4-3为学生信息显示界面。 图4-2 查看学生信息界面 图4-3 学生信息显示界面 源代码: protected virtual void frmViewInfo_Load(object sender, EventArgs e) { this.dataGridViewInfo.Rows.Clear();
28、 this.dataGridViewInfo.Columns.Clear(); //this.dataGridViewInfo.EditMode = DataGridViewEditMode.EditOnEnter; DataGridViewColumn col = null; col = new DataGridViewTextBoxColumn(); col.Name = "stuNum"; col.HeaderText = "学号";
29、 this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name = "name"; col.HeaderText = "姓名"; this.dataGridViewInfo.Columns.Add(col); DataGridViewComboBoxColumn col0 = new DataGridViewComboBoxCo
30、lumn(); col0.FlatStyle = FlatStyle.Flat; col0.HeaderText = "性别"; col0.Name = "sex"; col0.Items.Add("男"); col0.Items.Add("女"); this.dataGridViewInfo.Columns.Add(col0); col = new DataGridViewTextBoxColumn();
31、 col.Name = "birthday"; col.HeaderText = "出生年月"; this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name = "nation"; col.HeaderText = "民族"; this.dataGridViewInfo.Columns.Add(col);
32、 col = new DataGridViewTextBoxColumn(); col.Name = "address"; col.HeaderText = "籍贯"; this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name = "phone"; col.HeaderText = "联系电话";
33、 this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name = "classid"; col.HeaderText = "班级"; this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name
34、 = "intoSchoolDate"; col.HeaderText = "入学时间"; this.dataGridViewInfo.Columns.Add(col); col = new DataGridViewTextBoxColumn(); col.Name = "Sdept"; col.HeaderText = "系别"; this.dataGridViewInfo.Columns.Add(col); }
35、public virtual void SetFromText() { if (OperTypeOfBill == TypeOfOperationForBill.nView) { this.Text = "查看学生信息"; } else { this.Text = "编辑学生信息"; } } if (com.ExecuteComma
36、nd(sql) > 0) { dataGridViewInfo.Rows.Clear(); SelectStudentInfo(); MessageBox.Show("数据修改成功!"); } 4.3 用户管理 用户可以根据自己的需求来实现密码修改等功能。 图4-4密码修改界面 图4-5密码修改成
37、功 图4-6添加新用户界面 图4-7用户添加成功 源代码: protected void btnOk_Click(object sender, EventArgs e) { if (txtBoxOldPsw.Text == null || txtBoxOldPsw.Text.Trim() == "") { MessageBox.Show("请输入旧密码!。", "提醒", MessageBoxButtons.OK, Mess
38、ageBoxIcon.Information); return; } if (txtBoxNewPsw.Text == null || txtBoxNewPsw.Text.Trim() == "" || txtBoxEnterPsw.Text == null || txtBoxEnterPsw.Text.Trim() == "") { MessageBox.Show("请输入新密码!。", "提醒", Message
39、BoxButtons.OK, MessageBoxIcon.Information); return; } string currPwd = LoginForm.CurrentPsw; if (currPwd == txtBoxOldPsw.Text.Trim()) { if (isSame()) { Command com = new Comman
40、d(); string str = @"update UserInfo set passWard = '" + txtBoxEnterPsw.Text.ToString() + "' where userId = '" + LoginForm.CurrentUser + "'"; if (com.ExecuteCommand(str) > 0) { MessageBox.Show("密码修改成功!。", "提醒", Me
41、ssageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("密码修改失败,请联系管理员!。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } } els
42、e { MessageBox.Show("两次密码输入不一致!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("输入密码错误!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
43、 } } public FormNewUser() : base() { this.labelOldPsw.Text = "用户名"; this.Text = "新用户注册"; this.btnOk.Click -= new System.EventHandler(this.btnOk_Click); this.btnOk.Click += new System.EventHandler(btnEbter
44、Click); } 5.设计总结 在这次课程设计中,重点是要掌握数据库设计方法。数据库设计特点:三分技术,七分管理,十二分基础数据。在数据库建设中不仅涉及技术,还设计管理。要建设好一个数据库应用系统,开发技术固然重要,但相比之下则管理更重要。 进行数据库的设计首先必须了解与分析用户需求。需求分析是整个设计过程的基础,是最困难、最耗时的一部分。需求分析做的不好,甚至会导致整个数据库设计返工重做。需求分析的任务是通过详细的调查现实世界要处理的对象,充分了解用户的各种需求,然后在此基础上确定系统功能。系统还必须充分考虑今后可能的扩充和改变。 概念结构设计是整个数据
45、库设计的关键,他通过对用户需求进行综合、归纳与抽象,形成一个独立与具体DBMS的概念模型。逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。概念结构的特点:能真实、充分的反映现实世界,包括失误和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;易于理解,从而可以用它和不熟悉计算机的用户交流意见,用户的积极参与是数据库设计成功的关键;易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;易于向关系、网状、层次等各种数据模型转换。 本系统主要针对的用户是学生、教务员和老师。该设计的优点是:不同用户的功能都单独存储在数据库中相应的表中使他们
46、可以很方便地满足自己的需求。不足是:存在部分数据冗余,不利于该数据库向大型数据库扩展。但该设计基本能满足三类的用户的需求,完成简单的功能。时间有限,部分功能还没有实现,有待完善! 6. 心得体会 通过将近一个星期的设计,我对数据库在生活中的广泛应用有了更深的体会,同时也加深了对SQL2008的认识,了解了相关的SQL的知识,尤其是对数据库的原理与开发程序的应用有了更进一步的认识和了解。 课程设计是我们数据库专业课程知识综合应用的实践训练,在课设中也遇到了很多问题,经过向老师询问和跟同学们交流,认真的思考,积极解决问题,终于解决了那些问题。在解决问题的过程中,我也学到了很多知识,更
47、是让我把课本的知识应用到实际之中,让我了解了我们学习的知识有什么用,增强我的自信心和学习的动力。同时感谢老师和同学在课程设计过程中的帮助! 总之,通过这次课程设计,我获益匪浅。 参考文献 [1] 王珊.数据库技术与应用[M].北京:清华大学出版社,2005. [2] 姚卿达.数据库设计[M].北京:高等教育出版社,1987. [3] 王珊,萨师煊.数据库设计理论与实践[M].北京:高等教育出版社,1984. [4] 张跃廷,许文武.数据库系统开发完全手册[M].北京:人民邮电出版社,2007. [5] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006. [6] 郑宇军.C#面向对象程序设计[M].北京:人民邮电出版社,2009. 17






