搜索
您的当前位置:首页正文

学生选课管理系统数据库

来源:榕意旅游网


目 录

一、课程设计的目的和意义 ...................... 1 二、需求分析 .................................. 1 三、概念结构设计(E-R图) .................... 3 四、逻辑结构设计 .............................. 3 五、数据库实施与维护 .......................... 3 六、界面设计与代码 ............................ 6 七、课程设计心得与体会 ....................... 15 八、参考文献 ................................. 16

学生选课管理信息系统

一、课程设计的目的和意义

数据库课程设计是在学生系统的学习了数据库原理课程后,按照关系型数据 库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的数据库管理系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。

大型数据库课程设计是计算机专业集中实践性教学环节之一,是学习完《数据库原理及应用》课程后进行的一次全面的综合练习。其目的在于加深对大型数据库课程理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力。

培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。

二、需求分析

学生选课系统体现在对各种信息的保存、修改和查询。经过仔细分析系统需求之后可知其主要功能,具体功能如下:

可以根据表查询四个表之间属性之间的关系

系统总体设计图如图1所示:

学生选课管理系 系统管理 前台操作

查 修删添

询 改 除 加 成教学选 成教学成教学绩师生课 绩师生绩师生信信信信 信信信信信信息 息 息 息 息 息 息 息 息 息

图1 整体设计图

数据管理

教师管理 学生管理 选课管理

成绩信息 教师信息 选课信息

三、概念结构设计(E-R图)

编号 姓名 职称

教师

年龄 性别 学历 1

教授

1

编号

名称

任课教师

选修课程

学分

1

1

获得

1

教授

n

1

学生

n 考试

成绩

成绩

课名

学号

姓名 院系 年龄

学号

课程号

E-R图

四、逻辑结构设计

将E-R图转换成关系模式: 教师:(教师编号,教师姓名,性别,年龄,学历,职称,毕业院校,健康状况) 学生:(学号,姓名,所属院系,年龄) 选课:(课程编号,课程名称,任课教师,学分) 成绩:(学生学号,课程编号,课程名称,成绩)

五、数据库实施与维护

建立数据库 打开SQL Server 2008,建立数据库:zaq。 1.在学生选课系统数据库中,添加teacher表,设置教师编号为主键,不允许为空,如图3所示

图3

右键选择编辑前200行,输入数据,如图4所示

图4

2.添加student表,设置学号为主键,不允许为空,如图5所示:

图5

右键选择编辑前200行,输入数据,如图6所示:

图6

3.添加choose表,设置课程编号为主键,不允许为空,如图7所示:

图7

右键选择编辑前200行,输入数据,如图8所示:

图8

4.添加grade表,设置学生学号,教师编号,课程名称为主键,不允许为空,如图9所示:

右键选择编辑前200行,输入数据,如图10所示:

六、界面设计与代码

1.登录界面

输入已在数据库中的账号和密码,点击登录按钮,如图11所示:

提示登录成功,单击确定进入主窗体

双击登录按钮,更新单击事件处理程序,主要代码如下: private void button1_Click(object sender, EventArgs e) {

string userName = txtName.Text.Trim(); string password = txtPwd.Text.Trim();

string connString = @\"Data Source=a-think;Initial Catalog=zaq ;Integrated Security=True;Pooling=False;\";

SqlConnection connection = new SqlConnection(connString); //获取用户名和密码匹配的行的数量的SQL语句 string sql = String.Format(\"select count(*) from [log] where ID='{0}' and PASSWORD='{1}'\ try {

connection.Open();// 打开数据库连接

SqlCommand command = new SqlCommand(sql, connection); //创建 Command 对象

int num = (int)command.ExecuteScalar();//执行查询语句,返回匹配的行数

if (num > 0) {

//如果有匹配的行,则表明用户名和密码正确

MessageBox.Show(\"欢迎进入系统!\登录成功\MessageBoxButtons.OK, MessageBoxIcon.Information);

main mainForm = new main(); // 创建主窗体对象

mainForm.Show();// 显示窗体

this.Visible = false; // 登录窗体隐藏 } else {

txtPwd.Text = \"\";

MessageBox.Show(\"您输入的用户名或密码错误!\登

录失败\ } }

catch (Exception ex) {

MessageBox.Show(ex.Message, \"操作数据库出错!\MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

finally {

connection.Close(); // 关闭数据库连接 }

} } }

2.主界面

如图10所示:

4.点击教师信息显示下图12,

双击添加按钮,程序代码如下:

private void button2_Click(object sender, EventArgs e) {

string connString = @\"Data Source=A-THINK;Initial Catalog=zaq ;Integrated Security=True;Pooling=False;\";

SqlConnection connection = new SqlConnection(connString); SqlCommand command = new SqlCommand();

string sql = String.Format(\"INSERT INTO teacher(教师编号,教师姓名,性别,年龄,学历,职称,毕业院校,健康状况)VALUES('\" + tno1.Text + \"','\" + tname1.Text + \"','\" + tsex1.Text + \"', '\" + tage1.Text + \"','\" + tdip1.Text + \"','\" + tmon1.Text + \"','\" + tsch1.Text + \"', '\" + thea1.Text + \"')\");

try {

connection.Open(); // 打开数据库连接 command.Connection = connection;

command.CommandText = sql; //设置 Command 对象要执行的SQL语句

int count = command.ExecuteNonQuery(); // 执行更新命令,返回值为更新的行数

if (count > 0)

MessageBox.Show(\"添加成功\", \"添加成功\",

MessageBoxButtons.OK, MessageBoxIcon.Information); else

MessageBox.Show(\"添加失败\", \"添加失败\", MessageBoxButtons.OK, MessageBoxIcon.Information); }

catch (Exception ex) {

MessageBox.Show(ex.Message, \"操作数据库出错!\", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

finally {

connection.Close(); // 关闭数据库连接 } }

添加数据后,出现添加成功:

双击删除按钮,程序代码如下:

private void button3_Click(object sender, EventArgs e) {

string tno = tno1.Text.Trim(); string tname = tname1.Text.Trim(); string tsex = tsex1.Text.Trim(); string tage = tage1.Text.Trim(); string tdip = tdip1.Text.Trim(); string tmon = tmon1.Text.Trim(); string tsch = tsch1.Text.Trim(); string thea = thea1.Text.Trim();

string str = \"Data Source=A-THINK;Initial Catalog = zaq;Integrated Security=True;Pooling=False\";

SqlConnection conn = new SqlConnection(str); conn.Open();

if (tno1.Text != \"\" || tname1.Text != \"\" || tsex1.Text != \"\"

|| tage1.Text != \"\" || tdip1.Text != \"\" || tmon1.Text != \"\" || tsch1.Text != \"\" || thea1.Text != \"\") {

SqlCommand com = new SqlCommand(\"delete from teacher where 教师编号='\" + tno + \" 'or 教师姓名='\" + tname + \" 'or 性别='\" + tsex + \" 'or 年龄='\" + tage + \" 'or 学历='\" + tdip + \"'or 职称='\" + tmon + \" 'or 毕业院校='\" + tsch + \" 'or 健康状况='\" + thea + \" '\", conn); int m = com.ExecuteNonQuery(); if (m > 0)

MessageBox.Show(\"成功删除该教师信息!\"); else

MessageBox.Show(\"删除该教师信息失败!\"); } else

MessageBox.Show(\"请输入正确的信息!\"); conn.Close(); conn.Dispose();

}

删除成功,提示删除成功:

双击修改按钮,程序代码如下:

private void button4_Click(object sender, EventArgs e) {

string tno = tno1.Text.Trim(); string tname = tname1.Text.Trim(); string tsex = tsex1.Text.Trim(); string tage = tage1.Text.Trim(); string tdip = tdip1.Text.Trim(); string tmon = tmon1.Text.Trim(); string tsch = tsch1.Text.Trim(); string thea = thea1.Text.Trim();

string str = \"Data Source=A-THINK;Initial Catalog =

zaq;Integrated Security=True;Pooling=False\";

SqlConnection conn = new SqlConnection(str); conn.Open();

if (tno1.Text != \"\" && tname1.Text != \"\" && tsex1.Text != \"\" || tage1.Text != \"\" || tdip1.Text != \"\"||tmon1.Text != \"\" || tsch1.Text != \"\"|| thea1.Text != \"\") {

SqlCommand com = new SqlCommand(\"update teacher set 教师姓名='\" + tname + \"'where 教师编号='\" + tno + \"'\", conn); int a = com.ExecuteNonQuery(); if (a > 0)

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

MessageBox.Show(\"修改该教师信息失败!\"); } else

MessageBox.Show(\"请输入正确的信息!\"); conn.Close(); conn.Dispose();

} } }

修改成功后显示修改成功:

双击查询按钮,程序代码如下:

private void button1_Click(object sender, EventArgs e) {

string connString = \"Data Source=A-THINK;Initial Catalog=zaq ;Integrated Security=True;Pooling=False;\";

SqlConnection connection = new SqlConnection(connString); SqlCommand command = new SqlCommand();

string sql = String.Format(\"select * FROM teacher WHERE 教师编号='{0}'\", tno1.Text); try {

int i = 0;

connection.Open(); // 打开数据库连接 command.Connection = connection;

command.CommandText = sql; //设置 Command 对象要执行的SQL语句

SqlDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) {

i++;

tno1.Text = dataReader[\"教师编号\"].ToString(); tname1.Text = dataReader[\"教师姓名\"].ToString(); tsex1.Text = dataReader[\"性别\"].ToString(); tage1.Text = dataReader[\"年龄\"].ToString(); tdip1.Text = dataReader[\"学历\"].ToString(); tmon1.Text = dataReader[\"职称\"].ToString(); tsch1.Text = dataReader[\"毕业院校\"].ToString(); thea1.Text = dataReader[\"健康状况\"].ToString(); }

if (i == 0)

MessageBox.Show(\"教师不存在\", \"查询失败\", MessageBoxButtons.OK, MessageBoxIcon.Information); }

catch (Exception ex) {

MessageBox.Show(ex.Message, \"操作数据库出错!\", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

finally {

connection.Close(); // 关闭数据库连接 } }

5.点击学生信息,显示下图界面:

6.点击选课信息,显示如下图片:

7.点击成绩信息,显示如下界面:

图12

七、课程设计心得与体会

这次课设不仅仅是对这个学期数据库课程的总结,更是一次知识大检查。这个不但要掌握数据库原理,还要熟练掌握c#语言。我用这学期刚刚学会的vs2010开发环境中的c#,设计的是开发工具窗体界面运行模式。这样不仅可以学习数据库,而且还可以对c#方面的知识进行巩固,知识是相互联系的,没有哪一门是单独存在的。所以要学好一门课,就是应该横向思考,多联系,这样会学的更好。这次课程设计,我选的是选课管理系统,这个课题比较贴近生活,所以要考虑到选课的实际情况,根据实际情况来进行分析,构思好功能模块。在这个过程中,最难的应该是软件编程了。在编程的过程中,遇到的问题也可谓是多样化。先是因为一些控件没有响应事件,导致运行的时候点击没有效果,然后再SQL语句中字符串的单引号,双引号标注出现问题,同样调试时没有出错,运行时出现问题。一开始在进行数据库连接的时候也出现了一些问题,但最后问题还是被解决了。看到所有都能被运行成功,并且能对数据进行增删改查询的时候,总的来说,还是很欣慰。这也激励着我,在以后的学习中,要多多培养自己的动手操作能力,编出更加完美,用户友好的系统。

八、参考文献

[1]李涛 王永皎 /等.《Visual C++SQL Server数据库开发与实例》.清华大学

出版社 .2006年7月

[2]郑莉 董渊 张瑞丰 .《C++语言程序设计》清华大学出版社.2004年1月 [3] 王珊 萨师煊 .《数据库系统概论》.北京 .高等教育出版社. 2006年5月 [4] 邵顺增,李琳.C#程序设计--Windows项目开发.清华大学出版社.2008年5月

因篇幅问题不能全部显示,请点此查看更多更全内容

Top