学生选课系统设计visualstudiosqlsever.docx
《学生选课系统设计visualstudiosqlsever.docx》由会员分享,可在线阅读,更多相关《学生选课系统设计visualstudiosqlsever.docx(26页珍藏版)》请在冰豆网上搜索。
学生选课系统设计visualstudiosqlsever
学生选课系统设计(visual-studio2005---SQLsever2000)
一.需求分析
1.1设计任务
本设计的任务是学生选课系统的设计与实现,其中要实现,课程信息管理(录入、查询、维护);学生信息管理(录入、查询、维护);教师信息管理(录入、查询、维护);选课管理(选课、退课、选课信息查询);教师输入成绩管理(查询学生选的课并给学生成绩)。
1.2系统性能需求
实用性:
为学生选课提供方便,可以有效的管理学生选课。
先进性:
产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。
使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。
操作简单:
本系统应该适用于不同水平的使用者,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。
适应性:
应该能广泛应用于不同类型的大、中、小学院校,系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。
代码可读性好:
文中的代码将尽可能简洁,易懂。
1.3可行性分析
经济可行性:
由于本系统的主要背景是课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运MicrosoftVisualStudio2008软件的电脑便可,所以不用考虑到经济问题。
技术可行性:
本系统的开发使用数据库,只需考虑安装SQLsever数据库的问题,在技术上要求并不高,因此本系统在技术上是可行的。
运行可行性:
本系统是一个学生选课系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
二.数据库设计
2.1实体关系图
图2.11学生实体关系图
图2.12教师实体关系图
图2.13课程实体关系图
图2.14选课实体关系图
2.2数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQLServer2000建立“学生选课”数据库,其基本表清单及表结构描述如下:
表2.1数据库中用到的表:
数据库表名
关系模式名称
备注
Student
学生表
学生基本信息表
Course
课程表
课程基本信息表
Teach
教师表
教师基本信息
Stu_Cour
选课表
学生选课信息
表2.2Student基本情况数据表:
字段名
字段类型
NotNull
说明
Sno
Char
Primarykey
学号
Sname
char
NotNull
姓名
Sclass
char
班级
Sage
intr
出生日期
Ssex
char
性别
表2.3Teach基本情况数据表:
字段名
字段类型
NotNull
说明
Tno
Char
Primarykey
教师编号
Tname
char
NotNull
教师名
Cno
char
外部码
所授课程
Tdept
char
所在系
表2.4Course数据表:
字段名
字段类型
约束控制
说明
Cno
char
主键(primarykey)
课程号
Cname
char
notnull
课程名称
Ctime
int
课时
Ccredit
int
学分
Cteachen
char
任课老师
表2.5Stu_cour情况数据表:
字段名
字段类型
约束控制
说明
Cno
char
外部键
课程编号
Sno
char
外部键
学号
Sname
char
姓名
Sclass
char
班级
SCgrade
char
成绩
Tname
char
教师名
Tno
char
教师编号
Cname
char
课程名称
Ccredit
int
成绩
Ccredit
int
学分
三.概要设计
3.1系统总体功能
根据本设计的要求可以得到如图3-1所示的系统功能图。
图3-1系统功能图
3.2系统功能模块设计
本系统需要完成的功能主要有:
(1)有关学生信息的输入,包括输入学生基本信息、所选课程。
(2)学生信息的查询、修改、删除。
(3)课程管理信息的添加、修改、删除和浏览等。
(4)学生选课管理信息的查询、添加、修改、删除。
(5)学生实现选择课程和退选课程的功能。
(6)教师实现查询学生选的课并给学生成绩。
四.详细设计
4.1登陆界面的设计
登录模块提供用户登录界面,用户输入正确的用户名和密码后,则可进入系统主窗口(即导航页面),从而可以选择进入相应的子系统。
在系统登录界面中,单击【确定】按钮验证用户名和用户密码,若正确则进入系统主界面;否则弹出错误提示,并等待用户的重新输入。
单击【取消】按钮则关闭登录界面,退出系统。
首先打开VisualStudio2008,新建一个Windows应用程序,命名为“学生选课系统”,再为应用程序添加一个窗体。
然后在窗体合适位置添加所需要的组件并设置相应属性。
接下来编写登录模块的代码,部分代码如下所示。
stringLJ=@"server=.;database=myd;uid=sa;pwd=";//建立连接
SqlConnectionconn=newSqlConnection(LJ);
conn.Open();//读取所输入的用户名和密码
SqlCommandcomm=conn.CreateCommand();
if(rbAdmin.Checked)
{stringsql="SELECTadminname,adminpasFROMadminWHERE(adminname='"+tbName.Text+"')";
comm.CommandText=sql;
SqlDataReaderdatar=comm.ExecuteReader();
DateTimedt=newDateTime(2008,1,1);
if(DateTime.Now>=dt)
MessageBox.Show("程序已经过期,请联系开发商!
","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
Close();//判断是否存在输入的用户
else
if(!
datar.HasRows)
MessageBox.Show("用户名不存在,请重新输入!
");
tbName.Focus();
return;
}/读取数据库的内容,并与输入的进行比较;
while(datar.Read())
{//判断用户输入是否正确
if(datar["adminpas"].ToString().Trim()!
=tbPas.Text.Trim())
MessageBox.Show("用户密码不正确,请重新输入!
");
tbPas.Focus();
return;
else
AdminLoginf2=newAdminLogin();
f2.ShowDialog();
Close();
elseif(rbStudent.Checked)
stringsql="SELECTsno,spasFROMstudentWHERE(sno='"+tbName.Text+"')";
comm.CommandText=sql;
SqlDataReaderdatar=comm.ExecuteReader();
DateTimedt=newDateTime(2008,1,1);
if(DateTime.Now>=dt)
MessageBox.Show("程序已经过期,请联系开发商!
","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
Close();
}//判断是否存在输入的用户
else
if(!
datar.HasRows)
MessageBox.Show("用户名不存在,请重新输入!
");
tbName.Focus();
return;
}//读取数据库的内容,并与输入的进行比较;
while(datar.Read())
{//判断用户输入是否正确
if(datar["spas"].ToString().Trim()!
=tbPas.Text.Trim())
MessageBox.Show("用户密码不正确,请重新输入!
");
tbPas.Focus();
return;
else
StudentLoginf3=newStudentLogin();
f3.ShowDialog();
Close();
else
stringsql="SELECTtno,tpasFROMteacherWHERE(tno='"+tbName.Text+"')";
comm.CommandText=sql;
SqlDataReaderdatar=comm.ExecuteReader();
DateTimedt=newDateTime(2008,1,1);
if(DateTime.Now>=dt)
MessageBox.Show("程序已经过期,请联系开发商!
","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
Close();
}//判断是否存在输入的用户
else
if(!
datar.HasRows)
MessageBox.Show("用户名不存在,请重新输入!
");
tbName.Focus();
return;
}//读取数据库的内容,并与输入的进行比较;
while(datar.Read())
{//判断用户输入是否正确
if(datar["tpas"].ToString().Trim()!
=tbPas.Text.Trim())
MessageBox.Show("用户密码不正确,请重新输入!
");
tbPas.Focus();
return;
else
TeacherLoginf4=newTeacherLogin();
f4.ShowDialog();
Close();
完成后的界面效果如图4.1所示
图4.1登陆界面
4.2管理员登陆界面设计
按照以上步骤设计一个管理员登陆界面如图4.2所示。
图4.2管理员登陆界面
4.3教师登陆界面设计
首先打开VisualStudio2008,新建一个Windows应用程序,再为应用程序添加一个窗体。
然后在窗体合适位置添加所需要的组件并设置相应属性。
部分代码如下所示:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespacemyd
publicpartialclassTeacherLogin:
Form
publicTeacherLogin()
InitializeComponent();
privatevoidbutOK_Click(objectsender,EventArgse)
if(tbSearch.Text.Length<=0)
MessageBox.Show("查询条件不能为空","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
inti;
if(int.TryParse(tbSearch.Text,outi))
if(tbSearch.Text.Length<=0)
MessageBox.Show("学号必需为数字","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
SqlConnectioncnn=newSqlConnection
("DataSource=.;InitialCatalog=myd;UserID=sa;Password=");
SqlCommandcmd=newSqlCommand();
cmd.CommandText="SC_Info_Search";
cmd.Parameters.Add("@SearchType",SqlDbType.Decimal);
cmd.Parameters.Add("@SearchText",SqlDbType.VarChar,50);
i=0;
cmd.Parameters["@SearchType"].Value=i;
cmd.Parameters["@SearchText"].Value=tbSearch.Text.Trim();
cmd.CommandType=CommandType.StoredProcedure;
cmd.Connection=cnn;
SqlDataAdaptersda=newSqlDataAdapter(cmd);
try
DataSetds=newDataSet();
sda.Fill(ds);//填充数据集
sCBindingSource.DataSource=ds.Tables[0];//将数据集显示出来
//把查询出来的数据绑定到相关控件
tbCj.DataBindings.Clear();
tbCj.DataBindings.Add("Text",sCBindingSource,"score");
catch(Exceptionex)
MessageBox.Show("出现错误,错误原因为"+ex.Message,
"系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Error);
privatevoidbutSave_Click(objectsender,EventArgse)
stringsql;
sql="updateSCsetscore='"+tbCj.Text+"'wheresno="+((DataRowView)sCBindingSource.Current)["sno"].ToString();
SqlConnectioncnn=newSqlConnection
("DataSource=.;InitialCatalog=myd;UserID=sa;Password=");
SqlCommandcmd=newSqlCommand(sql,cnn);
try
cnn.Open();//打开连接
cmd.ExecuteNonQuery();
MessageBox.Show("数据保存成功","系统提示:
");
catch(Exceptionex)
MessageBox.Show("出现错误,错误原因为"+ex.Message,
"系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Error);
finally
if(cnn.State==ConnectionState.Open)
cnn.Close();//关闭连接
完成后的界面效果如图4.3所示
图4.3教师登陆界面
4.4学生登陆界面设计
1.首先打开VisualStudio2005。
2.新建一个工程,工程名为:
StudentLogin
3.在窗体上放置数据显示工具DataGridView1、DataGridView2
4.设置DataGridView1和DataGridView2任务,在选择数据源中,选择添加项目数据源,根据数据源配置向导来添加,和数据库名为myd中的学生表连接起来,添加成功时,选择数据源为courseBindingSource和sCBindingSource。
5.在窗体上放置GroupBox组件GroupBox1,RadioButton组件RadioButton1、RadioButton2、RadioButton3、RadioButton4、RadioButton5,Label组件Label1、Label2、Label3,Button组件Button1、Button2、Button3、Button4、Button5,TextBox组件TextBox1到TextBox4
6.设置GroupBox的属性中的Text:
GroupBox1的Text中输入:
查询条件。
7.设置Button的属性中的Text:
Button1到Button5的Text中分别输入:
确认、返回、选中此课、退了此课、确定。
8.设置Button的属性中的Name:
确认、返回、选中此课、退了此课、确定的Name中分别输入:
btnOK、btnCancel、butXzck、butTlck、butOK2。
9.设置Label的属性中的Text:
Label1到Label3的Text中分别输入:
课程代码、输入自己的学号、输入自己的学号查找自己所选的课程和成绩。
10.设置RadioButton的属性中的Name:
RadioButton1到RadioButton5的Name中分别输入:
rbKcdm、rbKcmc、rbXf、rbKkx、rbRkls。
11.设置RadioButton的属性中的Text:
RadioButton1到RadioButton3的Text中分别输入:
课程代码、课程名称、学分、开课系、任课老师。
12.设置RadioButton1的属性中的checked设置为True。
13.设置TextBox的属性中的Name:
TextBox1到TextBox4的Name中分别输入:
tbSearch、tbNo、tbsno、tbSearch2。
14.分别双击确认、确认、返回、选中此课、退了此课、确定切换到代码窗口,输入代码,代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespacemyd
publicpartialclassStudentLogin:
Form
publicStudentLogin()
InitializeComponent();
privateboolInsert_flag=false;
privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse)
Insert_flag=false;
privatevoidStudentLogin_Load(objectsender,EventArgse)
{this.courseTableAdapter.Fill(this.mydDataSet5.course);
privatevoidbtnOK_Click(objectsender,EventArgse)
if(tbSearch.Text.Length<=0)
MessageBox.Show("查询条件不能为空","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
inti;
if(rbXf.Checked&&int.TryParse(tbSearch.Text,outi))
if(tbSearch.Text.Length<=0)
MessageBox.Show("学分必需为数字","系统提示:
",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
SqlConnectioncnn=newSqlConnection
("DataSource=.;InitialCatalog=myd;UserID=sa;Password=");
SqlCommandcmd=newSqlCommand();
cmd.CommandText="Course_Info_Search";
cmd.Parameters.Add("@SearchType",SqlDbType.Decimal);
cmd.Parameters.Add("@SearchText",SqlDbType.VarChar,50);
if(rbKcdm.Checked)
i=0;
elseif(rbKcmc.Checked)
i=1;
elseif(rbXf.Checked)
i=2;
elseif(rbKkx.Checked)
i=3;
else
i=4;
cmd.Parameters["@SearchType"].Value=i;
cmd.Parameters["@SearchText"].Value=tbSearch.Text.Trim();
cmd.CommandType=CommandType.StoredProcedure;
cmd.Connection=cnn;
SqlDataAdaptersda=newSqlDataAdapter(cmd);
try
DataSetds=newDataSet();
sda.Fill(ds);//填充数据集
courseBindingSource.DataSource=ds.Tables[0];//