课 程 设 计
课程设计名称: 数据库应用系统课程设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 :
课程设计时间: 2011-12-19至2011-12-30
专业课程设计任务书
学生选课管理信息系统
1 概述
当今社会是一个信息时代,计算机技术发展迅速,同时信息的自动处理以及网络式的信息交互方式越来越被人们认可和应用,让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,同时,随着学生选课自主权的增加,网上选课有效的避免了许多不良现象,使教学更加透明。为了加强对学生选课的规范管理,减轻教学管理人员的工作量, 同时更好地利用网络和信息化手段做到对学生选课工作更及时和更规范,系统设计开发了基于B/S模式的学生在线选课系统。该系统从学生网上自主选课,以及教师的课程发布两个大方面进行设计,实现了学生的在线信息查询、选课功能以及教务处对课程信息发布的管理等功能。 系统功能基本要求:
教师信息, 包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等。教室信息,包括,可容纳人数、空闲时间等。选课信息,包括课程编号、课程名称、任课教师、选课的学生情况等。成绩信息,包括课程编号、课程名称、学分、成绩。按一定条件可以查询。
学生选课系统是一个学校不可缺少的部分, 它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。但是一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点, 如:效率低、保密性差、时间长、将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
2 需求分析
学生选课系统是一个学校不可缺少的部分, 它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。但是一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点, 如:效率低、保密性差、时间长、将产生大量的文件和数据,
这对于查找、更新和维护都带来了不少的困难。网上选课与传统的选课方式相比更加节约资源,同时,随着学生选课自主权的增加,网上选课有效的避免了许多不良现象,使教学更加透明。加强对学生选课的规范管理,减轻教学管理人员的工作量, 同时更好地利用网络和信息化手段做到对学生选课工作更及时和更规范。
图1. 流程图
图2. 模块图
3 概念结构设计
程序有三个实体分别是:教师、课程、学生。教师与课程实体以授课联系,课程与学生实体以选修联系。教师拥有:姓名、性别、教师编号、职称、学历等属性。课程拥有:课程名、课程号、课程名、上课时间、上课地点等属性。学生拥有:姓名、学号、班级、专业等属性。
图3.E-R 图
4逻辑结构设计
软件环境:windows 环境 Microsoft SQL Server2005
Microsoft Visual Studio 2008
硬件环境:显示器 VGA 或更高分辨率显示器
处理器 500 MHz
内存 512M 逻辑结构设计:
教师(教师姓名教师编号教师性别、职称、学历、毕业院校) 课程(课程名、课程号、代课老师、上课时间) 学生(姓名、学号、性别、班级、专业)
5源代码及系统截图
图4. 程序流程图
主界面代码:
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "" || TextBox2.Text == "") {
Response.Write("");
return; }
string ConnSql =
System.Configuration.ConfigurationManager.ConnectionStrings["学生选课ConnectionString"].ConnectionString;
SqlConnection Conn = new SqlConnection(ConnSql); Conn.Open();
string selectStr = "select * from 学生 where 学号='" + TextBox1.Text + "' and 密码='" + TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(selectStr, Conn); SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) {
Session["ID"] = reader["学号"]; Session["pass"] = reader["密码"]; Response.Redirect("denglu.aspx"); } else {
Response.Write("");
}
reader.Close(); Conn.Close(); }
protected void Button2_Click(object sender, EventArgs e) {
Response.Write("
href='javascript:window.opener=null;window.close()'>关闭窗口");
}
protected void Button3_Click(object sender, EventArgs e) {
if (TextBox1.Text == "" || TextBox2.Text == "") {
Response.Write("");
return; }
string ConnSql =
System.Configuration.ConfigurationManager.ConnectionStrings["学生选课ConnectionString"].ConnectionString;
SqlConnection Conn = new SqlConnection(ConnSql); Conn.Open();
string selectStr = "select * from 教师 where 教师编号='" + TextBox1.Text + "' and 密码='" + TextBox2.Text + "'";
SqlCommand cmd = new SqlCommand(selectStr, Conn); SqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) {
Session["ID"] = reader["教师编号"]; Session["pass"] = reader["密码"]; Response.Redirect("denglu2.aspx"); } else {
Response.Write("");
}
reader.Close(); Conn.Close(); 选课代码:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataClassesDataContext db = new DataClassesDataContext(); txtNumber.Text = db. 课程.ToList()[ddlName.SelectedIndex].课程号.ToString();
txtTeacher.Text = db. 课程.ToList()[ddlName.SelectedIndex].代课教师.ToString();
txtTime.Text = db. 课程.ToList()[ddlName.SelectedIndex].上课时间.ToString();
} protected
void
SqlDataSource2_Selecting(object
sender,
SqlDataSourceSelectingEventArgs e)
{ }
protected void Button2_Click(object sender, EventArgs e) {
Response.Redirect("denglu.aspx"); }
protected void Button1_Click(object sender, EventArgs e) {
SqlConnection
conn
=
new
SqlConnection(ConfigurationManager.ConnectionStrings["学生选课ConnectionString"].ConnectionString);//创建连接对象
SqlCommand insertCmd = new SqlCommand("insert into 选课(课程号, 学号, 课程名, 代课老师) values(@id,@number,@name,@teacher)", conn);
insertCmd.Parameters.Add("@id", SqlDbType.Int);//设置参数
insertCmd.Parameters.Add("@number", SqlDbType.Int); insertCmd.Parameters.Add("@teacher", SqlDbType.Char, 10); insertCmd.Parameters.Add("@name", SqlDbType.Char, 10); insertCmd.Parameters["@id"].Value =txtNumber.Text; //为参数赋值
insertCmd.Parameters["@number"].Value Session["ID"].ToString();
insertCmd.Parameters["@name"].Value =ddlName.SelectedValue;
insertCmd.Parameters["@teacher"].Value = txtTeacher.Text; conn.Open();
int flag = insertCmd.ExecuteNonQuery(); //执行添加 if (flag > 0) //如果添加成功 {
lblMessage.Text = "成功添加选课信息!";
=
}
else //如果添加失败 {
lblMessage.Text = " 添加选课信息失败,查看输入是否正确!";
}
conn.Close(); }
教师个人信息显示:
protected void Page_Load(object sender, EventArgs e) {
SqlConnection
conn
=
new
SqlConnection(ConfigurationManager.ConnectionStrings["学生选课ConnectionString"].ConnectionString); //创建连接对象
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select 教师姓名, 教师编号, 性别, 职称 from 教师 where 教师编号='" + (string)Session["ID"] + "'";
//打开连接对象,建立到数据库的连接 conn.Open();
//建立DataReader 对象迅速获取查询结果 SqlDataReader dr = cmd.ExecuteReader(); //显示信息
GridView1.DataSource = dr; GridView1.DataBind(); dr.Close(); conn.Close(); }
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("denglu2.aspx"); 学生信息显示: SqlConnection
conn
=
new
SqlConnection(ConfigurationManager.ConnectionStrings["学生选课ConnectionString"].ConnectionString); //创建连接对象
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select 学号, 姓名, 性别 from 学生 where 学号='" + (string)Session["ID"]+"'" ;
//打开连接对象,建立到数据库的连接 conn.Open();
//建立DataReader 对象迅速获取查询结果 SqlDataReader dr = cmd.ExecuteReader(); //显示信息
GridView1.DataSource = dr; GridView1.DataBind(); dr.Close(); conn.Close(); }
学生选课代码:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("denglu.aspx"); }
SqlConnection
conn
=
new
SqlConnection(ConfigurationManager.ConnectionStrings["学生选课
ConnectionString"].ConnectionString); //创建连接对象
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select 学号, 姓名, 性别 from 学生 where 学号='" + (string)Session["ID"]+"'" ;
//打开连接对象,建立到数据库的连接 conn.Open();
//建立DataReader 对象迅速获取查询结果 SqlDataReader dr = cmd.ExecuteReader(); //显示信息
GridView1.DataSource = dr; GridView1.DataBind(); dr.Close(); conn.Close(); }
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("denglu.aspx");
图5. 登陆界面
图6. 学生登录
图7. 学生基本信息
图8. 学生选课
图9. 课程退选
图10. 教师登录
图11教师个人信息
参考文献
1. 边肇祺,模式识别(第二版),北京:清华大学出版社,1988,25~35 2. 李永忠,几种小波变换的图像处理技术,西北民族学院学报(自然科学版),2001.6,22(3),15~18
3. 《用ASP 轻松开发Web 网站》刘 杰等 北京希望电子出版社 2000.9 4. 《ASP 网页制作教程》王国荣 人民邮电出版社 2000.6 5. 张绣兰. ASP网站建设实录. 北京希望电子出版社. 2008
心得体会
经过不断的修改和完善,我选择的课题学生选课系统基本完成。其功能基本符合网络上的用户要求,能够在线选课,在线添加课程,在线查询课程等。虽然由于自己知识上的不足,有些地方有少许错误和容错性能比较低,但是还是可以基本完成选课系统应有的功能。
通过毕业设计过程我会到了许多知识,这也是在大学里又一次比较完整的完成一个小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了。通过不断的发现问题,总结问题和解决问题的过程,使我在此次毕业设计活动中不断的提高,和得到了宝贵的经验。
在明确用户需求阶段,网上查阅了相关资料,并浏览了部分网上选课系统,分析总结后将系统分为学生信息管理、教师信息管理、课程信息管理、留言信息管理和权限的判断五个模块。
在系统分析阶段,查阅了大量基于不同技术的网站开发的文章,具备了一定的理论基础,比较分析后采用了ASP 编程技术和SQL Server 2005数据库,在Windows XP 操作系统环境下,运用VS2008开发工具,开发了这个基于.NET 结构的学生在线选课系统的实现。本系统不但有良好的系统运行稳定性、可靠性和实用性,而且操作简单,维护方便,具有一定的实用价值。
系统进入编程阶段后,遇到了很多的困难,主要是数据的存取。但经过自己的努力及老师的指导,最终解决了这些问题,开发出一个学生选课系统,并达到了预期的设想。
虽然系统还有很多不足之处,如:程序中错误处理和输入控制不够全面,可能导致输入无效引发错误。但在整个开发过程中我学到了很多的知识,增强了动手能力,积累了解决各种难题的经验。同时也让我发现了自己的许多不足之处,有待在将来的工作中进一步的学习和完善,掌握和运用更多的知识。
课程设计老师和同学们的的关心和指导下完成的,本人对学生选课系统有了较深刻的认识,也具备了一定的实际开发经验。认识到开发系统首先要明确用户的需求,然后进行系统分析,其次构建系统模型、建立完善的数据库,接着编写代码,最后测试系统。对顺利完成本课题起到了极大的作用,在此向他们表示衷
心的感谢!