下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生学籍管理系统1. 问题描述随着社会的发展,基本上所有的具有一定数量数据的企事业单位或机关部门都开始使用计 算机数据库来做管理。在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用 计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性, 提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。该课程设计 要求设计一个学籍管理的数据库系统,数据库中包含学生的基本信息,学校院系信息,班 级信息以及课程设置的信息。同时还要设计它们之间的关系,如学生与课程关系和学生的 成绩等, 最后还要对一些数据进行查询, 如查询学生成绩的各种集合等。 而本系统的开发, 为
2、学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面: 第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许 多资源;第三,本系统的运行可以大大的提高学校的工作效率;第四,本系统可以使敏感 文档更加安全,等等。我们通过该课程设计,应该达到的目的是把数据库理论知识更加的 巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。1.1 系统功能分析 系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系 统开发的总体任务的基础上完成。本系统需要完成的功能主要有: 院系管理,包括院系的查询、插如、编辑。 班级管理,包括班级
3、的查询、插如、编辑、人数的管理等。 课程管理,包括课程的查询、插入、编辑。 学生信息查询管理,包括学生基本信息的查询如学号、年龄、所属班级、所属院系、 民族、籍贯等。 学生学籍管理,可根据院系来查看学生的基本信息,还可对学生进行查询、编辑、 删除等操作。 学生注册管理,提供给系统学生的基本信息,如学号、年龄、所属班级、所属院系、 籍贯、政治面貌等。成绩录入管理,登记学生的每门课程的成绩。 成绩查询管理,提供给系统学生的学号从而查询出学生在校期间每门课程的成绩。资料统计管理,统计各专业学生某学期的学习成绩情况。以考试为例,分作90100分,8089分,7079分,6069分,60分以下五档人数及
4、占总人数的百分率。 按照学生的年龄大小、地区的来源、政治面貌作人数的统计等。1.2系统功能模块设计对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图1所示的系统功能模块图。图1系统功能模块图2. 数据库系统设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应 用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保 证数据的完整性和一致性。设计数据库系统时应该充分了解用户各个方面的需求,包括现有的以及将来可能增加的 需求。数据库设计一般包括以下几个步骤:需求分析、概念设计、逻辑设计、物理设计、数据 库实施、数据库运行和维护。2
5、.1需求分析用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库接受能充 分满足各种信息的输入和输出。针对学生学籍管理系统的需求,通过对学生学籍管理工作过程 进行分析,设计如下所示的数据项和数据结构:院系信息,包括的数据项有:院系名称、院系代码。班级信息,包括的数据项有:班级名称、班级代码、班级人数、院系代码。 课程信息,包括的数据项有:课程名称、课程号、课程学时、院系代码。学生信息,包括的数据项有:学生学号、学生姓名、所属班级代码、所属院系代码、 年龄、性别、民族、籍贯、政治面貌、奖惩记录、休复转退记录。成绩信息,包括的数据项有:学生学号、所选课程代码、成绩。2.2概念设计概
6、念模型是数据库系统的核心和基础。根据以上分析结果,绘制出本系统的E-R图,如图2所示。M课程院系1图2 系统E-R图2.3逻辑设计现在需要将上面的数据库概念结构( E-R图)转化为Oracle数据库系统所支持的数据模 型,也就是数据库的逻辑结构。根据数据库的需求分析和概念设计,设计了名为stude nt的数据库。数据库由下面多个表组成,其详细信息如表1-*所示。表1-1 院系信息表列名数据类型可否为空说明departmentlDChar(20)Not null院系代码(主键)DepartmentnameVachar(50)Not null院系名称表1-2班级信息表列名数据类型可否为空说明cla
7、ssIDChar(20)Not null班级代码(主键)ClassnameVarchar(50)Not null班级名称DepartmentlDChar(20)院系代码(外键)studentnumbersmallint班级人数表1-3课程信息表列名数据类型可否为空说明courseIDChar(20)Not null课程号(主键)coursenameVarchar(50)Not null课程名称scorehoursmallint课程学时departmentIDChar(20)院系代码(外键)表1-4成绩信息表列名数据类型可否为空说明courseIDChar(20)Not null学生学号stud
8、entIDChar(20)Not nul课程代码scoresmallint分数表1-5学生信息表列名数据类型可否为空说明studentIDChar(10)Not null学生学号(主键)StudentnameChar(20)Not null学生姓名ClassIDChar(20)班级代码(外键)DepartmentIDChar(20)院系代码(外键)SexChar(2)性别AgeSmallint年龄NationVarchar(10)民族NativeplaceVarcahr(50)籍贯StatusVarchar(20)政治面貌RewardVarchar(50)奖惩记录leavetypeVarcha
9、r(10)休复转退记录2.4 物理设计2.41 确定关系模型的存取方法 在实际设计中最常用的存取方法是索引,使用索引可以大大减少数据的查询时间,在 建立索引时应遵循: 在经常需要搜索的列上建立索引; 在主关键字上建立索引; 在经常用于 连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引, 因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起 的负面作用。2.42 确定数据库的存储结构 确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日 志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该学籍管
10、理系统的数 据量小, 而且只作实验之用, 所以我只用把数据存储在使用的电脑硬盘上, 不用作更多的安排。2.43 触发器与存储过程设计触发器的设计1student 表上的出发器触发器: 对于学生基本信息表,当注册学生信息时,限制学生性 别只能填写'男'或者'女',当填写错误时,系统自动提示错误;当填写年龄时,年龄 限制在 0和 150 之间,如果填写错误,系统自动报错。create trigger insert_or_update_agebefore insert or update on student for each rowbeginif (:new.age
11、<0) or (:new.age>150) then raise_application_error(-20501,'请输入正确的年龄 !');end if;end;create trigger insert_or_update_ssexbefore insert or update on studentfor each rowbeginif (:new.sex<>'女') or (:new.sex<>'男 ') then raise_application_error(-20501,'请输入正确的性别
12、 !');end if;end;2score 表上的触发器,对于成绩表,当填写成绩时,成绩限制在0和 100分之间,如果填写错误,系统自动报错。create trigger insert_or_update_sscorebefore insert or update on scorefor each rowbeginif (:new.score<0) or (:new.score>100) then raise_application_error(-20501,' 请输入正 确的分数 !');end if;end;2.44 存储过程的设计 在本系统中,我设计
13、了一个比较简单的存储过程,主要是在学生选择一门课程时,自动把 成绩置为 0,因为学期初刚开始学一门课程,并无成绩,所以设计了这样一个存储过程来实现 成绩的变化。create procedure insert_score(studentID char,courseID char,score smallint) as begininsert into score values(studentID,courseID,-1); commit;end;2.5 数据库实施首先配置 oracle 数据库要用到的服务,开始 - 控制面板 - 服务,启动 oracleseverlab 和 oracletnsli
14、stener 两项服务,然后在 oracle 数据库中建立一个学生数据库,填写数据库 的用户名和密码 ( 在学校五楼机房用户名 scott, 密码为 tiger) ,然后连接,最后检测数据是否 连接正确。然后创建要建立的表,如下: 创建院系信息表 create table department(departmentID char(20) primary key, departmentName varchar(50) not null);向院系表中插入数据(一部分,以下同上)insert into department values('001','数学系 ');i
15、nsert into department values('002','工程物理 ');insert into department values('003','土木工程 '); 创建班级信息表 create table class(classID char(20) primary key,className varchar(50) not null, departmentID char(20) , studentnumber smallint, foreign key (departmentID) references depa
16、rtment(departmentID) );工艺美院 02级1班 ','006',5); 数学 02级 1班','001',5); 公物系 03级 1班 ','002',5);向班级信息表中插入数据insert into class values('GM021',' insert into class values('MA021',' insert into class values('GW031','创建课程信息表 create table cou
17、rse (courseID char(20) primary key, coursename varchar(50) not null, scorehour smallint, departmentID char(20), foreign key (departmentID) references department(departmentID)微积分 ( 上)',4,'001');微积分 ( 下)',4,'001'); 计算机操作系统教程 ',4,'004'); 新视野大学英语第一册 ( 上)',4,'0
18、05'); 新视野大学英语第一册 ( 下)',4,'005');); 向课程信息表中插入数据 insert into course values('1',' insert into course values('2',' insert into course values('3',' insert into course values('4',' insert into course values('5',' 在课程表上建立索引 create
19、unique index courcno on course(courseID); 创建学生信息表 create table student(studentID char(10) primary key, studentName char(20) not null, classID char(20) , departmentID char(20), sex char(2) , age smallint , nation varchar(10), nativeplace varchar(50), status varchar(20), reward varchar(50), leavetype
20、varchar(10), foreign key (classID) references class(classID), foreign key (departmentID) references department(departmentID) );向学生信息表中插入数据insert into student values('060861','张三 ','GM021','006','男',18,'汉','哈尔滨 ',' 党员 ',' 优秀三好学生 '
21、;,' 退学 ');insert into student values('060862','李四 ','GM021','006','女',18,'汉','大庆 ',' 团员',' 优秀三好学生 ',' 退学 ');insert into student values('060863','王五 ','GM021','006','男',18,&
22、#39;汉','佳木斯 ',' 党员 ',' 优秀三好学生 ',' 退学 ');insert into student values('060864','杨二 ','GM021','006','女',19,'汉','齐齐哈尔 ','团员 ',' 优秀团员 ',' 休学 ');insert into student values('060865',
23、39;张三丰 ','GM021','006','男',19,'汉'牡丹江 ','团员 ',' 优秀团员 ',' 休学 ');insert into student values('060831','张三 ','TM021','003','男',20,'汉','哈尔滨 ',' 团员 ',' 市级三好学生 ',' 休学 &
24、#39;);insert into student values('060832','李四 ','TM021','003','男',20,'汉','大庆 ',' 党员',' 市级三好学生 ',' 否 ');insert into student values('060833','王五 ','TM021','003','男',19,'汉',
25、39;佳木斯 ',' 团员 ',' 优秀党员 ',' 否 ');insert into student values('060834','杨二 ','TM021','003','男',19,'汉','齐齐哈尔 ','团员 ',' 优秀党员 ',' 否 ');insert into student values('060835','张三丰 ','
26、;TM021','003','男',21,'汉'' 牡丹江 ','团员 ',' 优秀党员 ',' 否 '); 在学生信息表上建立索引 create unique index stusno on student(studentID); 创建成绩信息表 create table score(studentID char(10),courseID char(20),score smallint ,primary key(studentID,courseID);向成绩信息表中插入数据
27、insert into score values('060861','1',75);insert into score values('060862','1',85);insert into score values('060863','1',66);insert into score values('060864','1',90);insert into score values('060821','7',98);insert int
28、o score values('060822','7',78);insert into score values('060823','7',80); 在成绩表上建立索引 create unique index scocno on score(studentID ASC,courseID DESC);3. 系统实现 以上完成了对学生学习管理系统的功能分析和数据库设计后,接下来就是系统的具体实 现了。3.1 开发环境软件环境,本系统的设计采用的语言是C#,在Microsoft Visual Studio 2005和in ternete
29、xplore 软件环境下使用。选择的是 oracle 数据库。本次课程设计是对 oracle 数据库操作, 所以要求的数据库的吞吐量和稳定性高, 维持水平好。 我们还要考虑数据库与操作系统的配合, 此次实验我们选择的是 Windows XP 操作系统。硬件环境,本系统适用于多种类型的计算机,内存容量为 1G 为最好。3.2 系统实现细节此系统实现过程中,最重要的是对学生信息的操作,登记、修改、删除等。在这个页面用C# 进行编写的过程中拖动了两个 GridView 控件和一个 FormView 空间,我的设计思路是想显 示院系的信息然后通过选择院系而现在院系的学生,从而在FormView 控件中
30、显示学生的所有信息并可对其进行修改、删除等操作。而在实现过程中并没有按预想的显示,原因是我没有把 department 和 student 这两个表自然连接起来,后来找到原因通过两表的自然连接实现了此功 能。有很多功能都是通过数据库直接实现的,并不用写代码,而节省了很多时间和精力。3.3 程序调试情况系统在调试过程中总是出现和数据库连接的错误,比如触发器和存储过程在连接的时候 会连接不上提醒错误,通过帮助文档和同学的帮助解决。调用触发器的时候就是系统自动调用 不用在VS2005中另写代码,系统自动调用,而存储过程需要写部分代码,由于对存储过程不是很深入的了解,出现错误,后经帮助改正,并运行成功
31、。还有用VS2005 编写代码的时候要特别注意拖动控件的 ID 名,不可写错,这样的错误和导致系统的失败,而且在找错误的时候很 浪费时间。3.4 结论学生学籍管理系统是学校必不可少的一部分,本系统在课程设计中,设计了一个学生学 籍管理系统,其中包含了对学生基本信息的管理,学生课程以及成绩管理,学校班级以及院系 等。基本上包含了学籍管理所要求的信息,能够完成一定的数据管理功能。但是这是一个完全 不能真正用与实际的系统,它没有操作界面,没有完善的数据完整性的约束,也不具有可靠的 安全性。有很多需要改进的方面,比如:应该设有三个权限,数据库管理员,教师及学生,而 本系统只有管理员权限不全面。管理员可
32、以对数据库进行所有操作,对学生和教师的信息进行 插入,修改和删除等操作;教师只可以查看学生信息和登记学生成绩和修改;学生只可以查询自己的信息,不可修改和删除等操作,由于自己知识和时间的有限,做的不够完善,存在很多 问题,会在以后的不断学习中慢慢改进和完善。2. 结束语通过三星期的数据结构课程设计实习, 我从中受益匪浅, 并且对数据库这一门课程有了更 深一步的认识。在课程设计过程中,我可以把这学期所学的理论知识和实践联系起来,在所要 开发的程序中渐渐融会贯通。虽然我对这些知识还运用得还不是很熟练,但是相信在现在和今 后的学习中会得到更加深刻的掌握。在课程设计中,设计了一个学生学籍管理系统,其中包
33、含了对学生基本信息的管理,学生 课程以及成绩管理,学校班级以及院系等。基本上包含了学籍管理所要求的信息,能够完成一 定的数据管理功能。但是这是一个完全不能真正用与实际的系统,它没有操作界面,没有完善 的数据完整性的约束,也不具有可靠的安全性。但总之在设计当中我们学习到了许多东西,用 到了很多的数据库的理论知识,增强了一定的实践能里。课程设计过程中我们一边设计一边探索,发现理论和实践要充分地结合,是需要扎实的基 本功的,这就表明学好基础知识是理论付诸实践的前提。在课程设计中我学到了很多,希望在 以后我能充分利用课程设计的机会充实自己。参考文献1 薛华成 . 管理信息系统 . 北京 : 清华大学出
34、版社 ,1993.2 霍斯尼 R K 著.李庆龙译 .谷物科学与工艺学原理 .北京:中国食品出版社 ,1989.3 Borko H, Bernier C L.Indexing concepts and methods.New York: Academic Pr.,1978.4 徐滨士 , 欧忠文 , 马世宁等 . 纳米表面工程 . 中国机械工程 ,2000,11(6):707-712.5 Kuehnlw M R, Peeken H, Troeder C et al. The Toroidal Drive. Mechanical Engineering, 1981, 103 (2):32-39.
35、附录:源代码清单 (部分 ) 院系管理页面插入院系信息 代码如下: if (TextBox3.Text = "" )Response.Write( "<script languagu=javascript>alert(' 请输入院系代码 !');</script>" ); else if (TextBox4.Text = "" )Response.Write( "<script languagu=javascript>alert(' 请输入院系名称 !');
36、</script>" );elseOleDbConnection conn = new OleDbConnection ( "Provider=MSDAORA;DataSource=lab;PersistSecurity Info=true;User ID=scott;Password=tiger" );string strVal = "'" + TextBox3.Text + "'," + "'" + TextBox4.Text +"'"
37、;string strIns ="insert into department values(" + strVal + ")" ;/ Response.Write(strIns);/ Response.End();OleDbCommandinsCom = new OleDbComman(dstrIns, conn);conn.Open();insCom.ExecuteNonQuery();conn.Close();Response.Write( "<script language=javascript>alert(' 新纪录
38、添加成功 , 请单击退出回到主页 面 !');</script>"); 班级管理页面插入班级信息 代码如下:if (txtbox1.Text ="" )Response.Write("<script languagu=javascript>alert('请输入班级代码!');</script>"else if (txtbox2.Text ="" )Response.Write("<script languagu=javascript>alert
39、('else if (txtbox3.Text ="" && txtbox4.Text ="" )Response.Write("<script languagu=javascript>alert('请输入班级名称!');</script>"请填写详细信息');</script>"elseOleDbConnection conn = new OleDbConnection ( "Provider=MSDAORA;DataSource
40、=lab;PersistSecurity Info=true;User ID=scott;Password=tiger" );string strVal = "'" + txtbox1.Text + "'," + "'" + txtbox2.Text + "'," + "'" + txtbox3.Text+ "','" + txtbox4.Text +string strIns = "insert i
41、nto class values(" + strVal + ")" /Response.Write(strIns);/Response.End();OleDbCommandinsCom = new OleDbComman(dstrIns, conn);conn.Open();insCom.ExecuteNonQuery();conn.Close();Response.Write( "<script language=javascript>alert(' 新纪录添加成功 , 请单击退出回到主页面!');</script&g
42、t;"); 学生注册页面注册学生基本信息 代码如下:if (TextBox1.Text = "" )Response.Write( "<script languagu=javascript>alert(' 请输入学生学号 !');</script>" );else if (TextBox2.Text = "" && TextBox3.Text = "" && TextBox4.Text = "" &&
43、; TextBox5.Text = "" && TextBox2.Text = "" && TextBox6.Text = "" && TextBox7.Text = "" && TextBox8.Text = " && TextBox9.Text = "" && TextBox10.Text = "" && TextBox11.Text = "
44、" )Response.Write( "<script languagu=javascript>alert(' 请输入详细信息 !');</script>" );elseOleDbConnection conn = new OleDbConnection ( "Provider=MSDAORA;DataSource=lab;Persist Security Info=true;User ID=scott;Password=tiger" );string strVal = "'"
45、 + TextBox1.Text +"'," + "'" + TextBox2.Text + "'," + "'" +TextBox3.Text + "'," + "'" + TextBox4.Text + "'," + "'" + TextBox5.Text + "'," + "'" + TextBox6.Text
46、+ "'," + "'" + TextBox7.Text + "'," + "'" + TextBox8.Text + "'," + "'" + TextBox9.Text + "'," + "'" + TextBox10.Text + "'," + "'" + TextBox11.Text + "'
47、" ;string strIns = "insert into student values("+ strVal + ")" ;/Response.Write(strIns);/ Response.End();OleDbCommandinsCom = new OleDbComman(dstrIns, conn);tryconn.Open();insCom.ExecuteNonQuery();catch ( Exception ex)Response.Write(ex.Message);finallyconn.Close();Response.W
48、rite( "<script language=javascript>alert(' 新纪录添加成功 , 请单击退出回到主页 面 !');</script>");资料统计页面按不同方面统计学生信息 代码如下:按年龄统计人数string str;int count = 0;str= "select COUNT(*) from student where age='"+ TextBox1.Text +"'" ;OleDbConnection conn = new OleDbConne
49、ction ( "Provider=MSDAORA;DataSource=lab;Persist Security Info=true;User ID=scott;Password=tiger" );conn.Open();OleDbCommandcom = new OleDbComman(dstr, conn);OleDbDataReader dr = com.ExecuteReader();if (dr.Read()count =Int32 .Parse(dr0.ToString();dr.Close();conn.Close();Label2.Text = count
50、.ToString();按地区统计人数string str;int count = 0;str ="select COUNT(*) from student where nativeplace='"+ TextBox2.Text + "'" ;OleDbConnection conn = new OleDbConnection ( "Provider=MSDAORA;DataSource=lab;Persist Security Info=true;User ID=scott;Password=tiger" );con
51、n.Open();OleDbCommandcom = new OleDbComman(dstr, conn);OleDbDataReader dr = com.ExecuteReader();if (dr.Read()count =Int32 .Parse(dr0.ToString();dr.Close();conn.Close();Label3.Text = count.ToString();按政治面貌统计人数同前两个类似只是 SQL 语句有所不同str = "select COUNT(*) from student where status='"+ DropDownList1.Text + "'" ;按照不同成绩段统计人数 int i,j;if (DropDownList2.SelectedIndex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 挑战自己的演讲稿(7篇)
- 护理应急调配学员反馈
- 媒体行业内容与用户行为分析平台方案
- 带状疱疹患者的用药护理
- 人力资源配置与优化作业指导书
- 企业声誉及品牌形象保护承诺书(8篇)
- 业务流程规范化步骤卡设计手册
- 江苏省南京市六校联合体2020届高三生物5月联考试题含解析
- 企业危机管理与风险应对模板
- 公司合作协定履行保障书范文4篇
- 电动地牛安全培训课件
- ip电话施工方案
- 《恶意》读书分享演讲稿模版
- DB5301∕T 23-2019 园林绿化工程验收规范
- 2026中考英语复习必背口语听力高频重点词汇
- 【2024-11月更新】武术18课时大单元(教学设计)
- 农业大数据课件
- 2025《社会主义发展史》教学大纲
- 河南省安全生产职责清单
- 国家基层糖尿病管理防治培训试题及答案
- 尿源性脓毒血症的护理
评论
0/150
提交评论