数据库学生选课

学生选课管理系统

【摘要】

   信息化的时代,把我们的生活装进计算机,装进数据库系统,让我们的生活井井有条。无论是生活、工作还是学习,我们都需要一个完善的系统帮助我们更好的记录。当然师生量庞大的学校对于数据库系统的需求更是迫切,所以本次课程设计就选择了学生选课管理系统。为了做出方便快捷的系统,我进行了需求分析,逻辑设计,物理设计,然后选用SQL Server 2005建立学生选课数据库,再用Visual Studio 2008设计了前台页面,就开发出了一个学生可以选课,教师可以录入并查询学生成绩,管理员可以管理学生信息、教师信息、课程信息等一列功能的学生选课系统。这个系统符合正常逻辑,操作简单,管理方便。

【 abstract 】

   The information age, our life into the computer, put into the database system, let our life be arranged in good order. No matter in life, work and learning, we all need a perfect system to help us better record. Of course,teachers and students in school for the huge amount of database system demand is urgent, so the curriculum design on the choice of the student elective system. In order to make the system convenient, I conducted a needs analysis, logical design, physical design, and then choose SQL Server 2005The establishment of student course database, use Visual Studio 2008 to design the front page, it developed an elective students, teachers can record and query student achievement, the administrator can manage student information, teacher information, course information, the one one column function students select the lesson system. Normal logic, this system with simple operation, convenient management.

   

目录

1. 系统概括 3

1.1. 课程设计选题 3

1.2. 项目背景 3

1.3. 课设报告编写目的 3

1.4. 课设报告的组织 4

2. 系统需求分析 4

2.1. 系统管理员 4

2.2. 学生用户 4

2.3. 教师用户 5

3. 数据库设计 5

3.1. 概念结构设计 5

3.1.1. 分E-R图 5

3.1.2. 局部E-R图 6

3.1.3. 合并E-R图 7

3.2. 逻辑结构设计 8

3.2.1. 逻辑转换 8

3.2.2. 细化表结构 8

3.3. 物理结构设计及实施 9

3.3.1. 创建表 9

3.3.2. 建立视图 11

3.3.3. 建立索引 12

3.3.4. 存储过程的建立 13

3.3.5. 创建触发器 13

4. 界面设计与实现 15

4.1. 功能模块界面分析 15

4.2. 登录界面 15

4.3. 管理学生、课程、教师信息界面 15

4.4. 教师管理界面 16

4.5. 学生选课管理界面 16

5. 系统测试 17

5.1. 用户登陆测试 17

5.2. 管理员管理信息测试 17

5.2.1. 添加学生信息 17

5.2.2. 修改学生信息 18

5.2.3. 删除学生信息 18

5.2.4. 管理教师课、程信息 19

5.3. 学生选、退课程测试 19

6. 总结 20

7. 主要参考文献 20

8. 附录 21

8.1. 源代码 21

8.2. 系统使用说明 25

系统概括

课程设

计选题

   考虑到学生选课这个时间与我们大学生活是如此贴近,兵器额在我们平时选课时也经常出现一些不足,所以我选择“学生选课管理系统”这个课题。除了他比较贴近生活之外,这个项目也会让我对数据库有更新一步的认识与巩固,对身边的各种选课系统有一个更直观的了解。

项目背景

   随着科技的发展,高科技技术的不断开发,数据的处理在我们的生活中尤为重要。教育的不断改革和素质教育的不断加强,学分制的实施,选修课在一个学生的培养计划中的比重越来越大。

   现在我们选课以及成绩查询都是在网上进行的,这个对于学生来说更加的自主、便捷。但是由于一般高校的学生比较多,因此就带来的诸多如信息管理等问题。鉴于需要将学生信息、选课信息等信息数字化以便于维护管理,我们便想到了利用数据库更加准确的解决此类问题。所以我决定设计一个适用于高校学生选课系统一共参考并且更进一步的了解高校选课的流程以及数据的保存。

课设报告编写目的

   无纸化办公的模式现在已经普遍存在,信息自动化处理以及网络式信息交互方式已经普及并且被人们广泛应用,计算机管理学生信息在各大高校都在积极进行,也是高校管理工作的重要内容之一。网上选课与传统的选课方式相比更加的智能便捷并且节约资源,也增加了学生学习过程中的自主权。

   学生选课系统无疑是一个比较现代化的教学技术,并且受到人们的重视,是学校管理中不可获取额的一部分。有了学生选课可系统不仅方便了学生、教师,更重要的是学校在管理数据方面会更加的方便以及准确。学生选课系统使选课管理工作规范化、系统化、程序化,避免数据丢失,提高信息处理的速度,能够准确及时的查询及更改学生的选课情况。编写课设报告的目的就在于将学生选课管理系统的设计与实现以及管理维护等工作更加有条理的呈现出来,对开发设计学生选课系统的过程进行记录并且概括,帮助更好的理解、操作、运用学生选课系统。

课设报告的组织

   课设报告从学生选课系统的需求分析到数据库的设计,包括逻辑设计、物理设计等,在倒最后的实现与维护一一呈现出来,包括最初的设计理念,数据库具体觉得建立以及数据的输入、管理及更新。包括实现学生选课功能、教师录入成绩功能,管理员对数据库信息的增删改查功能一应俱全。

系统需求分析

   该系统应该能管理学校的教师信息、学生信息、专业信息、学校开设的所有课程信息、学生选修课程的信息等。选课系统主要满足三类用户的要求,这三类

用户分别是教务处的系统管理员、教师和学生。他们所具有的操作权限以及操作内容是不同的。具体的需求分析如下:

系统管理员

维护学生的个人基本信息,实现对学生个人信息的增、删、改、查,学生信息包括学号、姓名、性别、年龄、入学时间、系别、专业、密码。

维护教师的个人基本信息,实现对教师个人信息的增、删、改、查,教师信息包括教师工号、姓名、性别、密码。

维护课程的个人基本信息,实现对课程个人信息的增、删、改、查,课程信

  息包括课程号、课程名、学分。

学生用户

查询和修改个人信息。

进行选课操作

学生可以查看自己所选课程信息及以前所选课程的成绩信息。

教师用户

查询和修改个人信息

课程结束后,登记成绩

教师可查看自己的教学安排。

数据库设计

概念结构设计

   根据需求分析,设计出“学生选课系统”的E-R图,该E-R图包括四个实体:学生信息实体、教师信息实体、管理员信息实体、课程信息实体,还有选课信息E-R图和授课信息E-R图。

分E-R图

各个实体的分E-R图分别如下图所示:

管理员登录实体图

            

                图1

学生信息实体图

图2

教师信息实体图

                图3

课程信息实体图

       

                  图4

选课信息实体图

图5

授课信息实体图

图6

局部E-R图

学生课程关系E-R图

图7

教师课程关系E-R图

图8

教师学生关系E-R图

图9

管理员学生关系E-R图

图10

合并E-R图

   本系统的数据库实体主要有“学生”、“教师”、“课程”、“管理员”等。其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“学生”与“成绩”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。同样“学生”与“成绩”之间也是多对多的关系。整个数据库可以用一个E-R图表示

 总的ER图

                    图11

逻辑结构设计

    根据上节E-R图可以将系统中的概念模型转换为具体的表(即关系)结构。

逻辑转换

    本系统共设计6个关系,详细信息如下所示:

    学生(学号、姓名、性别、年龄、入学时间、系别、专业、密码)

    教师(教师工号、姓名、性别、密码)

    管理员(管理员工号 密码)

    课程(课程号、课程名、学

分)

    选课(学号、课程号、成绩)

    授课(教师工号、课程号、课时)

细化表结构

    为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:

用户登录信息表adm

表1:Admin

列名 数据类型 是否为空 说明

Username Char(20) Notnull(主键) 用户名

Userpassword Char(20) notnull 密码

学生信息表student

表2:student

列名 数据类型 是否为空 说明

Sno Char(20) Notnull(主键) 学号

Sname Char(20) notnull 姓名

Ssex Char(20) null 性别

Sage Int null 年龄

Senttime Datetime null 入学时间

Smajor Char(20) null 专业

Ssdept Char(20) null 系别

Spass Char(20) null 密码

课程信息表course

表3:course

列名 数据类型 是否为空 说明

Cno Char(20) Notnull(主键) 课程号

Cname Char(20) notnull 课程名

Ccredt float null 学分

选课信息表sc

表4:sc

列名 数据类型 是否空 说明

Sno Char(20) Notnull(外主键) 学号

Cno Char(20) Notnull(外主键) 课程号

Grade int null 成绩

教师表teacher

表5:teacher

列名 数据类型 是否空 说明

Tno Char(20) Notnull(主键) 教师工号

Tname Char(20) notnull 教师姓名

Tsex Char(20) null 教师性别

Tpass Char(20) null 密码

授课表tc

表6:tc

列名 数据类型 是否空 说明

Tno Char(20) Notnull(外主键) 学号

Cno Char(20) Notnull(外主键) 课程号

Ctime Char(20) null 课时

物理结构设计及实施

   经过数据库系统分析和逻辑设计后,数据库的结果已经非常清晰,剩下的就是用数据库软件实现这样的结构。本章节主要是对表、视图、索引、存储过程、触发器等一系列数据库内容的建立以及实施。本系统中的数据库采用SQL Server 2005作为数据库。首先创建一个名为“学生选课数据库”的数据库。

创建表

   考虑到各个表之间的约束条件以及外键索引等要求,在创建表的时候应该按照一定的次序进行创建,否则会很容易出现错误。本报告册中采用的是先创建各个基本表,然后在对特定的表添加列和外码约束。

   本系统共创建了六个表:管理员信息表、教师信息表、学生信息表、课程信息表、学生选课表、教师授课表。

创建adm管理员表如下图:

  图12

创建教师表teacher如图:

  图13

创建学生表student如图:

  图14

创建课程表course如图:

  图15

创建选课表sc如图:

  图16

创建授课表tc如图:

  图17

   各表之间的关系如图:

  图18

建立视图

   共建立十个视图

图19

   以下是本系统的主要视图:

   学生平均成绩视图如下

图20

   教师总课时视图如下

图21

建立索

   索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查,主键都会自动生成。为了更快的查找索引我又建立了以下索引。

   课程名的索引如下图:

图22

   学生名的索引如下图:

图23

   教师名的索引如下图:

图24

存储过程的建立

   存储过程是多条sql集合,并要求集合中的sql全部成功执行,不然就全部不执行,有利于进行同步操作。由于本人对存储过程的运用并不在行,所以本系统只建立一个存储过程。

图25

创建触发器

   课程表更新触发器。功能:一旦对课程表进行添加、删除、修改等操作,选课表进行同步更新。

图26

   学生表更新触发器。功能:一旦对学生表进行添加、删除、修改等操作,选课表进行同步更新。

图27

   教师表更新触发器。功能:一旦对教师表进行添加、删除、修改等操作,教师授课表进行同步更新。

图28

界面设计与实现

功能模块界面分析

   根据“学生选课管理系统”的功能设计出了总体的界面模块图如下:

图29

登录界面

   登陆界面是每个用户在进入“学生选课管理系统”的必经之路,需要用户确定身份,输入用户名、密码。其界面如下图:

图30

管理学生、课程、教师信息界面

   管理员登陆成功后,进入管理模块,就可以对教师、学生、课程等信息进行管理,其界面如下:

图31

教师管理界面

   以教师身份成功登陆后,进入教师权利,可以查看非人信息,修改密码,录入学生成绩以及查看成绩和所有学生的平均成绩,如下图:

图32

学生选课管理界面

   以学生身份登陆后,就进入学生权利模块,学生可以选课、退选、查看选课结果,以及查看个人信息、修改密码,界面如下图:

图33

系统测试

用户登陆测试

   登陆信息验证测试。如管理员登陆,管理员号:1密码:1,当正确输入信息就会进入管理员界面,当输入错误密码:123,系统就会提示出错,出错界面如下:

图34

管理员管理信息测试

   管理员进入系统后,选择管理学生信息,对学生信息进行增、删、改、查等操作。

添加学生信息

   如添加一个学号为“01024100”,姓名为“张天天”,性别“男”,18岁,计算机系,数媒专业2011年9月一日入学的学生,出事密码设置为123,添加成功后如下图:

图35

修改学生信息

   点击修改进入修改界面如下:

图36

   将张天天的性别改为“女”,按修改键,返回再刷新,就会出现修改过后的页面如下图:

图37

删除学生信息

   只

需输入学生学号,就可以删掉该生信息。如下图:

图38

管理教师课、程信息

   在管理教师页面跟管理课程页面,进行测试,如管理学生页面一样,都可以进行增、删、改、查等行为,并且成功运行。

学生选、退课程测试

学生选课测试

   进入学生界面后,点击选课,会进入选课页面,显示所有课程信息,点击选课返回刷新已选课程就胡显示。

图39

学生退选测试

   进入退选页面,显示所有自己的已选课程,点击退选,运行完成。

   

   

   

   

   

   

   

   

   

总结

   本学期我们开设了数据库原理与应用这门课,经过学习,我对数据库的原理和使用有了一定的了解,但是对于数据库的实际应用并不是那么清晰的明白,但是有了这三个星期数据库的课程设计,我对数据库有了新的认识。“学生选课管理系统”这个课题确实给我带来了很大的挑战,开始以为只是建立几个表,后来才知道数据库的设计是一个系统,还存在着表与表之间的联系,因此我必须要有一个宏观上的认识。

   在本次课程设计中,我学到了很多新的知识,比如如何使用SQL Server2005创建完整的数据库、如何使用vs2008设计页面、如何将页面合理的与数据库进行连接等等。在课程设计的过程当中也会遇到很多自己不能解决的问题,通过自己查阅资料,向同学老师寻求帮助,最终这些问题都解决了,我的“学生选课系统”也更加的完整合理。同时也提高了我的自学能力,在设计过程中,查阅了不少资料,包括网络资料和书籍等,让我收获了许多意想不到的东西,对以后数据库的学习与应用有了很大程度上的提高!

   

   

   

主要参考文献

   《数据库系统概论》(第四版 高等教育出版社)

   《ASP.NET 3.5 网站开发实例教程》)(清华大学出版社)

   《数据结构》(C语言版 清华大学出版社)

   《计算机操作系统》(第三版 西安电子科技大学出版社)

   《C/C++程序设计教程》(电子工业出版社)

附录

源代码

登陆代码:

sqconn.Open();

sqcommand.CommandText = "select Sno,Spass from student where Sno='" + textBox1.Text + "' and Spass='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

xuesheng xuesheng = new xuesheng(textBox1.Text);

this.Hide();

xuesheng.ShowDialog();

Application.ExitThread();

}

MessageBox.Show("用户不存在或密码错误!")

else if (comboBox1.Text ==

"教师登陆")

{

sqconn.Open();

sqcommand.CommandText = "select Tno,Tpass from teacher where Tno='" + textBox1.Text + "' and Tpass='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

jiaoshi jiaoshi = new jiaoshi(textBox1.Text);

this.Hide();

jiaoshi.ShowDialog();

Application.ExitThread();

}

MessageBox.Show("用户不存在或密码错误!");

}

else

{

sqconn.Open();

sqcommand.CommandText = "select Username,Userpassword from adm where Username='" + textBox1.Text + "' and Userpassword='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

guanliyuan guanliyuan = new guanliyuan(textBox1 .Text);

this.Hide();

guanliyuan.ShowDialog();

Application.ExitThread();

管理员查看个人信息代码:

string sqlstr = "select * from adm where username='" + label2.Text + "'";

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string db = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string sqlconn = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + db + "';Integrated Security=True;User Instance=True";

SqlConnection con = new SqlConnection(sqlconn);

con.Open();

SqlDataAdapter sda = new SqlDataAdapter(sqlstr, con);

DataSet ds = new DataSet();

sda.Fill(ds, "View_teacher");

this.dataGridView1.DataSource = ds.Tables["View_teacher"].DefaultView;

添加课程代码:

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "Insert into course(Cno,Cname,Ccredt) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";

sqcommand.ExecuteNonQuery();

textBox1.Text = "";

textBox2.Text = "";

textBox3.Text = "";

MessageBox.Show("添加成功!");

删除课程代码:

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k +

"';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "delete from course where Cno='" + textBox1.Text "'";

sqcommand.ExecuteNonQuery();

修改课程信息代码:

string bj = "ok";

StringCnodataGridView1.Rows[e.RowIndex].Cells["cnoDataGridViewTextBoxColumn"].Value.ToString();stringCname dataGridView1.Rows[e.RowIndex].Cells["cnameDataGridViewTextBoxColumn"].Value.ToString();stringCcredt = dataGridView1.Rows[e.RowIndex].Cells["ccredtDataGridViewTextBoxColumn"].Value.ToString();string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "select * from course where Cno='" + Cno + "'and Cname='" + Cname + "'and Ccredt='" + Ccredt + "'";

if (sqcommand.ExecuteScalar() != null)

{

bj = "no";

}

sqconn.Close();

if (bj == "ok")

{

sqconn.Open();

sqcommand.CommandText = "update course set Cname='" + Cname + "'where Cno='" + Cno + "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

sqconn.Open();

sqcommand.CommandText = "update course set Ccredt='" + Ccredt + "'where Cno='" + Cno + "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

MessageBox.Show("修改成功!");

}

录入学生成绩代码:

string abc = dataGridView1.Rows[e.RowIndex].Cells["cnoDataGridViewTextBoxColumn"].Value.ToString();

string Grade=dataGridView1.Rows[e.RowIndex].Cells["gradeDataGridViewTextBoxColumn"].Value.ToString() ;

string sno = dataGridView1.Rows[e.RowIndex].Cells["snoDataGridViewTextBoxColumn"].Value.ToString();

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "update sc set Grade= '" + dataGridView1.Rows[e.RowIndex].Cells["gradeDataGridViewTextBoxColumn"]

.Value.ToString() + "'where sno= '" + sno+ "'and cno='" + abc+ "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

选课代码:

string Cno = dataGridView1.Rows[e.RowIndex].Cells["课程号"].Value.ToString();

string Sno = label2.Text;

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf"; string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "select Sno,Cno from sc where Sno='" + label2.Text + "'and Cno='" + Cno + "'";

if (sqcommand.ExecuteScalar() != null)

{

sqconn.Close();

MessageBox.Show("已经选过课!不可重复!");

}

else

{

sqconn.Close();

sqconn.Open();

sqcommand.CommandText = "insert into sc values('" + Sno + "','" + Cno + "','0')";

sqcommand.ExecuteNonQuery();

sqconn.Close();

MessageBox.Show("选课成功!");

}

系统使用说明

   其实本系统的设计十分的人性化,使用者只要根据提示就会轻松的对系统进行操作,在此做一个简单的介绍:首先进入登陆页面,用户氛围三种类型:管理员、教师、学生,使用者根据自己的身份选择登陆,这里给出三组试验数据工使用者试验。

   管理员登陆:实验数据(管理员号:1,,密码:1),正确登陆后跳转至管理员权利页面,在当前页面可是查看管理员的个人信息,根据提示可以对进入管理教师页面、管理学生页面、管理课程信息页面,在这些页面可以分别对教师、学生、课程等信息进行增加、删除、修改、查看等操作。

   教师登陆:试验数据(教师工号:02 密码:123)同样步骤成功登陆后,至教师权利页面,可以查看个人信息,录入、查看学生成绩以及平均成绩,修改自己的登录密码,查看自己的可是安排等。

   学生登录:实验数据:(学号:01024105 密码:123)登陆成功后,可以进行选课,退选,记忆查看选课结果、个人信息等,还可以修改登陆密码。

   总之本“学生选课系统”,可以对学生选课情况进行精准的管理,对于使用者而言,一句话概括:简单易懂好上手!

学生选课管理系统

【摘要】

   信息化的时代,把我们的生活装进计算机,装进数据库系统,让我们的生活井井有条。无论是生活、工作还是学习,我们都需要一个完善的系统帮助我们更好的记录。当然师生量庞大的学校对于数据库系统的需求更是迫切,所以本次课程设计就选择了学生选课管理系统。为了做出方便快捷的系统,我进行了需求分析,逻辑设计,物理设计,然后选用SQL Server 2005建立学生选课数据库,再用Visual Studio 2008设计了前台页面,就开发出了一个学生可以选课,教师可以录入并查询学生成绩,管理员可以管理学生信息、教师信息、课程信息等一列功能的学生选课系统。这个系统符合正常逻辑,操作简单,管理方便。

【 abstract 】

   The information age, our life into the computer, put into the database system, let our life be arranged in good order. No matter in life, work and learning, we all need a perfect system to help us better record. Of course,teachers and students in school for the huge amount of database system demand is urgent, so the curriculum design on the choice of the student elective system. In order to make the system convenient, I conducted a needs analysis, logical design, physical design, and then choose SQL Server 2005The establishment of student course database, use Visual Studio 2008 to design the front page, it developed an elective students, teachers can record and query student achievement, the administrator can manage student information, teacher information, course information, the one one column function students select the lesson system. Normal logic, this system with simple operation, convenient management.

   

目录

1. 系统概括 3

1.1. 课程设计选题 3

1.2. 项目背景 3

1.3. 课设报告编写目的 3

1.4. 课设报告的组织 4

2. 系统需求分析 4

2.1. 系统管理员 4

2.2. 学生用户 4

2.3. 教师用户 5

3. 数据库设计 5

3.1. 概念结构设计 5

3.1.1. 分E-R图 5

3.1.2. 局部E-R图 6

3.1.3. 合并E-R图 7

3.2. 逻辑结构设计 8

3.2.1. 逻辑转换 8

3.2.2. 细化表结构 8

3.3. 物理结构设计及实施 9

3.3.1. 创建表 9

3.3.2. 建立视图 11

3.3.3. 建立索引 12

3.3.4. 存储过程的建立 13

3.3.5. 创建触发器 13

4. 界面设计与实现 15

4.1. 功能模块界面分析 15

4.2. 登录界面 15

4.3. 管理学生、课程、教师信息界面 15

4.4. 教师管理界面 16

4.5. 学生选课管理界面 16

5. 系统测试 17

5.1. 用户登陆测试 17

5.2. 管理员管理信息测试 17

5.2.1. 添加学生信息 17

5.2.2. 修改学生信息 18

5.2.3. 删除学生信息 18

5.2.4. 管理教师课、程信息 19

5.3. 学生选、退课程测试 19

6. 总结 20

7. 主要参考文献 20

8. 附录 21

8.1. 源代码 21

8.2. 系统使用说明 25

系统概括

课程设

计选题

   考虑到学生选课这个时间与我们大学生活是如此贴近,兵器额在我们平时选课时也经常出现一些不足,所以我选择“学生选课管理系统”这个课题。除了他比较贴近生活之外,这个项目也会让我对数据库有更新一步的认识与巩固,对身边的各种选课系统有一个更直观的了解。

项目背景

   随着科技的发展,高科技技术的不断开发,数据的处理在我们的生活中尤为重要。教育的不断改革和素质教育的不断加强,学分制的实施,选修课在一个学生的培养计划中的比重越来越大。

   现在我们选课以及成绩查询都是在网上进行的,这个对于学生来说更加的自主、便捷。但是由于一般高校的学生比较多,因此就带来的诸多如信息管理等问题。鉴于需要将学生信息、选课信息等信息数字化以便于维护管理,我们便想到了利用数据库更加准确的解决此类问题。所以我决定设计一个适用于高校学生选课系统一共参考并且更进一步的了解高校选课的流程以及数据的保存。

课设报告编写目的

   无纸化办公的模式现在已经普遍存在,信息自动化处理以及网络式信息交互方式已经普及并且被人们广泛应用,计算机管理学生信息在各大高校都在积极进行,也是高校管理工作的重要内容之一。网上选课与传统的选课方式相比更加的智能便捷并且节约资源,也增加了学生学习过程中的自主权。

   学生选课系统无疑是一个比较现代化的教学技术,并且受到人们的重视,是学校管理中不可获取额的一部分。有了学生选课可系统不仅方便了学生、教师,更重要的是学校在管理数据方面会更加的方便以及准确。学生选课系统使选课管理工作规范化、系统化、程序化,避免数据丢失,提高信息处理的速度,能够准确及时的查询及更改学生的选课情况。编写课设报告的目的就在于将学生选课管理系统的设计与实现以及管理维护等工作更加有条理的呈现出来,对开发设计学生选课系统的过程进行记录并且概括,帮助更好的理解、操作、运用学生选课系统。

课设报告的组织

   课设报告从学生选课系统的需求分析到数据库的设计,包括逻辑设计、物理设计等,在倒最后的实现与维护一一呈现出来,包括最初的设计理念,数据库具体觉得建立以及数据的输入、管理及更新。包括实现学生选课功能、教师录入成绩功能,管理员对数据库信息的增删改查功能一应俱全。

系统需求分析

   该系统应该能管理学校的教师信息、学生信息、专业信息、学校开设的所有课程信息、学生选修课程的信息等。选课系统主要满足三类用户的要求,这三类

用户分别是教务处的系统管理员、教师和学生。他们所具有的操作权限以及操作内容是不同的。具体的需求分析如下:

系统管理员

维护学生的个人基本信息,实现对学生个人信息的增、删、改、查,学生信息包括学号、姓名、性别、年龄、入学时间、系别、专业、密码。

维护教师的个人基本信息,实现对教师个人信息的增、删、改、查,教师信息包括教师工号、姓名、性别、密码。

维护课程的个人基本信息,实现对课程个人信息的增、删、改、查,课程信

  息包括课程号、课程名、学分。

学生用户

查询和修改个人信息。

进行选课操作

学生可以查看自己所选课程信息及以前所选课程的成绩信息。

教师用户

查询和修改个人信息

课程结束后,登记成绩

教师可查看自己的教学安排。

数据库设计

概念结构设计

   根据需求分析,设计出“学生选课系统”的E-R图,该E-R图包括四个实体:学生信息实体、教师信息实体、管理员信息实体、课程信息实体,还有选课信息E-R图和授课信息E-R图。

分E-R图

各个实体的分E-R图分别如下图所示:

管理员登录实体图

            

                图1

学生信息实体图

图2

教师信息实体图

                图3

课程信息实体图

       

                  图4

选课信息实体图

图5

授课信息实体图

图6

局部E-R图

学生课程关系E-R图

图7

教师课程关系E-R图

图8

教师学生关系E-R图

图9

管理员学生关系E-R图

图10

合并E-R图

   本系统的数据库实体主要有“学生”、“教师”、“课程”、“管理员”等。其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“学生”与“成绩”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。同样“学生”与“成绩”之间也是多对多的关系。整个数据库可以用一个E-R图表示

 总的ER图

                    图11

逻辑结构设计

    根据上节E-R图可以将系统中的概念模型转换为具体的表(即关系)结构。

逻辑转换

    本系统共设计6个关系,详细信息如下所示:

    学生(学号、姓名、性别、年龄、入学时间、系别、专业、密码)

    教师(教师工号、姓名、性别、密码)

    管理员(管理员工号 密码)

    课程(课程号、课程名、学

分)

    选课(学号、课程号、成绩)

    授课(教师工号、课程号、课时)

细化表结构

    为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:

用户登录信息表adm

表1:Admin

列名 数据类型 是否为空 说明

Username Char(20) Notnull(主键) 用户名

Userpassword Char(20) notnull 密码

学生信息表student

表2:student

列名 数据类型 是否为空 说明

Sno Char(20) Notnull(主键) 学号

Sname Char(20) notnull 姓名

Ssex Char(20) null 性别

Sage Int null 年龄

Senttime Datetime null 入学时间

Smajor Char(20) null 专业

Ssdept Char(20) null 系别

Spass Char(20) null 密码

课程信息表course

表3:course

列名 数据类型 是否为空 说明

Cno Char(20) Notnull(主键) 课程号

Cname Char(20) notnull 课程名

Ccredt float null 学分

选课信息表sc

表4:sc

列名 数据类型 是否空 说明

Sno Char(20) Notnull(外主键) 学号

Cno Char(20) Notnull(外主键) 课程号

Grade int null 成绩

教师表teacher

表5:teacher

列名 数据类型 是否空 说明

Tno Char(20) Notnull(主键) 教师工号

Tname Char(20) notnull 教师姓名

Tsex Char(20) null 教师性别

Tpass Char(20) null 密码

授课表tc

表6:tc

列名 数据类型 是否空 说明

Tno Char(20) Notnull(外主键) 学号

Cno Char(20) Notnull(外主键) 课程号

Ctime Char(20) null 课时

物理结构设计及实施

   经过数据库系统分析和逻辑设计后,数据库的结果已经非常清晰,剩下的就是用数据库软件实现这样的结构。本章节主要是对表、视图、索引、存储过程、触发器等一系列数据库内容的建立以及实施。本系统中的数据库采用SQL Server 2005作为数据库。首先创建一个名为“学生选课数据库”的数据库。

创建表

   考虑到各个表之间的约束条件以及外键索引等要求,在创建表的时候应该按照一定的次序进行创建,否则会很容易出现错误。本报告册中采用的是先创建各个基本表,然后在对特定的表添加列和外码约束。

   本系统共创建了六个表:管理员信息表、教师信息表、学生信息表、课程信息表、学生选课表、教师授课表。

创建adm管理员表如下图:

  图12

创建教师表teacher如图:

  图13

创建学生表student如图:

  图14

创建课程表course如图:

  图15

创建选课表sc如图:

  图16

创建授课表tc如图:

  图17

   各表之间的关系如图:

  图18

建立视图

   共建立十个视图

图19

   以下是本系统的主要视图:

   学生平均成绩视图如下

图20

   教师总课时视图如下

图21

建立索

   索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查,主键都会自动生成。为了更快的查找索引我又建立了以下索引。

   课程名的索引如下图:

图22

   学生名的索引如下图:

图23

   教师名的索引如下图:

图24

存储过程的建立

   存储过程是多条sql集合,并要求集合中的sql全部成功执行,不然就全部不执行,有利于进行同步操作。由于本人对存储过程的运用并不在行,所以本系统只建立一个存储过程。

图25

创建触发器

   课程表更新触发器。功能:一旦对课程表进行添加、删除、修改等操作,选课表进行同步更新。

图26

   学生表更新触发器。功能:一旦对学生表进行添加、删除、修改等操作,选课表进行同步更新。

图27

   教师表更新触发器。功能:一旦对教师表进行添加、删除、修改等操作,教师授课表进行同步更新。

图28

界面设计与实现

功能模块界面分析

   根据“学生选课管理系统”的功能设计出了总体的界面模块图如下:

图29

登录界面

   登陆界面是每个用户在进入“学生选课管理系统”的必经之路,需要用户确定身份,输入用户名、密码。其界面如下图:

图30

管理学生、课程、教师信息界面

   管理员登陆成功后,进入管理模块,就可以对教师、学生、课程等信息进行管理,其界面如下:

图31

教师管理界面

   以教师身份成功登陆后,进入教师权利,可以查看非人信息,修改密码,录入学生成绩以及查看成绩和所有学生的平均成绩,如下图:

图32

学生选课管理界面

   以学生身份登陆后,就进入学生权利模块,学生可以选课、退选、查看选课结果,以及查看个人信息、修改密码,界面如下图:

图33

系统测试

用户登陆测试

   登陆信息验证测试。如管理员登陆,管理员号:1密码:1,当正确输入信息就会进入管理员界面,当输入错误密码:123,系统就会提示出错,出错界面如下:

图34

管理员管理信息测试

   管理员进入系统后,选择管理学生信息,对学生信息进行增、删、改、查等操作。

添加学生信息

   如添加一个学号为“01024100”,姓名为“张天天”,性别“男”,18岁,计算机系,数媒专业2011年9月一日入学的学生,出事密码设置为123,添加成功后如下图:

图35

修改学生信息

   点击修改进入修改界面如下:

图36

   将张天天的性别改为“女”,按修改键,返回再刷新,就会出现修改过后的页面如下图:

图37

删除学生信息

   只

需输入学生学号,就可以删掉该生信息。如下图:

图38

管理教师课、程信息

   在管理教师页面跟管理课程页面,进行测试,如管理学生页面一样,都可以进行增、删、改、查等行为,并且成功运行。

学生选、退课程测试

学生选课测试

   进入学生界面后,点击选课,会进入选课页面,显示所有课程信息,点击选课返回刷新已选课程就胡显示。

图39

学生退选测试

   进入退选页面,显示所有自己的已选课程,点击退选,运行完成。

   

   

   

   

   

   

   

   

   

总结

   本学期我们开设了数据库原理与应用这门课,经过学习,我对数据库的原理和使用有了一定的了解,但是对于数据库的实际应用并不是那么清晰的明白,但是有了这三个星期数据库的课程设计,我对数据库有了新的认识。“学生选课管理系统”这个课题确实给我带来了很大的挑战,开始以为只是建立几个表,后来才知道数据库的设计是一个系统,还存在着表与表之间的联系,因此我必须要有一个宏观上的认识。

   在本次课程设计中,我学到了很多新的知识,比如如何使用SQL Server2005创建完整的数据库、如何使用vs2008设计页面、如何将页面合理的与数据库进行连接等等。在课程设计的过程当中也会遇到很多自己不能解决的问题,通过自己查阅资料,向同学老师寻求帮助,最终这些问题都解决了,我的“学生选课系统”也更加的完整合理。同时也提高了我的自学能力,在设计过程中,查阅了不少资料,包括网络资料和书籍等,让我收获了许多意想不到的东西,对以后数据库的学习与应用有了很大程度上的提高!

   

   

   

主要参考文献

   《数据库系统概论》(第四版 高等教育出版社)

   《ASP.NET 3.5 网站开发实例教程》)(清华大学出版社)

   《数据结构》(C语言版 清华大学出版社)

   《计算机操作系统》(第三版 西安电子科技大学出版社)

   《C/C++程序设计教程》(电子工业出版社)

附录

源代码

登陆代码:

sqconn.Open();

sqcommand.CommandText = "select Sno,Spass from student where Sno='" + textBox1.Text + "' and Spass='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

xuesheng xuesheng = new xuesheng(textBox1.Text);

this.Hide();

xuesheng.ShowDialog();

Application.ExitThread();

}

MessageBox.Show("用户不存在或密码错误!")

else if (comboBox1.Text ==

"教师登陆")

{

sqconn.Open();

sqcommand.CommandText = "select Tno,Tpass from teacher where Tno='" + textBox1.Text + "' and Tpass='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

jiaoshi jiaoshi = new jiaoshi(textBox1.Text);

this.Hide();

jiaoshi.ShowDialog();

Application.ExitThread();

}

MessageBox.Show("用户不存在或密码错误!");

}

else

{

sqconn.Open();

sqcommand.CommandText = "select Username,Userpassword from adm where Username='" + textBox1.Text + "' and Userpassword='" + textBox2.Text + "'";

if (sqcommand.ExecuteScalar() != null)

{

guanliyuan guanliyuan = new guanliyuan(textBox1 .Text);

this.Hide();

guanliyuan.ShowDialog();

Application.ExitThread();

管理员查看个人信息代码:

string sqlstr = "select * from adm where username='" + label2.Text + "'";

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string db = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string sqlconn = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + db + "';Integrated Security=True;User Instance=True";

SqlConnection con = new SqlConnection(sqlconn);

con.Open();

SqlDataAdapter sda = new SqlDataAdapter(sqlstr, con);

DataSet ds = new DataSet();

sda.Fill(ds, "View_teacher");

this.dataGridView1.DataSource = ds.Tables["View_teacher"].DefaultView;

添加课程代码:

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "Insert into course(Cno,Cname,Ccredt) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";

sqcommand.ExecuteNonQuery();

textBox1.Text = "";

textBox2.Text = "";

textBox3.Text = "";

MessageBox.Show("添加成功!");

删除课程代码:

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k +

"';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "delete from course where Cno='" + textBox1.Text "'";

sqcommand.ExecuteNonQuery();

修改课程信息代码:

string bj = "ok";

StringCnodataGridView1.Rows[e.RowIndex].Cells["cnoDataGridViewTextBoxColumn"].Value.ToString();stringCname dataGridView1.Rows[e.RowIndex].Cells["cnameDataGridViewTextBoxColumn"].Value.ToString();stringCcredt = dataGridView1.Rows[e.RowIndex].Cells["ccredtDataGridViewTextBoxColumn"].Value.ToString();string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "select * from course where Cno='" + Cno + "'and Cname='" + Cname + "'and Ccredt='" + Ccredt + "'";

if (sqcommand.ExecuteScalar() != null)

{

bj = "no";

}

sqconn.Close();

if (bj == "ok")

{

sqconn.Open();

sqcommand.CommandText = "update course set Cname='" + Cname + "'where Cno='" + Cno + "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

sqconn.Open();

sqcommand.CommandText = "update course set Ccredt='" + Ccredt + "'where Cno='" + Cno + "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

MessageBox.Show("修改成功!");

}

录入学生成绩代码:

string abc = dataGridView1.Rows[e.RowIndex].Cells["cnoDataGridViewTextBoxColumn"].Value.ToString();

string Grade=dataGridView1.Rows[e.RowIndex].Cells["gradeDataGridViewTextBoxColumn"].Value.ToString() ;

string sno = dataGridView1.Rows[e.RowIndex].Cells["snoDataGridViewTextBoxColumn"].Value.ToString();

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf";

string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "update sc set Grade= '" + dataGridView1.Rows[e.RowIndex].Cells["gradeDataGridViewTextBoxColumn"]

.Value.ToString() + "'where sno= '" + sno+ "'and cno='" + abc+ "'";

sqcommand.ExecuteNonQuery();

sqconn.Close();

选课代码:

string Cno = dataGridView1.Rows[e.RowIndex].Cells["课程号"].Value.ToString();

string Sno = label2.Text;

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "");

string k = (path.Substring(0, path.IndexOf('b'))) + "学生选课数据库.mdf"; string s = "Data source = .\\SQLEXPRESS;AttachDBFilename='" + k + "';Integrated Security=True;User Instance=True";

SqlConnection sqconn = new SqlConnection(s);

SqlCommand sqcommand = new SqlCommand();

sqcommand.Connection = sqconn;

sqconn.Open();

sqcommand.CommandText = "select Sno,Cno from sc where Sno='" + label2.Text + "'and Cno='" + Cno + "'";

if (sqcommand.ExecuteScalar() != null)

{

sqconn.Close();

MessageBox.Show("已经选过课!不可重复!");

}

else

{

sqconn.Close();

sqconn.Open();

sqcommand.CommandText = "insert into sc values('" + Sno + "','" + Cno + "','0')";

sqcommand.ExecuteNonQuery();

sqconn.Close();

MessageBox.Show("选课成功!");

}

系统使用说明

   其实本系统的设计十分的人性化,使用者只要根据提示就会轻松的对系统进行操作,在此做一个简单的介绍:首先进入登陆页面,用户氛围三种类型:管理员、教师、学生,使用者根据自己的身份选择登陆,这里给出三组试验数据工使用者试验。

   管理员登陆:实验数据(管理员号:1,,密码:1),正确登陆后跳转至管理员权利页面,在当前页面可是查看管理员的个人信息,根据提示可以对进入管理教师页面、管理学生页面、管理课程信息页面,在这些页面可以分别对教师、学生、课程等信息进行增加、删除、修改、查看等操作。

   教师登陆:试验数据(教师工号:02 密码:123)同样步骤成功登陆后,至教师权利页面,可以查看个人信息,录入、查看学生成绩以及平均成绩,修改自己的登录密码,查看自己的可是安排等。

   学生登录:实验数据:(学号:01024105 密码:123)登陆成功后,可以进行选课,退选,记忆查看选课结果、个人信息等,还可以修改登陆密码。

   总之本“学生选课系统”,可以对学生选课情况进行精准的管理,对于使用者而言,一句话概括:简单易懂好上手!


相关文章

  • 选课系统设计说明书
  • 学生选课管理系统 目 录 一. 引言.............................................................. 错误!未定义书签. 1.1背景........................ ...查看


  • 学生选课系统
  • 课程设计报告 课程名称 数据库系统原理 设计题目 学生选课系统 学生姓名 学 号 专业班级 指导教师 2102 年 9 月 18 日 目 录 第1章 系统概述 ........................................ ...查看


  • 课程管理数据库设计
  • 课 程 设 计 题 目 学 院 专 业 班 级 姓 名 指导教师 课程管理数据库设计 计算机科学与技术 计算机科学与技术 2012 年 7 月 6 日 课程设计任务书 学生姓名: 指导教师: 专业班级: 计算机科学与技术 工作单位: 计算机 ...查看


  • 毕业设计选题系统-学生选题子系统 测试报告
  • 毕业设计选题系统--学生选题子系统 测试报告 6.系统测试 测试环境:Windows XP操作系统,内存(1G),CPU (Intel Celeron 550) 测试方法:黑盒法 6.1测试用例1:登录界面 (1) 测试内容:输入要登录的用 ...查看


  • 学生网上选课系统毕业论文
  • 题 目:专 业:准考证号:学生姓名:指导教师:起讫日期: 毕 业 论 文 学生网上选课系统 摘 要 随着在校大学生的不断扩增,学生选课系统也是在学校对学生管理方面中不可缺少的一部分.过去的选课方法是采用人工的方法去管理文件档案,而这种管理方 ...查看


  • 数据库 学生选课管理系统
  • 数 据 库 课 程 设 计 学生选课管理系统 设计题目 组长姓名 组长学号 X X X X 1132101102 专业班级 11计算机应用技术班 指导教师 X X X X 信 息 工 程 院 计算机科学与技术 系 2012 年12月24日 ...查看


  • 学生选课管理信息系统
  • 课 程 设 计 课程设计名称: 数据库应用系统课程设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2011-12-19至2011-12-30 专业课程设计任务书 学生选课管理信息系统 1 概述 ...查看


  • 2010年9月全国计算机二级VFP笔试试卷
  • 一.选择题(每小题2分,共70分) 下列各题A).B).C).D)四个选项中,只有一个选项是正确的.请将正确选项填涂在答题卡相应位置上,答在试卷上不得分. (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相 ...查看


  • 学生选课管理系统毕业论文
  • 毕业设计(论文) 题 目 学生选课管理系统 英文题目 Student enrollment management system 学生姓名 刘小亮 班 级1140302 专 业[1**********]6 东华理工大学高职学院 2014年 5 ...查看


热门内容