数据库课程设计选课系统.docx
- 文档编号:23997647
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:32
- 大小:756.29KB
数据库课程设计选课系统.docx
《数据库课程设计选课系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计选课系统.docx(32页珍藏版)》请在冰豆网上搜索。
数据库课程设计选课系统
本科课程设计报告
《选课系统的设计及实现》
院(系)
专业信息与计算科学
学生姓名
学号2008304502222
任课教师
提交日期2011-1-30
1.课程设计的目的
1.掌握数据库的各种操作,对数据库进行高效的设计和管理
2.利用自己熟悉的语言进行界面设计,熟练使用某种开发工具
2概述
在本系统中,有三类用户:
系统管理员,教师和学生。
三种不同的用户所具有的操作权限以及操作内容均不一样。
(1)本选课系统可供管理员对学生信息,教师信息,课程信息,教室信息进行有效的管理,包括增加、删除、查询、修改等基本维护功能。
(2)班级选课功能模块可让管理员和教师对特定班级进行必修课的设定
(3)学生选课功能模块可让学生在满足选修学分的情况下进行自由选课
(4)成绩录入功能模块可让教师对特定的班级及个人的科目进行评分
(5)综合查询可让学生查看自己的选课情况,让老师查看教务安排
3需求分析
(1)管理员拥有最高权限,能对学生和老师的信息进行维护,所有教室、课程的信息维护有管理员完成,信息的维护包括增加,删除,查询,修改等功能。
(2)学生所选科目分必修和选修,必修课程可由教师及管理员设定,选修课由学生自己选
(3)学生可查询自己的选课情况和学习情况,老师可以给学生的考试情况打分。
(4)进入系统需要身份验证,学生和老师可修改自己的密码,管理员拥有修改所有用户的权限
3.1通用操作
(1)登录与注销
每个用户都可以用自己的帐号登录系统。
用户操作完成后推出系统,注销后可以重新登录系统。
(2)修改密码
3.2用户所具有功能
(1)系统管理员
维护学生与教师个人信息:
通过此项功能可以实现对教师和学生的个人信息添加删除修改。
维护课程、教室信息:
通过此项功能可以实现对课程,教室的综合信息进行增加删除修改。
(2)教师用户
1)显示和修改个人信息:
教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址、登陆密码等。
2)给学生分数:
课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分。
3)综合查询:
查看部分教师的教务安排,包括上课时间,授课地点,所用教材等信息
(3)学生用户
1)维护个人信息:
学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话、账户密码等。
2)查看自己选课信息:
学生登录系统后通过综合查询能够查看自己的必修课和选修课的信息,包括查看学习成绩等
3)选择自己的选修课程。
4系统总体设计
在前面的系统的系统功能分析中,将系统划分成8个模块,如图:
软件配置:
本系统按用户量选择常用的操作系统,以熟悉的Windows操作系统作为平台,客户端使Windows2000/WindowsXP/WindowsVista操作系统。
硬件配置
由于本系统为单机形式,客户端和服务器在同一机器内.这里给出常规适用的硬件配置
PentiumCPU/64MB/4GB以上的配置为佳
5数据库系统分析
整个数据库的概念设计可以用一个E-R图表示,如图:
M
学生
教师
N
M
N
6数据库逻辑设计
6.1数据库逻辑设计就是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。
转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
根据以上四条规则,下面将E—R图转换成关系模型。
以下列出主要的关系模式
学生(学号,姓名,性别,院系,班级,电话)
教师(教师编号,教师姓名,职称,院系,电子邮件,电话)
课程(课程编号,课程名称,学分,学时,教材,是否双语,课程简介,剩余量,开课容量,考试时间,上课时间,开课院系)
学生_课程(学号,课程,成绩,绩点,是否选修)
教室(教室编号,容量,教室类型)
教师_课程(教师编号,课程号)
班级(班别,系名,学生人数)
课程_教室(课程编号,教室编号)
6.2创建表与字段
表classroom
cno
char(10)
notnull
primarykey
教室编号
volume
char
(2)
容量
type
char(10)
教室类型
表class
class
char(10)
notnull
primarykey
班级
depname
char(10)
系名
studentnumber
char(10)
学生人数
表course
Cno
char(10)
notnull
primarykey
课程编号
cname
char(20)
notnull
课程名称
credit
char
(2)
学分
course_hour
char
(2)
学时
book
char(20)
教材
double_language
char
(2)
是否双语
course_detail
char(50)
课程简介
remains
char
(2)
剩余量
quantity
char
(2)
课程容量
examtime
char(10)
考试时间
lessontime
char(20)
上课时间
depname
char(10)
开课院系
表course_classroo
cno
char(10)
notnull
primarykey
课程号
crno
char(10)
notnull
primarykey
教室号
表student
sno
char(10)
notnull
primarykey
学号
sname
char(10)
notnull
姓名
sex
char
(2)
性别
depname
char(10)
院系名
class
char(10)
班别
tel
char(20)
电话
表student_course
sno
char(10)
notnull
primarykey
学号
cno
char(10)
notnull
primarykey
课程号
optional
char
(2)
是否选修
grade
char(10)
成绩
表teacher
tno
char(10)
notnull
primarykey
教师编号
tname
char(10)
notnull
教师姓名
title
char(10)
职称
depno
char(10)
院系名
char(20)
电子邮件
tel
char(20)
电话
表teacher_classroom
tno
char(10)
notnull
primarykey
教师编号
crno
char(10)
notnull
primarykey
教室编号
表teacher_course
tno
char(10)
notnull
primarykey
教师编号
cno
char(10)
notnull
primarykey
课程编号
6.3
创建视图
可选课程视图,学生在选课的时候可以查看可选课程的有效综合信息
我的课程视图,学生通过综合查询能够查看自己所选的科目
教师教务安排
教师可以查看自己教授的课程科目,时间地点等信息
创建储存过程
ReturnExisted_ClassCompulsoryCourse按院系班级返回某个班级已经学习过的必修课程
ReturnMyCourse按学号查询返回学生已选的课程
ReturnMyCourse1按姓名查询返回学生已选的课程
ReturnSnoINSameClass班级选课中返回在同一个班的学生的学号以便添加选课记录
ReturnStudent_GradeRecord评分模块中按院系和科目返回学生的选课记录以便评分
创建触发器
在表Student_course中建立触发器minus_course_remains当选课记录增加时,自动减少相应课程的选课剩余量以保持数据的完整性
同理在表Student_course中建立触发器add_course_remains当选课记录北管理员删除时时,自动增加相应课程的选课剩余量以保持数据的完整性
7界面设计
(1)用户登录
(2)系统主界面
数据维护部分包括以下几个界面
●学生信息管理
●教师信息管理
●课程信息管理
●教室信息管理
选课部分包括以下几个界面
●学生选课
●班级选课
综合操作部分包括以下几个界面
●综合查询
●成绩录入
●打印报表
系统管理部分包括以下几个界面
●用户管理
●版本信息
●退出系统
登陆界面设计
主界面设计
功能主要模块设计与代码实现分析
连接数据库
namespaceStudentSystem.DataLevel
{publicclassLogin
{publicstaticstringConnection
{get{return"SERVER=localhost;DATABASE=StudentSystem;IntegratedSecurity=True;";}}
}
}
从数据库用户表读取数据对比登陆信息验证用户身份
publicstaticboolUserSortCheck(stringusername,stringuserpassword,stringusersort)
{boolboolean=false;
stringtxtSql;
SqlConnectionconn1=newSqlConnection(StudentSystem.DataLevel.Login.Connection);
txtSql="select*fromUserList";
SqlCommandcheckuser=newSqlCommand(txtSql,conn1);
try{conn1.Open();
SqlDataReadersqlreader=checkuser.ExecuteReader();
while(sqlreader.Read())//从数据库里读取用户表的信息和登录信息比较,验证后用户才能登陆
{if(sqlreader.GetString(0).Trim()==username&&sqlreader.GetString
(1).Trim()==userpassword&&sqlreader.GetString
(2).Trim()==usersort)
{boolean=true;break;}
}
}
catch(Exceptione){MessageBox.Show(e.ToString(),"Exclaimation",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);}finally{conn1.Close();}
returnboolean;
}
主界面功能设计和代码分析实现
privatevoidMainForm_Load(objectsender,EventArgse)//对用户的权限进行设置
{if(usersort=="学生")
{课程信息ToolStripMenuItem.Enabled=false;
教师信息管理ToolStripMenuItem.Enabled=false;
教室信息管理ToolStripMenuItem.Enabled=false;
班级选课ToolStripMenuItem.Enabled=false;
成绩录入ToolStripMenuItem.Enabled=false;
}
if(usersort=="教师")
{课程信息ToolStripMenuItem.Enabled=false;
学生信息管理ToolStripMenuItem.Enabled=false;
教室信息管理ToolStripMenuItem.Enabled=false;
学生选课ToolStripMenuItem.Enabled=false;
}
this.toolStripStatusLabel1.Text="权限:
"+this.usersort;
this.toolStripStatusLabel3.Text=System.DateTime.Now.ToString();
}
privatevoid课程信息ToolStripMenuItem_Click(objectsender,EventArgse)
{CourseContentcourseContent=newCourseContent();
courseContent.MdiParent=this;//单击后时间的响应生成子窗口
courseContent.WindowState=FormWindowState.Normal;
courseContent.Show();//子窗口显示出来
this.toolStripStatusLabel2.Text=courseContent.Text;
}
数据维护模块功能设计和代码实现分析
由于学生信息维护、教师信息维护、教室信息维护、课程信息维护几个数据维护模块是差不多的这里只介绍课程信息维护模块的主要代码,其他模块类似
privatevoidCourseContent_Load(objectsender,EventArgse)
{if(StudentSystem.Program.sort=="管理员")
{txtSql="select*fromCourse";
adapter=newSqlDataAdapter(txtSql,conn1);
}
this.dataSet1.Clear();
try
{conn1.Open();
adapter.Fill(dataSet1,"Course");//用数据适配器填充数据集
//下面通过数据绑定将TextBox和数据库的数据进行绑定
BindingSourcebindingsource=newBindingSource(dataSet1,"Course");
this.textBox1.DataBindings.Add("Text",bindingsource,"cno");
this.textBox2.DataBindings.Add("Text",bindingsource,"cname");
this.textBox3.DataBindings.Add("Text",bindingsource,"credit");
this.textBox4.DataBindings.Add("Text",bindingsource,"course_hour");
this.textBox5.DataBindings.Add("Text",bindingsource,"book");
this.textBox6.DataBindings.Add("Text",bindingsource,"double_language");
this.textBox7.DataBindings.Add("Text",bindingsource,"course_detail");this.textBox9.DataBindings.Add("Text",bindingsource,"remains");
this.textBox10.DataBindings.Add("Text",bindingsource,"quantity");
this.textBox11.DataBindings.Add("Text",bindingsource,"examtime");
this.textBox12.DataBindings.Add("Text",bindingsource,"lessontime");
this.bindingNavigator1.BindingSource=bindingsource;
this.dataGridView1.DataSource=bindingsource;
}
catch(Exceptionee)
{MessageBox.Show(ee.ToString(),"Exclaimation",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);}
finally{conn1.Close();}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{if(dataSet1.HasChanges())//如果数据集修改过,将修改后的数据保存至数据库
{try{this.dataGridView1.EndEdit();
if(this.conn1.State==ConnectionState.Closed)this.conn1.Open();
SqlCommandBuildercommandbuilder1=newSqlCommandBuilder(adapter);
this.adapter.Update(dataSet1.Tables[0]);
this.conn1.Close();
this.dataSet1.AcceptChanges();
dataGridView1.Refresh();
MessageBox.Show("修改已提交","",MessageBoxButtons.OK);
}catch(Exceptionee)
{MessageBox.Show(ee.ToString(),"error",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}
finally{conn1.Close();}
}
}
学生选课模块设计及代码实现分析
privatevoidStudentCourseRegistration_Load(objectsender,EventArgse)
{sqltxt="select*fromCourseAvailable";
adapter=newSqlDataAdapter(sqltxt,conn1);
this.dataSet1.Clear();
try{
conn1.Open();
adapter.Fill(dataSet1,"CourseAvailable");//实例化数据集
DataColumnok=newDataColumn();
ok.DataType=typeof(string);
ok.ColumnName="选择";//在DataGrid中添加选择的单元格
ok.Caption="选择";
dataSet1.Tables[0].Columns.Add(ok);
bindingSource1.DataSource=dataSet1;
bindingSource1.DataMember="CourseAvailable";
dataGridView1.DataSource=bindingSource1;//进行数据绑定
bindingNavigator1.BindingSource=bindingSource1;
bindingNavigator1.BindingSource.DataMember="CourseAvailable";
}
catch(Exceptionee)
{MessageBox.Show(ee.ToString(),"Exclaimation",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);}
finally{conn1.Close();}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{if(dataSet1.HasChanges())
{try{dataGridView1.EndEdit();
temp=dataSet1.GetChanges();//将所选的课程保存至临时的数据集
bindingSource2.DataSource=temp;
bindingSource2.DataMember=temp.Tables[0].ToString();
dataGridView2.DataSource=bindingSource2;//绑定数据至DataGrid
bindingNavigator2.BindingSource=bindingSource2;
bindingNavigator2.BindingSource.DataMember=bindingSource2.DataMember.ToString();
dataGridView2.Refresh();
dataSet1.RejectChanges();
}
catch(Exceptionee)
{MessageBox.Show(ee.ToString(),"error",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}
finally{}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 选课 系统