目录
1 绪论
1.1 课程意义
2 需求分析
2.1可行性分析
3 系统数据库设计
3.1学生信息表
3.2 课程信息表
4 数据库实现
4.1创建表空间及用户
4.2表创建
4.3存储过程创建
4.4触发器创建
4.5 视图创建
4.6序列创建
5 学生成绩管理系统实现
5.1 用户登录界面
5.2 orcal数据库连接
6 系统测试
6.1 用户登录界面测试
6.2 学生信息表测试
6.3课程信息表测试
6.4选课信息表测试
6.5成绩视图测试
7 课程设计总结
1 绪 论 学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。随着办学规模的扩大和招生人数的增加,建立一个成绩管理系统是非常必要的。普通的成绩管理浪费了许多的人力和物力,已不能适应时代的发展。在当今信息时代,这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。为了提高成绩管理的效率,我选择了学生成绩管理系统作为毕业设计的课题。 1.1 课程意义随着高校办学规模的扩大和招生人数的增加,学生成绩管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分, 介于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间, 学生也能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。 在现代高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大、不好管,对于一个学校而言,管理好学生的成绩,是非常重要的。因此开发出一套学生成绩管理系统是非常必要的,应用到的技术数据库设计(ER图、关系模式、表设计、存储过程、触发器、视图)应用开发语言VC#访问Oracle数据库。
2 需求分析 2.1可行性分析2.1.1技术可行性分析 由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此, 比较适合于采用数据库管理。且学校用于学生管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。 2.1.2技术可行性分析 由于本系统采用网络方式,因此投入比较多,但此系统建成后可以直接进行信息查询和修改,本系统以后节省不少人员一因此可以带来一定的经济效益。从经济上是可行的。 2.1.3功能需求 系统涉及到两个实体学生和课程,学生的属性有学号、姓名、专业名、性别、出生日期和备注;课程的属性有课程号、课程名称、开学学期、学时和学分,同时学生可以根据学号和课程号进行选课,学生选课信息的属性有学号、课程号和成绩。系统可以实现数据管理功能,具有学生信息表、课程信息表、学生选课信息表中的数据插入、修改和删除功能;同时具有对数据查询功能:查询学生所有的课程成绩,并按照成绩进行排序;查询学生总学分(如果学生成绩低于60分,则该课程的学分不能记在总分里)
2.1.5关系模式 考生信息表(考生准考证#,姓名,性别,身份证号,考试考点代码(外键),院系名称,考试级别名称) 管理员(管理员id,管理员姓名,管理员密码) 考试信息表(考试信息表的主键,考生准考证号,笔试成绩,上机成绩,总成绩) 院系(院系名字#) 考点信息表(考点代码#,考点名称) 考点管理表(管理员id,考点代码id) 考生信息管理表(考生准考证,管理员id) 成绩信息管理表(管理员id,考试信息的id) 院系查看信息表(院系名称,考试信息表) 性别(男女) 考点代码为整数 













3 系统数据库设计 3.1学生信息表学生信息表中,学号是主码,性别取值是“男”或“女”图3.1 图3.1学生信息表 3.2 课程信息表课程信息表中,课程号是主码,学分和学时要求大于0,开学学期是数值类型,取值在1和8之间图3.2。 图3.2课程信息表 3.3选课信息表 学生选课信息表中,采用自增长序列作为主码,学号和课程号是外码,分别参考学生信息表的学号和课程信息表的课程号;成绩采用百分制如图3.3。
图3.3学生选课信息表
4 数据库实现 4.1创建表空间及用户新建表空间SS和临时表空间SSTemp,新建用户student;如图4.1 图4.1表空间临时表空间 图4.2用户创建 4.2表创建4.2.1课程信息表 根据关系模式设计出课程信息表如图4.3 图4.3创建课程信息表 4.2.2选课信息表 根据关系模式设计出选课信息表如图4.4 图4.4创建选课信息表 4.2.3学生信息表 根据关系模式设计出学生信息表如图4.5 图4.5创建学生信息表
4.3存储过程创建4.3.1课程信息表插入的存储过程 课程信息表插入的存储过程在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在插入数据失败如图4.6。
图4.6课程信息表插入的存储 4.3.2课程信息表删除的存储过程 课程信息表删除的存储过程在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在删除数据。 图4.7课程信息表删除的存储 4.3.3课程信息表更新的存储过程 课程信息表中更新的存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新数据失败,课程信息表中更新的存储过程如图4.8 图4.8课程信息表更新的存储过程 4.3.4学生信息表添加的存储过程 学生信息表中添加存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新失败如图4.9 图4.9学生信息表中添加存储过程 4.3.5学生信息表删除的存储过程 学生信息表中删除存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新数据失败如图4.10
图4.10学生信息表中删除存储过程 4.3.6学生信息表更新的存储过程 学生信息表更新存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新数据失败如图4.11 图4.11学生信息表中更新存储过程 4.3.7选课信息表添加的存储过程 选课信息表插入的存储过程在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在插入数据失败如图4.12 图4.12选课信息表中插入存储过程 4.3.8选课信息表删除的存储过程 选课信息表中删除存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新数据失败如图4.13 图4.12选课信息表中删除存储过程 4.3.9选课信息表更新的存储过程 选课信息表中更新存储过程,在更新之前,查询数据表中是否存在相应记录,存在更新数据,不存在更新数据失败如图4.13 图4.13选课信息表中更新存储过程 4.4触发器创建在删除学生信息时,删除该学生选课信息表中数据触发器图4.14 图4.14删除学生信息表触发器
在删除课程时,删除该学生选课信息表中数据触发器图4.15 图4.15删除课程信息表触发器 4.5 视图创建查询所有课程总学分如图4.16
图4.16查询高于60总学分视图
查询总成绩视图如图4.17
图4.17查询所有成绩的视图 4.6序列创建创建序列如图4.18 图4.18序列创建
5 学生成绩管理系统实现 5.1 用户登录界面用户登录界面设计如图5.1 图5.1用户登录界面 5.2 orcal数据库连接连接Oracle数据库代码如下 public partial class 登录窗口 : Form { public 登录窗口() { InitializeComponent(); } private void login_Click(object sender, EventArgs e) { String username = txtUsername.Text; String password = txtPassword.Text; ; String connstring = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=" + username + ";Password=" + password + ";"; OracleConnection conn; conn = new OracleConnection(connstring); try { conn.Open(); System.IO.File.WriteAllText(@"c:\a.txt", connstring); 主页面fm1 = new 主页面(); conn.Close(); this.Hide(); fm1.ShowDialog(); } catch (Exception ex) { MessageBox.Show("无法登陆请核对用户名,密码核对数据库连接或者约束"); MessageBox.Show(ex.ToString()); } } } } //选课信息表更新 private void btnSCalter_Click(object sender, EventArgs e) { String csid = txtCJH.Text.Trim(); int score = Int32.Parse(cobcsscore.Text); int vcount;
OracleConnection conn = new OracleConnection(connstring); conn.Open(); OracleCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "selectcourse_inf_update";
cmd.Parameters.Add("v_csid", OracleType.VarChar).Direction = ParameterDirection.Input; cmd.Parameters["v_csid"].Value = csid; cmd.Parameters.Add("v_score", OracleType.VarChar).Direction = ParameterDirection.Input; cmd.Parameters["v_score"].Value = score;
cmd.Parameters.Add("vresult", OracleType.Number).Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); vcount = Int32.Parse(cmd.Parameters["vresult"].Value.ToString()); conn.Close(); if (vcount == 0) { MessageBox.Show("该选课信息不存在,无法更新"); } else if (vcount == 2) { MessageBox.Show("插入数据有误请核对"); //MessageBox.Show(sbirthday + "\r\n" + ssex); } else selectcourse_inf_datarefresh();} 登录成功 6 系统测试 6.1 用户登录界面测试登录失败测试如图6.1
图6.1登录失败测试 登录成功测试如图6.2 图6.2登录成功测试
6.2 学生信息表测试学生信息表插入如图6.3 图6.3学生信息表插入 学生信息表重复插入失败如图6.3
图6.3学生信息表重复插入失败学生信息表修改如图6.4
 图6.4学生信息表修改 学生信息表删除如图6.5 图6.5学生信息表删除
6.3课程信息表测试课程信息表查询如图6.6 图6.6课程信息表查询
课程信息表插入如图6.7 图6.7课程信息表插入
课程信息表插入课时小于0的如图6.8 图6.8课程信息表插入课时小于0
课程信息表插入学期出现异常如图6.9 图6.9课程信息表插入学期出现异常
课程信息表修改如图6.10 图6.10课程信息表修改
课程信息表删除如图6.11
图6.11课程信息表删除
6.4选课信息表测试选课信息表添加如图6.12 图6.12选课信息表添加
选课信息表重复添加如图6.13 图6.13选课信息表重复添加
选课信息表删除如图6.14 图6.14选课信息表删除
选课信息表修改如图6.15 图6.15选课信息表修改 6.5成绩视图测试查询总成绩如图6.16 查询总成绩图6.16
查询低于60分不计入总学分如图6.17 图6.17查询低于60分不计入总学分
黑盒子测试用例 表6-1黑盒测试
7 课程设计总结 两周的课程设计结束了, 我和同学们一起度过了这段忙 碌而充实的时光。 这次的课程设计深刻的反映出实践是检验 真理的唯一标准这句话的真谛。 课程设计是我们专业课程知 识综合应用的实践训练,是我们迈向社会,从事职业工作前 一个必不少的过程。 “千里之行始于足下” ,通过这次课程设 计,我深深体会到这句千古名言的真正含义。我今天认真的 进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳 健地在社会大潮中奔跑打下坚实的基础。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领 悟,不断获取。最终的检测调试环节,本身就是在践行。 “过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于 游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想 到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功 的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收 获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 同时在开发过程中遇见了很多问题,也是在不断地探索。
完整的Word格式文档51黑下载地址:
oracle数 据 库.docx
(1.11 MB, 下载次数: 10)
|