1、学生选课系统河 北 xxx大 学数据库课程设计说明书设计题目:学生选课系统姓 名:Xx学 号:201114430118专 业:地理信息系统班 级:1班指导教师:xxxxxxxxxx矿业工程学院2014年 6 月 7 日目录1概述 11.1选题背景 11.2课题目的 11.3选课系统简介 22需求分析 23概念设 23.1选课系统E-R图分析 33.2数据库表结构设计 64 逻辑设计 75 系统开发流程 86 系统使用说明及主要代码 96.1 主要功能及截图 96.1.1 登录界面及主要代码 96.1.2 修改密码界面及主要代码 106.1.3 课程按条件查询 126.1.4 学生选课及删除 1
2、36.1.5 课程推荐 146.1.6 教师浏览信息 156.1.7 教师修改课程 166.1.8 备份还原数据 166.2创新功能及难点 176.2主要页面及截图 176.2.1功能突破-分行统计插入 176.2.2功能突破-无重复选课 186.2.3创新突破-选课推荐 206.2.4创新突破-数据库备份 227 课程设计体会及心得 22参考文献 23概述随着科技的发展,校园网技术迅速发展。对于高校而言,建立校园网的作用一般有以下两方面:一是外部网络连接,实现与网络连接,提供本校的信息服务,融入世界信息潮流;了解外面世界,加强学术交流与合作。另一个就是建立本校的管理信息系统,实现管理的科学化
3、、现代化;利用现代化的手段提高教学质量和管理水平。选题背景选课系统属于教学信息管理系统一部分,是学生课程安排的常用系统。随着高等教育的发展和社会需要,各高校尽多地开设各类课程,以拓宽学生的知识面,培养学生的个性和创造能力,提高学生的综合素质。传统的人工选课数据是经过多级手工处理后上报教务处的,效率较低,而选课时烦琐的工作也给教务管理部门带来了很大的工作量,因此容易出错。另一方面,学生对课程的迟选、补选、改选操作非常麻烦,同时教学管理部门无法掌握选课人数的变化和学生分布的情况,难以进行动态调整。传统的选课方式已经不适应现代教务教学的改革和发展,迫切需要一种新的选课方式。为使教学管理工作的科学化、
4、规范化,就必须采用计算机辅助管理。计算机管理使选课更加高效准确,省去了大量的人力劳动,提高了教学管理的信息化水平。本系统面向全校师生和管理人员,是高校日常教学、教务管理的应用软件。该系统的目的主要是实现学生选择选修课的公平性和方便性,让他们可以选择课程,删除选课,查询选修课程信息;对于任课教师,可以提交、修改及确认所任选课成绩;对于教学管理部门,能够实现学生数据的导入、选修课表的录入、选课系统的合理配置,如每学期每人选课最大数目、每门课程的最大容量、选课时间及避开上课地点与时间的冲突等。但是本人的知识和能力有限,时间有限,所做的系统只实现了最基本的选课系统的功能,我会在以后的学习过程中继续完善
5、该系统。课题目的通过数对学生选课流程和数据库开发过程的研究,采用SQL Server数据库技术,对学生选课系统进行开发,以期该系统可以实现广泛应用,达到便于学生选课,便于课程分配和熟悉大型数据库管理系统的结构与组成,熟悉数据库应用系统的设计方法和开发过程得目的。选课系统简介本系统面向全校师生,是高校日常教学、教务管理的应用软件。该系统的目的主要是实现学生选择选修课的公平性和方便性,让他们可以选择课程,删除选课,查询选修课程信息;对于教师,可以修改、删除、添加需要选课的课程信息,查看学生的选课情况,以及修改密码等。需求分析作为大学生的我们日常上课所学课程总是伴随着课程的选取,通过日常选课时对选课
6、信息的研究和详细调查,确定开发学生选课系统。经过对各个专业的选课状况的观察、分析,并结合实际情况,确定基于Microsoft SQL Server 2008数据库软件建立基于数据库的选课系统。分析课程信息以及师生资源信息后,针对系统需求,总结如下:登录用户分为教师和学生,即学生选取课程,教师教授课程;学生与课程的关系式多对多的关系,即一个学生选取多门课程,同时一门课程有多位学生选取;教师与课程的关系式一对多的关系,即一位教师教授多门类课程;基于此,可以建立表关系如下:课程表:课程号(主键),课程名,课时,教师编号,学分,选课记录;学生表:学号(主键),姓名,性别,入学时间,所属院系,密码;教师
7、表:教师编号(主键),姓名,性别,所属院系,密码;选课表:选课记录(主键),课程号,学号;概念设计数据库的设计是指对于一个给定的应用环境,构造最有效的数据库模式,建立数据及应用系统,实质能够有效地存储数据,满足用户的需求,数据库设计是在数据库管理系统支持下进行的。选课系统E-R图分析在分析用户需求的基础上,建立以反映用户实际环境和需求的数据库概念模型-E-R图。综合分析系统主要功能,可以玻璃如下实体:教师,学生,课程,成绩。一次,建立以下实体关系图。图3-1-1 教师实体E-R图图3-1-2 课程实体E-R图图3-1-3 学生实体E-R图图3-1-4 选课实体E-R图p1m根据全局数据概念模式
8、,将局部的E-R图根据他们之间的练习综合成一个完整的全局E-R图:n1n图3-1-5 选课系统全局E-R图数据库表结构设计将逻辑结构设计的关系模型转换为物理数据库,即具体的RDBMS中的支持的关系数据模型表。在SQL Server 2008 数据库管理系统中创建如下的表3-2-1表3-2-4,以及相关的数据类型:教师表字段类型空值(NULL)主键教师编号INTNOYES姓名CHARYES性别CHARYES所属院系CHARYES表3-2-1学生表字段类型空值主键学号INTNOYES姓名CHARYES性别CHARYES入学日期DATATIMEYES密码INTYES表3-2-2课程表字段类型空值主键
9、课程号INTNOYES课程名CHARYES教师编号INTYES课时INTYES学分INTYES选课人数INTYES表3-2-3选课表字段类型空值主键选课记录INTNOYES课程号INTYES学号INTYES表3-2-4逻辑设计用户分为学生与教师两种,根据不同的用户身份登录可以实现不同的用户功能,其行为设计如下所示:图4 选课系统行为设计系统开发流程图5 选课系统开发流程 系统使用说明及主要代码该系统实现了现实生活中对选课系统的基本要求,可以方便用户实现增加、删除、修改、查看查课程的基本需求。同时,该系统独具匠心的为学生用户添加课程推荐功能,使得学生用户了解热门课程和应选课程以方便选取课程,对于
10、教师用户对课程的修改操作,学生端能够实时得知新添加课程,使得选课无遗漏。对教师用户,该系统提供实时将学生选课人数统计入库,可以使得教师及时了解选课动态,教师用户还可以备份数据库并还原,以保证数据库的信息不回遗漏。主要功能及截图登陆界面及主要代码图6-1登录界面if (radstudent.Checked)string str = select * from 学生表 where 学号= + txtcode.Text.ToString() + and 密码= + txtpassword.Text.ToString() + ;SqlDataReader sdr = sql.datareader(st
11、r);bool ifconn = sdr.Read();if (ifconn)SQL.Login_user = txtcode.Text;SQL.Login_pwd = txtpassword.Text;this.Hide();frminform finform = new frminform();finform.Show();else if (radteacher.Checked)string str = select * from 教师表 where 教师编号= + txtcode.Text.ToString() + and 密码= + txtpassword.Text.ToString(
12、) + ;SqlDataReader sdr = sql.datareader(str);bool ifconn = sdr.Read();if (ifconn)SQL.Login_user = txtcode.Text;SQL.Login_pwd = txtpassword.Text;this.Hide();frmteacher fteacher = new frmteacher();fteacher.Show();修改密码界面及主要代码图6-2修改密码if (s = 学生表)string sqlstu = Update 学生表 Set 密码= + txXmm.Text + Where 密码
13、= + txCsmm.Text + and 学号= + SQL.Login_user + ;sql.cmd = new SqlCommand(sqlstu, sql.conn);sql.cmd.ExecuteNonQuery();frmstudent fst = new frmstudent(学生表);fst.Show();this.Hide();elsestring sqltea = Update 教师表 Set 密码= + txXmm.Text + Where 密码= + txCsmm.Text + and 教师编号= + SQL.Login_user + ;/SqlDataAdapter
14、 sada = new SqlDataAdapter(sqltea, sql.conn);sql.cmd = new SqlCommand(sqltea, sql.conn);sql.cmd.ExecuteNonQuery();frmteacher ftc = new frmteacher();ftc.Show();this.Hide ();int MyCount = sql.cmd.ExecuteNonQuery();if (MyCount = 0)MessageBox.Show(在数据库中修改用户密码操作成功!, 信息提示, MessageBoxButtons.OK, MessageBox
15、Icon.Information);elseMessageBox.Show(在数据库中修改用户密码操作失败!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Information);课程按条件查询图6-3按条件浏览课程string sqljb = select 课程表.* from 课程表,教师表 where 课程表.教师编号=教师表.教师编号 and 姓名 = + tx1.Text + ;cm.CommandText = sqljb;SqlDataReader r = cm.ExecuteReader();if (!r.HasRows) Messag
16、eBox.Show(授课教师不存在,请重新输入!); tx1.Focus(); elser.Close();SqlDataAdapter da = new SqlDataAdapter(sqljb, sql.conn);DataSet ds = new DataSet();da.Fill(ds);DataTable ab = new DataTable();ab = ds.Tables0;dataGridView1.DataSource = ab;学生选课及删除选课图6-4选课界面sql.getconn();MessageBox.Show(确定要选择此课程吗?);string sqlxk =
17、insert into 选课表(课程号,学号) values( + (string)comboBox1.SelectedItem + , + SQL.Login_user + );sql.cmd = new SqlCommand(sqlxk, sql.conn);sql.cmd.ExecuteNonQuery();删除课程string code = delete 选课表 where 课程号= + dtxtccode.Text + and 学号= + SQL.Login_user + ;sql.cmd = new SqlCommand(code, sql.conn);sql.cmd.Execut
18、eNonQuery();MessageBox.Show(该课程已成功删除);dtxtccode.Text = ;课程推荐图6-5课程推荐最受欢迎课程string sqlct = SELECT TOP 3 WITH TIES *FROM 课程表 ORDER BY 选课人数 desc;SqlDataAdapter sda = new SqlDataAdapter(sqlct, sql.conn);DataSet dt = new DataSet();sda.Fill(dt);dataGridView4.DataSource = dt.Tables0.DefaultView;本专业推荐课程strin
19、g dept = select 所在系 from 学生表 where 学号= + SQL.Login_user + ;string szx;SqlDataAdapter da1 = new SqlDataAdapter(dept, sql.conn);DataTable dt1 = new DataTable();da1.Fill(dt1);szx = Convert.ToString(dt1.Rows0所在系);string sqljs = select 课程表.课程号,课程名 from 课程表,教师表 where 课程表.教师编号=教师表.教师编号 and 所属院系= + szx + ;S
20、qlDataAdapter sda = new SqlDataAdapter(sqljs, sql.conn);DataSet dt = new DataSet();sda.Fill(dt);dataGridView5.DataSource = dt.Tables0.DefaultView;教师浏览信息图6-6教师浏览信息string strxk = select 学生表.学号,课程表.课程号,课程名,姓名 ,所在系 from 学生表 ,选课表,课程表 where 学生表.学号=选课表.学号 and 选课表.课程号=课程表.课程号 ;sql.getconn();SqlDataAdapter s
21、ada = new SqlDataAdapter(strxk, sql.conn);DataSet t = new DataSet();sada.Fill(t);this.dataGridView1.DataSource = t.Tables0.DefaultView;教师修改课程图6-7教师修改课程信息tring strinsert = insert into 课程表(课程号,课程名,教师编号,课时,学分) values( + txtccode.Text.Trim() + , + txtcn.Text.Trim() + , + txttchcode.Text.Trim() + , + txt
22、ctm.Text.Trim() + , + txtgrade.Text.Trim() + );sql.getconn();sql.cmd = new SqlCommand(strinsert, sql.conn);sql.cmd.ExecuteNonQuery();备份还原数据图6-8备份还原备份数据string myfilepath = txtfiledialog.Text.ToString ()+ + txtfilename.Text.ToString ()+ .bak;if (!File.Exists(myfilepath)sql.getconn();string cmsql = cmb
23、sql.Text;string CommandText = BACKUP DATABASE + cmsql + TO DISK = + myfilepath + ;sql.cmd = new SqlCommand(CommandText, sql.conn);sql.cmd.ExecuteNonQuery();MessageBox.Show(数据库备份成功!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);MessageBox.Show(ex.Message);还原数据string path = txthback.Text.Tr
24、im();string dbname = cmbselect.Text.Trim();string sqlstr2 = use master restore database + dbname + from disk= + path + with replace;string single = alter database + dbname + set single_user with rollback immediate + sqlstr2;sql.cmd = new SqlCommand(single, sql.conn);sql.cmd.ExecuteNonQuery();Message
25、Box.Show(还原数据成功);创新功能以及难点功能突破-分行统计插入string kcc = select 课程号 from 课程表;int a;string ca = select count(*)from 课程表;sql.cmd = new SqlCommand(ca, sql.conn);a = Convert.ToInt16(sql.cmd.ExecuteScalar();SqlDataAdapter da = new SqlDataAdapter(kcc, sql.conn);DataTable dt = new DataTable();da.Fill(dt);string hh
26、 = new stringa;string t = new stringa;for (int i = 0; i a; i+)hhi = Convert.ToString(dt.Rowsi课程号);string tongji = select COUNT (选课表.课程号) from 选课表,课程表 where 选课表.课程号=课程表.课程号 and 选课表.课程号 = + hhi +;sql.cmd = new SqlCommand(tongji, sql.conn);ti = sql.cmd.ExecuteScalar().ToString ();string ud = update 课程表
27、 set 选课人数= + ti + where 课程号=+ hhi +;SqlDataAdapter sada = new SqlDataAdapter(ud, sql.conn);DataSet tt = new DataSet();sada.Fill(tt);此处实现了根基课程表的课程号统计选课表中选择该课程的人数,再将选课人数添加到课程表中对应课程号选课人数列中。其中,最初需要统计课程表行数以限制遍历课程表,再通过循环实现功能突破-无重复选课tryint a;sql.getconn();string kcc = select 课程号 from 选课表 where 学号= + SQL.Lo
28、gin_user + ;string ca = select count(*)from 选课表 where 学号= + SQL.Login_user + ;sql.cmd = new SqlCommand(ca, sql.conn);a = Convert.ToInt16(sql.cmd.ExecuteScalar();SqlDataAdapter da = new SqlDataAdapter(kcc, sql.conn);DataTable dt = new DataTable();da.Fill(dt);string x = (string)comboBox1.SelectedItem;
29、string hh = new stringa;if (a = 0)sql.getconn();MessageBox.Show(确定要选择此课程吗?);string sqlxk = insert into 选课表(课程号,学号) values( + (string)comboBox1.SelectedItem + , + SQL.Login_user + );sql.cmd = new SqlCommand(sqlxk, sql.conn);sql.cmd.ExecuteNonQuery();sql.closeconn();elsefor (int i = 0; i a; i+)hhi = Convert.ToString(dt.Rowsi课程号);if (x = hhi)Mess
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1