学生选课系统.docx

上传人:b****5 文档编号:8516243 上传时间:2023-01-31 格式:DOCX 页数:24 大小:546.64KB
下载 相关 举报
学生选课系统.docx_第1页
第1页 / 共24页
学生选课系统.docx_第2页
第2页 / 共24页
学生选课系统.docx_第3页
第3页 / 共24页
学生选课系统.docx_第4页
第4页 / 共24页
学生选课系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

学生选课系统.docx

《学生选课系统.docx》由会员分享,可在线阅读,更多相关《学生选课系统.docx(24页珍藏版)》请在冰豆网上搜索。

学生选课系统.docx

学生选课系统

河北xxx大学

数据库课程设计说明书

设计题目:

学生选课系统

姓名:

Xx

学号:

201114430118

专业:

地理信息系统

班级:

1班

指导教师:

xxx

xxx

xxxx

矿业工程学院

2014年6月7日

目 录

1概述1

1.1选题背景1

1.2课题目的1

1.3选课系统简介2

2需求分析2

3概念设2

3.1选课系统E-R图分析3

3.2数据库表结构设计6

4逻辑设计7

5系统开发流程8

6系统使用说明及主要代码9

6.1主要功能及截图9

6.1.1登录界面及主要代码9

6.1.2修改密码界面及主要代码10

6.1.3课程按条件查询12

6.1.4学生选课及删除13

6.1.5课程推荐14

6.1.6教师浏览信息15

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

概述

随着科技的发展,校园网技术迅速发展。

对于高校而言,建立校园网的作用一般有以下两方面:

一是外部网络连接,实现与网络连接,提供本校的信息服务,融入世界信息潮流;了解外面世界,加强学术交流与合作。

另一个就是建立本校的管理信息系统,实现管理的科学化、现代化;利用现代化的手段提高教学质量和管理水平。

选题背景

选课系统属于教学信息管理系统一部分,是学生课程安排的常用系统。

随着高等教育的发展和社会需要,各高校尽多地开设各类课程,以拓宽学生的知识面,培养学生的个性和创造能力,提高学生的综合素质。

传统的人工选课数据是经过多级手工处理后上报教务处的,效率较低,而选课时烦琐的工作也给教务管理部门带来了很大的工作量,因此容易出错。

另一方面,学生对课程的迟选、补选、改选操作非常麻烦,同时教学管理部门无法掌握选课人数的变化和学生分布的情况,难以进行动态调整。

传统的选课方式已经不适应现代教务教学的改革和发展,迫切需要一种新的选课方式。

为使教学管理工作的科学化、规范化,就必须采用计算机辅助管理。

计算机管理使选课更加高效准确,省去了大量的人力劳动,提高了教学管理的信息化水平。

本系统面向全校师生和管理人员,是高校日常教学、教务管理的应用软件。

该系统的目的主要是实现学生选择选修课的公平性和方便性,让他们可以选择课程,删除选课,查询选修课程信息;对于任课教师,可以提交、修改及确认所任选课成绩;对于教学管理部门,能够实现学生数据的导入、选修课表的录入、选课系统的合理配置,如每学期每人选课最大数目、每门课程的最大容量、选课时间及避开上课地点与时间的冲突等。

但是本人的知识和能力有限,时间有限,所做的系统只实现了最基本的选课系统的功能,我会在以后的学习过程中继续完善该系统。

课题目的

通过数对学生选课流程和数据库开发过程的研究,采用SQLServer数据库技术,对学生选课系统进行开发,以期该系统可以实现广泛应用,达到便于学生选课,便于课程分配和熟悉大型数据库管理系统的结构与组成,熟悉数据库应用系统的设计方法和开发过程得目的。

选课系统简介

本系统面向全校师生,是高校日常教学、教务管理的应用软件。

该系统的目的主要是实现学生选择选修课的公平性和方便性,让他们可以选择课程,删除选课,查询选修课程信息;对于教师,可以修改、删除、添加需要选课的课程信息,查看学生的选课情况,以及修改密码等。

需求分析

作为大学生的我们日常上课所学课程总是伴随着课程的选取,通过日常选课时对选课信息的研究和详细调查,确定开发学生选课系统。

经过对各个专业的选课状况的观察、分析,并结合实际情况,确定基于MicrosoftSQLServer2008数据库软件建立基于数据库的选课系统。

分析课程信息以及师生资源信息后,针对系统需求,总结如下:

登录用户分为教师和学生,即学生选取课程,教师教授课程;

学生与课程的关系式多对多的关系,即一个学生选取多门课程,同时一门课程有多位学生选取;

教师与课程的关系式一对多的关系,即一位教师教授多门类课程;

基于此,可以建立表关系如下:

课程表:

课程号(主键),课程名,课时,教师编号,学分,选课记录;

学生表:

学号(主键),姓名,性别,入学时间,所属院系,密码;

教师表:

教师编号(主键),姓名,性别,所属院系,密码;

选课表:

选课记录(主键),课程号,学号;

概念设计

数据库的设计是指对于一个给定的应用环境,构造最有效的数据库模式,建立数据及应用系统,实质能够有效地存储数据,满足用户的需求,数据库设计是在数据库管理系统支持下进行的。

选课系统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

1

n

 

图3-1-5选课系统全局E-R图

 

数据库表结构设计

将逻辑结构设计的关系模型转换为物理数据库,即具体的RDBMS中的支持的关系数据模型——表。

在SQLServer2008数据库管理系统中创建如下的表3-2-1~表3-2-4,以及相关的数据类型:

教师表

字段

类型

空值(NULL)

主键

教师编号

INT

NO

YES

姓名

CHAR

YES

性别

CHAR

YES

所属院系

CHAR

YES

表3-2-1

学生表

字段

类型

空值

主键

学号

INT

NO

YES

姓名

CHAR

YES

性别

CHAR

YES

入学日期

DATATIME

YES

密码

INT

YES

表3-2-2

课程表

字段

类型

空值

主键

课程号

INT

NO

YES

课程名

CHAR

YES

教师编号

INT

YES

课时

INT

YES

学分

INT

YES

选课人数

INT

YES

表3-2-3

 

选课表

字段

类型

空值

主键

选课记录

INT

NO

YES

课程号

INT

YES

学号

INT

YES

表3-2-4

逻辑设计

用户分为学生与教师两种,根据不同的用户身份登录可以实现不同的用户功能,其行为设计如下所示:

 

图4选课系统行为设计

 

系统开发流程

图5选课系统开发流程

系统使用说明及主要代码

该系统实现了现实生活中对选课系统的基本要求,可以方便用户实现增加、删除、修改、查看查课程的基本需求。

同时,该系统独具匠心的为学生用户添加课程推荐功能,使得学生用户了解热门课程和应选课程以方便选取课程,对于教师用户对课程的修改操作,学生端能够实时得知新添加课程,使得选课无遗漏。

对教师用户,该系统提供实时将学生选课人数统计入库,可以使得教师及时了解选课动态,教师用户还可以备份数据库并还原,以保证数据库的信息不回遗漏。

主要功能及截图

登陆界面及主要代码

图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)

{

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();

frmteacherfteacher=newfrmteacher();

fteacher.Show();

}

修改密码界面及主要代码

图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();

this.Hide();

}

else

{

stringsqltea="Update教师表Set密码='"+txXmm.Text+"'Where密码='"+txCsmm.Text+"'and教师编号='"+SQL.Login_user+"'";

//SqlDataAdaptersada=newSqlDataAdapter(sqltea,sql.conn);

sql.cmd=newSqlCommand(sqltea,sql.conn);

sql.cmd.ExecuteNonQuery();

frmteacherftc=newfrmteacher();

ftc.Show();

this.Hide();

}

intMyCount=sql.cmd.ExecuteNonQuery();

if(MyCount==0)

{

MessageBox.Show("在数据库中修改用户密码操作成功!

","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

else

{

MessageBox.Show("在数据库中修改用户密码操作失败!

","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

课程按条件查询

图6-3按条件浏览课程

stringsqljb="select课程表.*from课程表,教师表where课程表.教师编号=教师表.教师编号and姓名='"+tx1.Text+"'";

cm.CommandText=sqljb;

SqlDataReaderr=cm.ExecuteReader();

if(!

r.HasRows)

{

MessageBox.Show("授课教师不存在,请重新输入!

");tx1.Focus();

}

else

{

r.Close();

SqlDataAdapterda=newSqlDataAdapter(sqljb,sql.conn);

DataSetds=newDataSet();

da.Fill(ds);

DataTableab=newDataTable();

ab=ds.Tables[0];

dataGridView1.DataSource=ab;

}

学生选课及删除

选课

图6-4选课界面

sql.getconn();

MessageBox.Show("确定要选择此课程吗?

");

stringsqlxk="insertinto选课表(课程号,学号)values('"+(string)comboBox1.SelectedItem+"','"+SQL.Login_user+"');";

sql.cmd=newSqlCommand(sqlxk,sql.conn);

sql.cmd.ExecuteNonQuery();

删除课程

stringcode="delete选课表where课程号='"+dtxtccode.Text+"'and学号='"+SQL.Login_user+"'";

sql.cmd=newSqlCommand(code,sql.conn);

sql.cmd.ExecuteNonQuery();

MessageBox.Show("该课程已成功删除");

dtxtccode.Text="";

课程推荐

图6-5课程推荐

最受欢迎课程

stringsqlct="SELECTTOP3WITHTIES*FROM课程表ORDERBY选课人数desc";

SqlDataAdaptersda=newSqlDataAdapter(sqlct,sql.conn);

DataSetdt=newDataSet();

sda.Fill(dt);

dataGridView4.DataSource=dt.Tables[0].DefaultView;

本专业推荐课程

stringdept="select所在系from学生表where学号='"+SQL.Login_user+"'";

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);

DataSetdt=newDataSet();

sda.Fill(dt);

dataGridView5.DataSource=dt.Tables[0].DefaultView;

教师浏览信息

图6-6教师浏览信息

stringstrxk="select学生表.学号,课程表.课程号,课程名,姓名,所在系from学生表,选课表,课程表where学生表.学号=选课表.学号and选课表.课程号=课程表.课程号";

sql.getconn();

SqlDataAdaptersada=newSqlDataAdapter(strxk,sql.conn);

DataSett=newDataSet();

sada.Fill(t);

this.dataGridView1.DataSource=t.Tables[0].DefaultView;

教师修改课程

图6-7教师修改课程信息

tringstrinsert="insertinto课程表(课程号,课程名,教师编号,课时,学分)values('"+txtccode.Text.Trim()+"','"+txtcn.Text.Trim()+"','"+txttchcode.Text.Trim()+"','"+txtctm.Text.Trim()+"','"+txtgrade.Text.Trim()+"');";

sql.getconn();

sql.cmd=newSqlCommand(strinsert,sql.conn);

sql.cmd.ExecuteNonQuery();

备份还原数据

图6-8备份还原

备份数据

stringmyfilepath=txtfiledialog.Text.ToString()+"\\"+txtfilename.Text.ToString()+".bak";

if(!

File.Exists(myfilepath))

{

sql.getconn();

stringcmsql=cmbsql.Text;

stringCommandText="BACKUPDATABASE"+cmsql+"TODISK='"+myfilepath+"'";

sql.cmd=newSqlCommand(CommandText,sql.conn);

sql.cmd.ExecuteNonQuery();

MessageBox.Show("数据库备份成功!

","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

MessageBox.Show(ex.Message);

}

还原数据

stringpath=txthback.Text.Trim();

stringdbname=cmbselect.Text.Trim();

stringsqlstr2="usemasterrestoredatabase"+dbname+"fromdisk='"+path+"'withreplace";

stringsingle="alterdatabase"+dbname+"setsingle_userwithrollbackimmediate"+sqlstr2;

sql.cmd=newSqlCommand(single,sql.conn);

sql.cmd.ExecuteNonQuery();

MessageBox.Show("还原数据成功");

创新功能以及难点

功能突破------分行统计插入

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

{

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课程号='"+hh[i]+"'";

SqlDataAdaptersada=newSqlDataAdapter(ud,sql.conn);

DataSettt=newDataSet();

sada.Fill(tt);

}

此处实现了根基课程表的课程号统计选课表中选择该课程的人数,再将选课人数添加到课程表中对应课程号选课人数列中。

其中,最初需要统计课程表行数以限制遍历课程表,再通过循环实现

功能突破------无重复选课

try

{

inta;

sql.getconn();

stringkcc="select课程号from选课表where学号='"+SQL.Login_user+"'";

stringca="selectcount(*)from选课表where学号='"+SQL.Login_user+"'";

sql.cmd=newSqlCommand(ca,sql.conn);

a=Convert.ToInt16(sql.cmd.ExecuteScalar());

SqlDataAdapterda=newSqlDataAdapter(kcc,sql.conn);

DataTabledt=newDataTable();

da.Fill(dt);

stringx=(string)comboBox1.SelectedItem;

string[]hh=newstring[a];

if(a==0)

{

sql.getconn();

MessageBox.Show("确定要选择此课程吗?

");

stringsqlxk="insertinto选课表(课程号,学号)values('"+(string)comboBox1.SelectedItem+"','"+SQL.Login_user+"');";

sql.cmd=newSqlCommand(sqlxk,sql.conn);

sql.cmd.ExecuteNonQuery();

sql.closeconn();

}

else

{

for(inti=0;i

{

hh[i]=Convert.ToString(dt.Rows[i]["课程号"]);

if(x==hh[i])

{

Mess

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1