理工学生选课系统Word文档下载推荐.docx
《理工学生选课系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《理工学生选课系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
6.1.7教师修改课程16
6.1.8备份还原数据16
6.2创新功能及难点17
6.2主要页面及截图17
6.2.1功能突破------分行统计插入17
6.2.2功能突破------无重复选课18
6.2.3创新突破------选课推荐20
6.2.4创新突破------数据库备份22
7课程设计体会及心得22
参考文献23
1概述
随着科技的发展,校园网技术迅速发展。
对于高校而言,建立校园网的作用一般有以下两方面:
一是外部网络连接,实现与网络连接,提供本校的信息服务,融入世界信息潮流;
了解外面世界,加强学术交流与合作。
另一个就是建立本校的管理信息系统,实现管理的科学化、现代化;
利用现代化的手段提高教学质量和管理水平。
1.1选题背景
选课系统属于教学信息管理系统一部分,是学生课程安排的常用系统。
随着高等教育的发展和社会需要,各高校尽多地开设各类课程,以拓宽学生的知识面,培养学生的个性和创造能力,提高学生的综合素质。
传统的人工选课数据是经过多级手工处理后上报教务处的,效率较低,而选课时烦琐的工作也给教务管理部门带来了很大的工作量,因此容易出错。
另一方面,学生对课程的迟选、补选、改选操作非常麻烦,同时教学管理部门无法掌握选课人数的变化和学生分布的情况,难以进行动态调整。
传统的选课方式已经不适应现代教务教学的改革和发展,迫切需要一种新的选课方式。
为使教学管理工作的科学化、规范化,就必须采用计算机辅助管理。
计算机管理使选课更加高效准确,省去了大量的人力劳动,提高了教学管理的信息化水平。
本系统面向全校师生和管理人员,是高校日常教学、教务管理的应用软件。
该系统的目的主要是实现学生选择选修课的公平性和方便性,让他们可以选择课程,删除选课,查询选修课程信息;
对于任课教师,可以提交、修改及确认所任选课成绩;
对于教学管理部门,能够实现学生数据的导入、选修课表的录入、选课系统的合理配置,如每学期每人选课最大数目、每门课程的最大容量、选课时间及避开上课地点与时间的冲突等。
但是本人的知识和能力有限,时间有限,所做的系统只实现了最基本的选课系统的功能,我会在以后的学习过程中继续完善该系统。
1.2课题目的
通过数对学生选课流程和数据库开发过程的研究,采用SQLServer数据库技术,对学生选课系统进行开发,以期该系统可以实现广泛应用,达到便于学生选课,便于课程分配和熟悉大型数据库管理系统的结构与组成,熟悉数据库应用系统的设计方法和开发过程得目的。
1.3选课系统简介
本系统面向全校师生,是高校日常教学、教务管理的应用软件。
对于教师,可以修改、删除、添加需要选课的课程信息,查看学生的选课情况,以及修改密码等。
2需求分析
作为大学生的我们日常上课所学课程总是伴随着课程的选取,通过日常选课时对选课信息的研究和详细调查,确定开发学生选课系统。
经过对各个专业的选课状况的观察、分析,并结合实际情况,确定基于MicrosoftSQLServer2008数据库软件建立基于数据库的选课系统。
分析课程信息以及师生资源信息后,针对系统需求,总结如下:
登录用户分为教师和学生,即学生选取课程,教师教授课程;
学生与课程的关系式多对多的关系,即一个学生选取多门课程,同时一门课程有多位学生选取;
教师与课程的关系式一对多的关系,即一位教师教授多门类课程;
基于此,可以建立表关系如下:
课程表:
课程号(主键),课程名,课时,教师编号,学分,选课记录;
学生表:
学号(主键),姓名,性别,入学时间,所属院系,密码;
教师表:
教师编号(主键),姓名,性别,所属院系,密码;
选课表:
选课记录(主键),课程号,学号;
3概念设计
数据库的设计是指对于一个给定的应用环境,构造最有效的数据库模式,建立数据及应用系统,实质能够有效地存储数据,满足用户的需求,数据库设计是在数据库管理系统支持下进行的。
3.1选课系统E-R图分析
在分析用户需求的基础上,建立以反映用户实际环境和需求的数据库概念模型------E-R图。
综合分析系统主要功能,可以玻璃如下实体:
教师,学生,课程,成绩。
一次,建立以下实体关系图。
图3-1-1教师实体E-R图
图3-1-2课程实体E-R图
图3-1-3学生实体E-R图
图3-1-4选课实体E-R图
p
1
m
根据全局数据概念模式,将局部的E-R图根据他们之间的练习综合成一个完整的全局E-R图:
n
图3-1-5选课系统全局E-R图
3.2数据库表结构设计
将逻辑结构设计的关系模型转换为物理数据库,即具体的RDBMS中的支持的关系数据模型——表。
在SQLServer2008数据库管理系统中创建如下的表3-2-1~表3-2-4,以及相关的数据类型:
教师表
字段
类型
空值(NULL)
主键
教师编号
INT
NO
YES
姓名
CHAR
性别
所属院系
表3-2-1
学生表
空值
学号
入学日期
DATATIME
密码
表3-2-2
课程表
课程号
课程名
课时
学分
选课人数
表3-2-3
选课表
选课记录
表3-2-4
4逻辑设计
用户分为学生与教师两种,根据不同的用户身份登录可以实现不同的用户功能,其行为设计如下所示:
图4选课系统行为设计
5系统开发流程
图5选课系统开发流程
6系统使用说明及主要代码
该系统实现了现实生活中对选课系统的基本要求,可以方便用户实现增加、删除、修改、查看查课程的基本需求。
同时,该系统独具匠心的为学生用户添加课程推荐功能,使得学生用户了解热门课程和应选课程以方便选取课程,对于教师用户对课程的修改操作,学生端能够实时得知新添加课程,使得选课无遗漏。
对教师用户,该系统提供实时将学生选课人数统计入库,可以使得教师及时了解选课动态,教师用户还可以备份数据库并还原,以保证数据库的信息不回遗漏。
6.1主要功能及截图
6.1.1登陆界面及主要代码
图6-1登录界面
if(radstudent.Checked)
{
stringstr="
select*from学生表where学号="
+txtcode.Text.ToString()+"
and密码="
+txtpassword.Text.ToString()+"
"
;
SqlDataReadersdr=sql.datareader(str);
boolifconn=sdr.Read();
if(ifconn)
SQL.Login_user=txtcode.Text;
SQL.Login_pwd=txtpassword.Text;
this.Hide();
frminformfinform=newfrminform();
finform.Show();
}
elseif(radteacher.Checked)
select*from教师表where教师编号="
frmteacherfteacher=newfrmteacher();
fteacher.Show();
6.1.2修改密码界面及主要代码
图6-2修改密码
if(s=="
学生表"
)
stringsqlstu="
Update学生表Set密码='
+txXmm.Text+"
'
Where密码='
+txCsmm.Text+"
and学号='
+SQL.Login_user+"
sql.cmd=newSqlCommand(sqlstu,sql.conn);
sql.cmd.ExecuteNonQuery();
frmstudentfst=newfrmstudent("
);
fst.Show();
else
stringsqltea="
Update教师表Set密码='
and教师编号='
//SqlDataAdaptersada=newSqlDataAdapter(sqltea,sql.conn);
sql.cmd=newSqlCommand(sqltea,sql.conn);
frmteacherftc=newfrmteacher();
ftc.Show();
this.Hide();
intMyCount=sql.cmd.ExecuteNonQuery();
if(MyCount==0)
MessageBox.Show("
在数据库中修改用户密码操作成功!
"
信息提示"
MessageBoxButtons.OK,MessageBoxIcon.Information);
在数据库中修改用户密码操作失败!
6.1.3课程按条件查询
图6-3按条件浏览课程
stringsqljb="
select课程表.*from课程表,教师表where课程表.教师编号=教师表.教师编号and姓名='
+tx1.Text+"
cm.CommandText=sqljb;
SqlDataReaderr=cm.ExecuteReader();
if(!
r.HasRows)
{
授课教师不存在,请重新输入!
tx1.Focus();
r.Close();
SqlDataAdapterda=newSqlDataAdapter(sqljb,sql.conn);
DataSetds=newDataSet();
da.Fill(ds);
DataTableab=newDataTable();
ab=ds.Tables[0];
dataGridView1.DataSource=ab;
6.1.4学生选课及删除
6.1.4.1选课
图6-4选课界面
sql.getconn();
确定要选择此课程吗?
stringsqlxk="
insertinto选课表(课程号,学号)values('
+(string)comboBox1.SelectedItem+"
'
sql.cmd=newSqlCommand(sqlxk,sql.conn);
6.1.4.2删除课程
stringcode="
delete选课表where课程号='
+dtxtccode.Text+"
and学号='
sql.cmd=newSqlCommand(code,sql.conn);
该课程已成功删除"
dtxtccode.Text="
6.1.5课程推荐
图6-5课程推荐
6.1.5.1最受欢迎课程
stringsqlct="
SELECTTOP3WITHTIES*FROM课程表ORDERBY选课人数desc"
SqlDataAdaptersda=newSqlDataAdapter(sqlct,sql.conn);
DataSetdt=newDataSet();
sda.Fill(dt);
dataGridView4.DataSource=dt.Tables[0].DefaultView;
6.1.5.2本专业推荐课程
stringdept="
select所在系from学生表where学号='
stringszx;
SqlDataAdapterda1=newSqlDataAdapter(dept,sql.conn);
DataTabledt1=newDataTable();
da1.Fill(dt1);
szx=Convert.ToString(dt1.Rows[0]["
所在系"
]);
stringsqljs="
select课程表.课程号,课程名from课程表,教师表where课程表.教师编号=教师表.教师编号and所属院系='
+szx+"
SqlDataAdaptersda=newSqlDataAdapter(sqljs,sql.conn);
dataGridView5.DataSource=dt.Tables[0].DefaultView;
6.1.6教师浏览信息
图6-6教师浏览信息
stringstrxk="
select学生表.学号,课程表.课程号,课程名,姓名,所在系from学生表,选课表,课程表where学生表.学号=选课表.学号and选课表.课程号=课程表.课程号"
SqlDataAdaptersada=newSqlDataAdapter(strxk,sql.conn);
DataSett=newDataSet();
sada.Fill(t);
this.dataGridView1.DataSource=t.Tables[0].DefaultView;
6.1.7教师修改课程
图6-7教师修改课程信息
tringstrinsert="
insertinto课程表(课程号,课程名,教师编号,课时,学分)values('
+txtccode.Text.Trim()+"
+txtcn.Text.Trim()+"
+txttchcode.Text.Trim()+"
+txtctm.Text.Trim()+"
+txtgrade.Text.Trim()+"
sql.cmd=newSqlCommand(strinsert,sql.conn);
6.1.8备份还原数据
图6-8备份还原
6.1.8.1备份数据
stringmyfilepath=txtfiledialog.Text.ToString()+"
\\"
+txtfilename.Text.ToString()+"
.bak"
File.Exists(myfilepath))
stringcmsql=cmbsql.Text;
stringCommandText="
BACKUPDATABASE"
+cmsql+"
TODISK='
+myfilepath+"
sql.cmd=newSqlCommand(CommandText,sql.conn);
数据库备份成功!
提示信息"
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
MessageBox.Show(ex.Message);
6.1.8.2还原数据
stringpath=txthback.Text.Trim();
stringdbname=cmbselect.Text.Trim();
stringsqlstr2="
usemasterrestoredatabase"
+dbname+"
fromdisk='
+path+"
withreplace"
stringsingle="
alterdatabase"
setsingle_userwithrollbackimmediate"
+sqlstr2;
sql.cmd=newSqlCommand(single,sql.conn);
还原数据成功"
6.2创新功能以及难点
6.2.1功能突破------分行统计插入
stringkcc="
select课程号from课程表"
inta;
stringca="
selectcount(*)from课程表"
sql.cmd=newSqlCommand(ca,sql.conn);
a=Convert.ToInt16(sql.cmd.ExecuteScalar());
SqlDataAdapterda=newSqlDataAdapter(kcc,sql.conn);
DataTabledt=newDataTable();
da.Fill(dt);
string[]hh=newstring[a];
string[]t=newstring[a];
for(inti=0;
i<
a;
i++)
hh[i]=Convert.ToString(dt.Rows[i]["
课程号"
stringtongji="
selectCOUNT(选课表.课程号)from选课表,课程表where选课表.课程号=课程表.课程号and选课表.课程号='
+hh[i]+"
sql.cmd=newSqlCommand(tongji,sql.conn);
t[i]=sql.cmd.ExecuteScalar().ToString();
stringud="
update课程表set选课人数='
+t[i]+"
where课程号='
SqlDataAdaptersada=newSqlDataAdapter(ud,sql.conn);
DataSettt=newDataSet();
sada.Fill(tt);
此处实现了根基课程表的课程号统计选课表中选择该课程的人数,再将选课人数添加到课程表中对应课程号选课人数列中。
其中,最初需要统计课程表行数以限制遍历课程表,再通过循环实现
6.2.2功能突破------无重复选课
try
select课程号from选课表where学号='
selectcount(*)from选课表where学号='
stringx=(string)comboBox1.SelectedItem;
if(a==0)