学生选课管理系统课程设计报告.docx

上传人:b****5 文档编号:14875867 上传时间:2023-06-28 格式:DOCX 页数:43 大小:775.76KB
下载 相关 举报
学生选课管理系统课程设计报告.docx_第1页
第1页 / 共43页
学生选课管理系统课程设计报告.docx_第2页
第2页 / 共43页
学生选课管理系统课程设计报告.docx_第3页
第3页 / 共43页
学生选课管理系统课程设计报告.docx_第4页
第4页 / 共43页
学生选课管理系统课程设计报告.docx_第5页
第5页 / 共43页
学生选课管理系统课程设计报告.docx_第6页
第6页 / 共43页
学生选课管理系统课程设计报告.docx_第7页
第7页 / 共43页
学生选课管理系统课程设计报告.docx_第8页
第8页 / 共43页
学生选课管理系统课程设计报告.docx_第9页
第9页 / 共43页
学生选课管理系统课程设计报告.docx_第10页
第10页 / 共43页
学生选课管理系统课程设计报告.docx_第11页
第11页 / 共43页
学生选课管理系统课程设计报告.docx_第12页
第12页 / 共43页
学生选课管理系统课程设计报告.docx_第13页
第13页 / 共43页
学生选课管理系统课程设计报告.docx_第14页
第14页 / 共43页
学生选课管理系统课程设计报告.docx_第15页
第15页 / 共43页
学生选课管理系统课程设计报告.docx_第16页
第16页 / 共43页
学生选课管理系统课程设计报告.docx_第17页
第17页 / 共43页
学生选课管理系统课程设计报告.docx_第18页
第18页 / 共43页
学生选课管理系统课程设计报告.docx_第19页
第19页 / 共43页
学生选课管理系统课程设计报告.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生选课管理系统课程设计报告.docx

《学生选课管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统课程设计报告.docx(43页珍藏版)》请在冰点文库上搜索。

学生选课管理系统课程设计报告.docx

学生选课管理系统课程设计报告

课程设计报告

题目:

学生选课管理系统

课程《数据库原理及应用》

班级12信管

姓名朱晨汪杨潇张厚义

学号120612106912061210651206121042

指导教师杨慧

铜陵学院

数学与计算机学院

时间:

2014年5月12日至2014年5月16日

指导教师对课程设计(论文)的评语(工作态度、任务完成情况、能力水平、设计说明书(论文)的撰写和图纸质量等):

指导教师评审意见

评价内容

具体要求

分数类别

评分

调研

论证

能独立查阅文献,收集资料;能制定课程设计方案和日程安排。

10

8

6

4

工作能力态度

工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作。

20

16

12

8

工作量

按期圆满完成规定的设计任务,工作量饱满,难度适宜。

20

16

12

8

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

50

40

30

20

课程设计成绩

指导教师签名:

 

第一章开发背景

随着计算机应用的日益普及,教务管理自动化是提高工作效率的有效途径,随着各高校学分制的实施,实现信息化管理学生选课势在必行。

学生选课管理系统是教学管理的重要组成部分,其开发主要包括后台、数据库的建立和维护以及前端应用程序的开发两个方面,前者要求建立起数据的一致性、完整性和安全性好的数据库,而对于后者则要求应用程序功能完备、易使用及界面友好等特点。

系统实现后,极大的方便对学生进行选课和选课后临时班级的安排管理,学生选课信息的管理。

避免在安排课程信息的滞后,减少信息交流的烦琐过程及其带来的开销。

促进高校教育的计算机信息化进程,提高学校的工作效率。

对于系统的本身而言,应该具有较高的实用性、安全性。

能够极大的满足学生选课,以及学校对选课信息的管理。

 

 

 

第2章功能描述

(1)在选课管理过程中,实现信息自动化管理;

(2)实现各种信息的修改、删除、录入等管理功能;

(3)实现对各种信息的查询、统计,支持模糊查询;

(4)管理员可以设置学生什么时间开始选课,什么时间结束选课;学生根据开设课程进行选课操作,可以选课、退课、查询课程和课表;根据身份不同,权限也不相同;

(5)当选课结束后,可以导出所有教师课程表,学生课程表;

(6)对学生选课的结果,实现汇总、归纳和分析;按年份统计课程的学生选课人数及名单,按年份统计学生的选课内容; 

(7)按系统实际情况,数据量不低于200条记录。

 

 

第三章业务流程分析

 

根据本系统需要实现的功能,管理职能分析以及设计管理员、教师与学生之间的关系流程图如下:

 

管理职能分析:

 

 

(1) 网上选课系统总体业务流程图如下所示:

 

图3-1系统总体业务流程图

(2) 登录子系统主要验证不同的用户身份并取得不同的用户权限,进行不同的系统操作。

其业务流程图如下所示:

图3-2登录子系统业务流程图

(3) 排课子系统主要完成设置选课时段、限制最大选课人数、排课并检测排课冲突、发布选课信息等功能。

其业务流程图如下所示:

 

(4)选课子系统主要完成面向学生的选课功能,包括查询课程信息、提交选申请、撤销申请、查询选课情况等。

其业务流程图如下所示:

 

图3-4选课子系统业务流程图

 

第4章数据流程分析

4.1数据流程图

(1)网上选课系统顶层数据流图:

图4-1系统顶层数据流图

(2)网上选课系统第一层数据流图:

图4-2网上选课系统第一层数据流图

(3)根据不同的用户权限,展开登录处理过程,数据流图如下:

图4-3管理员登录数据流图

图4-4教师登录数据流图

图4-5学生登录数据流图

(4)排课过程的数据流图:

图4-6排课过程数据流图

(5)选课过程的数据流图如图:

图4-7选课过程数据流图

4.2数据字典

根据数据流程分析,对系统数据进行分析和汇总,建立系统数据字典。

下面列出部分数据字典内容。

(1)排课

数据流编号:

A01

系统名:

网上选课系统

条目名:

排课

输入:

课程信息表,教学楼信息表,教师信息表,院系信息表

输出:

排课表,选课通知表

描述:

排课者按年级排课。

排课表内容包括课程代号,课程名称,受课院系,专业代码,专业名称,教师代号,考察方式,学分,开课时间,上课时间,地点,开课院系,最大上课人数和课程选则限制(必修或选修)等。

在排课过程中,排课者可以查询教室使用情况和院系课程设置。

在排课者提交排课表以后,系统应当确保该排课方案中没有时间冲突和教室冲突。

如果有冲突,系统应该提示排课者具体冲突产生的原因。

 

(2)选课

数据流编号:

A02

系统名:

网上选课系统

条目名:

选课

输入:

排课表,选课通知表,教师反馈表

输出:

学生选课表

描述:

学生可以在规定的时间段内选课。

该规定时间段由排课者通过发布消息通知教师和学生。

选课过程如下:

学生在选课表上单击课程号,则该信息被提交到服务器,并显示学生的选课结果。

选课表的内容包括排课表的全部内容。

如果一门课程已经达到最大选课人数,则不能再选择这门课程。

如果有学生退课,则该门课程的已选人数减1。

(3)设定选课时间段

数据流编号:

A03

系统名:

网上选课系统

条目名:

设定选课时间段

输入:

选课时间段表输出:

选课时间段表

描述:

排课者应该设定选课时间段。

学生只能在此设定的时间段内选课和退课。

 

第五章概念模型设计

根据需求分析与关系模式画出系统的E-R图如下:

图5-1排课过程实体及其属性

 

图5-2排课过程E-R图

 

图5-3选课过程实体及其属性E-R图

图5-4选课过程E-R图

图5-5系统的总E-R图

 

第六章逻辑模型设计和优化

逻辑设计:

(概念模型向关系模型的转换)

根据E-R图,通过对实体的属性和之间的联系的分析,我们将其由概念模型向关系模型转化,并且根据范式化理论进行优化

1:

N联系的转化的关系模式

(1)教师课程联系概念模型向关系模型的转化

教师表(教师号,教师名,性别,年龄,身份,密码,课程号)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

(2)教师临时班级联系概念模型向关系模型的转化

教师表(教师号,教师名,性别,年龄,身份,密码)

临时班级表(班级号,班级名,人数,地点,教师号)

(3)课程临时班级联系概念模型向关系模型的转化

临时班级表(班级号,班级名,人数,地点,课程号)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

M:

N联系的转化的关系模式

(1)学生选课联系概念模型向关系模型的转化

学生表(学号,姓名,性别,年龄,系部,密码)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

选课表(学号,课程号,成绩)

(2)学生班级联系概念模型向关系模型的转化

学生表(学号,姓名,性别,年龄,系部,密码)

临时班级表(班级号,班级名,人数,地点)

学生班级关系表(学生号,班级号)

优化:

确定范式级别

根据上述分析所归结出来的数据依赖的种类和在本系统实际的开发过程中,需要涉及多表的查询及表的修改和删除,且存在多值依赖的实际情况下,其关系模式应达到BCNF。

 

实施规范化处理

由于学生选课联系的关系模式、学生班级的关系模式和教师管理员联系的关系模式已经不存非平凡且非函数依赖额多值依赖,所以在这里不需要做处理

各个关系模式的函数依赖集如下:

教师课程联系:

F={教师号→教师名,教师号→性别,教师号→年龄,

教师号→身份,教师号→密码,教师号→课程号}

班级临时班级联系:

F={班级号→班级名,班级号→人数,班级号→地点,班级号→教师号}

课程临时班级联系:

F={班级号→班级名,班级号→人数,班级号→地点,

班级号→课程号}

选课联系:

F={(学号,课程号)→成绩}

学生班级联系:

F={(学生号,班级号)}

(1)教师课程联系概念模型向关系模型的优化

教师表(教师号,教师名,性别,年龄,身份,密码)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

教师课程联系(教师号,课程号)

(2)教师临时班级联系概念模型向关系模型的优化

教师表(教师号,教师名,性别,年龄,身份,密码)

临时班级表(班级号,班级名,人数,地点)

教师临时班级关系(班级号,教师号)

(3)课程临时班级联系概念模型向关系模型的优化

临时班级表(班级号,班级名,人数,地点)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

经过规范化处理后的所有关系模如下:

学生表(学号,姓名,性别,年龄,系部,密码)

课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)

教师表(教师号,教师名,性别,年龄,密码)

教师课程关系(教师号,课程号)

选课表(学号,课程号,成绩)

 

 

第七章物理设计和实施

得到系统逻辑模型后,就该进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及如何建立索引等,可以采用系统的默认设置。

数据库实施主要包括在具体的DBMS中创建数据库和表的过程,本设计所选用的DBMS为SQLSERVER2010,有关创建数据库和关系表的SQL语句如下所示:

(1)创建数据库

/*==============================================================*/

/*DataBase:

学生选课管理,创建数据库,数据库名称为学生选课管理

*/createdatabase学生选课管理;

(2)创建表

Createtable学生基本档案

(学号char(10),

姓名char(10),

年龄int,

性别char

(2),

班级char(10),

院部char(15)

密码char(10);

Createtable教师基本信息

教师号char(10),

姓名char(10),

性别char

(2),

年龄int,

密码char(10);

Createtable课程信息

课程号char(10),

课程名char(10),

先行课char(10),

学分charint,

班级char(10),

年龄char(10);

Createtable选课表

课程号char(10),

课程名char(10),

先行课char(10),

学分charint;

第八章系统测试

(1)登录界面

图8-1登陆界面图

代码如下:

后台维护form=new后台维护();

前台用户form1=new前台用户();

publicstaticstringaddname,addname1;

privatevoidformlogin_Load(objectsender,EventArgse)

{

this.skinEngine1.SkinFile=Application.StartupPath+"//皮肤//MSN.ssk";

}

privatevoidExit_Click(objectsender,EventArgse)

{

if(MessageBox.Show("确定退出本系统吗?

","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Asterisk)==DialogResult.OK)

{

this.Close();//退出系统

}

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

if(txtUser.Text==""||txtPwd.Text==""||txtId.Text=="")

MessageBox.Show("所有项不能为空!

");

else

{

SqlConnectioncon=连接.createCon();

con.Open();

SqlCommandcom=con.CreateCommand();

com.CommandText="select*from用户表where用户名=@mn1";

com.Parameters.AddWithValue("mn1",txtUser.Text);

SqlDataReaderreader=com.ExecuteReader();

if(reader.Read())

{

if(txtPwd.Text!

=reader.GetString

(1).ToString())

{

MessageBox.Show("密码输入错误!

");

con.Close();

}

elseif(txtId.Text!

=reader.GetString

(2).ToString())

{

MessageBox.Show("身份输入有误!

");

con.Close();

}

else

{

this.Hide();

if(txtId.Text=="managers")

{

stringtime=DateTime.Now.ToString();

MessageBox.Show("登录成功,你是管理员!

");

form.Show();

addname=txtUser.Text;

SqlConnectioncon1=连接.createCon();

con1.Open();

SqlCommandcom1=con1.CreateCommand();

com1.CommandText="insertinto登录管理values(@mn1,@mn2,@mn3);";

com1.Parameters.AddWithValue("mn1",addname);

com1.Parameters.AddWithValue("mn2","managers");

com1.Parameters.AddWithValue("mn3",time);

com1.ExecuteNonQuery();

con1.Close();

}

else

{

stringtime=DateTime.Now.ToString();

MessageBox.Show("登录成功,你是用户!

");

form1.Show();

addname1=txtUser.Text;

SqlConnectioncon2=连接.createCon();

con2.Open();

SqlCommandcom2=con2.CreateCommand();

com2.CommandText="insertinto登录管理values(@mn1,@mn2,@mn3);";

com2.Parameters.AddWithValue("mn1",addname1);

com2.Parameters.AddWithValue("mn2","users");

com2.Parameters.AddWithValue("mn3",time);

com2.ExecuteNonQuery();

con2.Close();

}

}

}

else

{

MessageBox.Show("不存在该用户名!

");

}

}

}

privatevoidtxtUser_KeyDown(objectsender,KeyEventArgse)

{

if(e.KeyValue==40)

{

txtPwd.Focus();

}

}

privatevoidtxtPwd_KeyDown(objectsender,KeyEventArgse)

{

if(e.KeyValue==38)

{

txtUser.Focus();

}

elseif(e.KeyValue==40)

{

txtId.Focus();

}

}

}

}

(2)管理员界面

图8-2管理员界面图

代码如下:

stringtime=DateTime.Now.ToString();

DateTimetime2=DateTime.Now;

privatevoidcheck_Click(objectsender,EventArgse)

{

SqlConnectioncon=连接.createCon();

SqlDataAdapterdata=newSqlDataAdapter("select*from用户表",con);

DataTabletable=newDataTable();

data.Fill(table);

bindingSource1.DataSource=table;

dataGridView1.DataSource=bindingSource1;

bindingNavigator1.BindingSource=this.bindingSource1;

}

privatevoidincreasetime(doubleseconds)

{

this.time2=this.time2.AddSeconds(seconds);

this.time1.Text=time2.Year+"/"+time2.Month+"/"+time2.Day+"/"+time2.Hour+":

"+time2.Minute+":

"+time2.Second;

}

privatevoidtimer1_Tick(objectsender,EventArgse)

{

this.increasetime(0.1);

}

privatevoiddataGridView1_SelectionChanged(objectsender,EventArgse)

{

txtUser.Text=this.dataGridView1.CurrentRow.Cells[0].Value.ToString();

txtPwd.Text=this.dataGridView1.CurrentRow.Cells[1].Value.ToString();

txtId.Text=this.dataGridView1.CurrentRow.Cells[2].Value.ToString();

}

privatevoidtoolStripButton2_Click(objectsender,EventArgse)

{

addbtn.Visible=true;

txtId.Text="";

txtPwd.Text="";

txtUser.Text="";

}

privatevoidaddbtn_Click(objectsender,EventArgse)

{

if(txtId.Text==""||txtPwd.Text==""||txtUser.Text=="")

{

MessageBox.Show("所有项必须填写!

");

}

elseif(txtId.Text!

="users"&&txtId.Text!

="managers")

{

MessageBox.Show("身份只能输入users或managers!

");

}

else

{

SqlConnectioncon3=连接.createCon();

con3.Open();

SqlCommandcom3=con3.CreateCommand();

com3.CommandText="select*from用户表where用户名=@mn7;";

com3.Parameters.AddWithValue("mn7",txtUser.Text);

SqlDataReaderreader1=com3.ExecuteReader();

if(reader1.Read())

{

MessageBox.Show("已存在该用户名!

");

con3.Close();

}

else

{

con3.Close();

SqlConnectioncon2=连接.createCon();

con2.Open();

SqlCommandcom2=con2.CreateCommand();

com2.CommandText="insertinto用户表values(@mn4,@mn5,@mn6);";

com2.Parameters.AddWithValue("mn4",txtUser.Text);

com2.Parameters.AddWithValue("mn5",txtPwd.Text);

com2.Parameters.AddWithValue("mn6",txtId.Text);

com2.ExecuteNonQuery();

con2.Close();

MessageBox.Show("登录名增加成功!

");

}

}

}

privatevoidtoolStripButton4_Click(objectsender,EventArgse)

{

udBtn.Visible=true;

txtId.Text="";

txtPwd.Text="";

txtUser.Text="";

}

privatevoidudBtn_Click(objectsender,EventArgse)

{

if(txtUser.Text!

=Formlogin.addname)

{

MessageBox.Show("你只能为自己修改密码!

");

}

}

privatevoidcheck2_Click(objectsender,EventArgse)

{

条件查找form3=new条件查找();

this.Hide();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2