基于C#++sqlserver的选课系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于C#++sqlserver的选课系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
基于C#++sqlserver的选课系统设计与实现(毕业论文+程序源码)1、项目简介2、资源详情3、关键词:4、毕设简介5、资源下载
1、项目简介
本文通过分析浏览器/服务器结构的特点并结合选课的实际情况,提出了基于浏览器/服务器结构网上选课系统的基本设计思想,简要介绍了系统各功能模块及数据库的设计,着重讨论了用 技术和SQL Server 2000开发网上选课系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。通过该系统,使学生可以方便地在校园网上进行网上选课。该B/S结构的系统在Windows XP系统和平台下开发完成,使用C#作为的开发语言,SQL Server 2000作为数据库。系统有较高的安全性和较好的性能。其中连接数据库的字符串可以随时在web.config里修改,并经过编码加密,增加了灵活性,保护了数据库的安全。代码尽量使用存储过程和尽量减少数据库连接的打开时间等手段来提高性能。本文中除了有对程序的系统分析、总体设计、数据库设计、功能实现等主体部分外,在这之前还介绍了与网上选课系统相关的信息、IIS介绍、IIS与的结合等的基本内容及发展情况。2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:10707个字36页
包含内容:整套源码+完整毕业论文+答辩PPT
3、关键词:
网上选课,浏览器/服务器结构,,数据库管理系统4、毕设简介
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
第一章 引言
1.1课题研究的目的
1.掌握采用Internet的TCP/IP协议,以B/S方式,编程技术,多媒体技术。
2.掌握一种多任务多用户操作系统
的动态网页和SQL Server大型的数据库。
4.学会使用某种开发工具。
5.培养相互合作的精神。
1.2 课题研究的意义
学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
省略
本文中所做的主要工作如下:
(1)介绍了个性化页面的背景及Winserver+IIS+系统的一般原理;
(2) 阐述整个个性化页面生成系统的系统结构及工作原理;分析了系统实现中的特殊性、难点和重点。
(3) 设计实现用户管理、课程管理、选课信息录入管理、新生信息录入管理、课程的浏览和查找、学生查找等页面 。
(4) 分析并解决实现中的若干技术问题。
(5) 建立完整的网上选课,进行测试并分析结果。
1.3 课题的可行性分析
1.3.1 课题调研
(1)与实践活动和相关的文件和资料由教师提供。
(2)本课题要求学生有熟练的开发能力,有较强的自学能力以及一定的关系数据库理论开发功底。
(3)具有对复杂表进行处理的能力。
(4)具体问题再做详细调查研究并与指导老师面谈。
1.3.2 可行性分析
(1)技术可行性-----本系统仅需要一台装有Office软件的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动画文件,数据库使用SQLServer 中提供的数据库桌面工具ODBC。
(2) 经济可行性-----由于本系统是为学生选课管理使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。
(3) 操作可行性-----界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可靠;统计准确;制表灵活;适应力强;容易扩充。第2章内容主要是:系统需求分析包括,现有系统介绍;系统的实体分析,实体关系图。
第二章 系统分析与总体设计
2.1系统分析
在本系统中,有三类用户:系统管理员,教师和学生。三种不同的用户所具有的操作权限以及操作内容均不一样。
本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以及教学楼教室信息。系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程。
教师用户登陆网站后可以开设课程,为自己的课程编辑上课时间和地点,当系统中出现时间地点冲突的时候,系统向教师用户报告并推荐一个时间地点。每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予分数,如果学生及格,学生将获得该课程的学分。
对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。当时候超过选课时段后,系统自动锁定学生的选课课程。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录网站查询成绩与学分。
根据上面的要求,从操作功能上可以分为两个类:一个是通用操作,主要实现用户的登录注销和修改密码等;另一种是为不同用户定制不同操作。
1。通用操作
(1)登录与注销
每个用户都可以用自己的帐号登录系统。用户操作完成后推出系统,注销后可以重新登录系统。
(2)修改密码
每个用户第一次登录都用默认密码(教师和学生与帐号一样)。
2。用户所具有功能
(1)系统管理员
设置选课时间段:系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改。
录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。
录入教学楼教室信息:通过此项功能可以把学校里所有的教学楼教室的信息录入到系统中,以便教师在开设课程时候设置上课的教室。
(2)教师用户
显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址等。
开设课程:教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或则选修课程,可以设置该课程的最大人数。教师还可以为该课程设置一个前导课程,若学生没有学习或则选择前导课程则不能选择该课程。
编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点。
给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若
及格,给予学生学分。
(3)学生用户
显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。
查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。
选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。
锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。
查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。
查看学分和成绩
课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。
2.2 系统总体设计
在前面的系统的系统功能分析中,将系统划分成10个模块,如图:
用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,跳转到对应的页面中。设置选课时间模块提供给系统管理员修改选课时间段。录入信息模块提供给系统管理员,用来录入学生和教师信息,以及录入教学楼教室等信息。开设课程模块提供给教师用户,用来开设一门必修课程或则选修课程。编辑课程时间地点模块提供给教师用户,编辑课程的上课时间地点友好的界面和操作。评分模块用于教师用户给选修该教师开设的课程的学生评分。查看课程模块包括查看必修课程、查看选修课程、查看已选课程、查看课程成绩单。选课和锁定模块中实现选择选修课程和锁定选课信息的功能。
第三章 数据库设计与实现
数据库是此类系统的核心,系统中所有的信息都存储在数据库中,在所有页面中通过与数据库连接,操作数据库中的数据,从而实现所有需要的功能。数据库软件有很多,如Microsoft SQL Server 等。本系统中数据库采用Microsoft SQL Server 作为数据库工具。数据库是网站的核心,数据库设计的合理与否对网站的建设有着至关重要的影响。一个良好的数据库开发过程一般是先系统分析,再逻辑设计,然后物理实现。系统分析中分析数据库用户需求,并画出E-R图直观地表示出数据库系统的需求。逻辑设计中根据系统分析设计的一个关系模型。物理设计为逻辑设计中的数据模型选取一个最合理的应用环境的物理结构,通常选取一个常用数据库软件,用数据库软件创建与逻辑设计中数据模型对应的数据库。
3.1数据库系统分析
本系统的数据库实体主要有“学生”、“教师”、“教学楼”、“教室”、“课程”等。其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“教学楼”与“教室”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。同样“课程”与“教室”之间也是多对多的关系。整个数据库可以用一个E-R图表示,如图:
E—R图中的实体图:
3.2 数据库逻辑设计
数据库逻辑设计就是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
根据以上四条规则,下面将E—R图转换成关系模型。
对于“教学楼”、“教室”和两者之间的关系,就可以根据规则(3)转换成两个关系模式
教学楼(教学楼ID,教学楼名称)
教室(教室ID,教学楼ID,教室名称)
对于“学生”、“课程”和它们之间的“选修”关系就可以规则(4)转换成三个关系模式。
学生(学号,姓名,性别,年龄,登陆密码,学分,地址,电话,电子邮件)
课程(课程编码,课程名称,开课教师编号,学分,最大人数,课程简介,前导课程编号)
选课(学号,课程编号,成绩)
依次类推,剩下的关系转换成下面三个关系模式:
教师(教师编号,姓名,性别,年龄,电话,电子邮件,个人简介)
课程时间地点(课程编号,开始周次,结束周次,上课时间,上课教室ID)
管理员(帐号,密码)
3.3数据库物理实现
经过数据库系统分析和逻辑设计后,数据库的结构已经非常清晰,剩下的就是用一种数据库软件实现这样的结构。本系统中数据库采用Microsoft SQL Server 2000作为数据库。首先我们在Microsoft SQL Server 2000的“企业管理器”创建一个数据库,我们命名为“SC”,如图3-1:
图3-1
选中SC数据库,向数据库中添加8个表:Student,Teacher,Course,SC,CourseTime,Building,Room和Admin,每个表与逻辑设计中一种的关系模式相对应。下面是每个数据表中的属性,包括属性列的名称、数据类型、长度、是否可以为空和备注说明等内容。
(1)Student表。Student表用来存储学生的个人信息,使用学号作为主键,如图3-2:
图3-2
(2)Teacher表。Teacher表用来存储教师的个人信息,用学校分配给教师的教师编号作为主键,这样可以避免重复,如图3-3:
图3-3
(3)Course表。Course表用来存储课程信息,Course表以课程编号为主键,设置课程编号自动增加1(通过建表的时候对属性列设置“标识”,并设置“标识递增量”为1)。表中开课教师Id为外键,所有“TId”的值必须是Teacher表中的“TId”值。设置外键关系可以通过在建立表的窗口中单击右键,在右键菜单中选择“关系”,在弹出的对话框中设置外键关系。如图3-4:
图3-4
(4)SC表。SC表用于存储学生的选课信息,在SC表中学号和课程编号是主键,同时也是外键。如图3-5:
图3-5
(5)CourseTime表。CourseTime表用来存放课程的上课时间和上课地点信息,其中课程编号和教室编号为外键。如图3-6:
图3-6
(6)Building表。Building表用来存放教学楼信息,Building表中教学楼编号为主键,自动增加1。如图3-7:
图3-7
(7)Room表。Room表用来存放教室信息,在Room表中,教室编号为主键,自动增加1,教学编号为外键。如图3-8:
图3-8
(8)Admin表。Admin表用来存放系统管理员信息,如图3-9:
图3-9
第四章 公共类与公共页面设计
4.1 Web.config页面设计
省略
4.2 数据库连接操作类—Db类
省略
4.3 工具类MyUtility类
省略
4.4 错误信息类和错误显示页面
在用户使用系统过程中,可能由于用户操作失败或则网络原因等,系统运行会出现一些错误,为了便于统一,本系统定义专用的错误信息类和错误显示页面。在错误信息类ErrorInfo类中,定义了所有的本系统中所出现的错误情况和函数Message。函数Message根据错误情况得到相应显示字符串。错误显示页面根据URL中错误代码参数显示不同的错误信息。
4.5登录页面
登录页面是所有用户公用的功能。不同的用户登录到系统中将转向不同的页面。解决方法运用了的内置对象Session记录用户登录信息,同样也可以在网站里随时判断用户是否已经登录。
第五章 系统说明书
5.1系统界面说明
下面是在线选课系统的预览,此处简单介绍本系统的部分功能。
1.登录页面,如图5-1:
图5-1
在用户名和密码处输入用户名和密码,在“用户类型”下拉列表框中选择“学生”,单击“登录”按钮,登录选课系统。
主要代码如下:
private void btnLogin_Click(object sender, System.EventArgs e){int type = Int32.Parse(ddlType.SelectedItem.Value);string user = txtUser.Text.Trim();string inputkey = txtKey.Text.Trim();string key = "";string sql = "";DataSet ds;switch( type ){case 1://学生//验证学生身份代码 break;case 2://教师//验证教师身份代码break;case 3://系统管理员//验证管理员身份代码break;default;break;}}
2.查看必修课程列表页面,如图5-2:
图5-2
登录成功后,进入学生主页,点击“必修课程”链接,得到所有必修课程的列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课程所占学分等。
在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;点教师姓名,如“李萍”链接,查看教师的详细信息;点击“查看上课时间地点”链接,查看对应课程的上课时间和地点。
在页面加载的时候从数据库读取所有必修课信息,代码如下:
string sql = “select Course.*,TName from Course,Teacher where CType like ‘必修’ and Course.TId like Teacher.TId”;//查询处所有必修课程信息
DataSet ds = Db.ExecuteSelectSql(sql);if ( ds != null && ds.Tables.Count > 0 ){dgCourse.DataSource = ds.Tables[0];dgCourse.DataBind();//将查询结果绑定到DataGrid中}
3.查看选修课程列表页面,如图5-3:
图5-3
单击“选修课程”链接,查看所有选修课程列表,在列表中给出了比必修课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应课程。
主要代码如下:
string sql = "select x.*,TName,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x,Teacher where x.CType like '选修' and x.TId like Teacher.TId";//查询该学生已选修的课程DataSet ds = Db.ExecuteSelectSql(sql);if ( ds != null && ds.Tables.Count > 0 ){dgCourse.DataSource = ds.Tables[0];dgCourse.DataBind();for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ ){sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString();DataSet ds1 = Db.ExecuteSelectSql(sql);if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 )dgCourse.Items[i].Cells[6].Text = ds1.Tables[0].Rows[0][0].ToString();}}bool locked= bool.Parse(Session["Locked"].ToString());if ( ! locked ){lbLock.Text = "您尚未锁定选课信息!";}else{lbLock.Text = "选课信息已被锁定!";dgCourse.Columns[9].Visible = false;}
4.查看已选课程页面,如图5-4:
图5-4
在上一步查看选修课程的列表中,选择“计算机密码学”、“计算机图形学”、“线性代数”三门课程后,点击“已选课程”链接查看已经选择的课程列表,在列表中除了可以看到与上一步中相同的信息外,还可以查看到课程成绩。刚才选择的三门课程的成绩均为0,当课程结束后,教师登录本系统给所有学生评分,学生再次浏览此页面可查看到课程的成绩,若成绩合格,学生可获得对应课程的学分。
锁定课程代码如下:
string sql = "select count(*) from SC where SId like '"+Session["Id"].ToString()+"'";DataSet ds = Db.ExecuteSelectSql(sql);int nCourse=0;if ( ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 ){nCourse = Int32.Parse(ds.Tables[0].Rows[0][0].ToString());}if ( nCourse < 2 ){Response.Write(MyUtility.Alert("您必须选择至少两门选修课程!"));return;}else{//先将所有必修课程加入到选课表中再锁定sql = "select CId from Course where CType = '必修'";DataSet ds2 = Db.ExecuteSelectSql(sql);if ( ds2 != null && ds2.Tables.Count > 0 ){for ( int i = 0; i < ds2.Tables[0].Rows.Count; i++ ){string cid = ds2.Tables[0].Rows[i][0].ToString();sql = "insert into SC(SId,CId,Score) values('"+Session["Id"].ToString()+"',"+cid+",0)";Db.ExecuteSql(sql);}}sql = "update Student set SLocked = 1 where SId like '"+Session["Id"].ToString()+"'";if ( Db.ExecuteSql(sql) == 1 ){lbLock.Text = "选课信息已被锁定!";Session["Locked"] = "true";Response.Redirect("Selectedcourse.aspx");}}
5.2 系统管理说明
系统管理员主要有三个功能需要实现:设置选课时间段、录入学生和教师信息、录入教学楼教室信息。
设置开始选课时间段:选课时间段存储在项目目录下的time.txt文件中。文件中第一行表示开始时间,第二行表示结束时间。如图5-5:
如图5-5
设置时间代码如下:
DateTime dtStart,dtEnd;try{dtStart = DateTime.Parse(txttimeStart.Text);dtEnd = DateTime.Parse(txtTimeEnd.Text);}catch{Response.Write(MyUtility.Alert("输入错误"));return;}StreamWriter sw = new StreamWriter("http://localhost/sc/login.aspx",false);sw.WriteLine(dtStart.ToString());//写入开始时间sw.WriteLine(dtEnd.ToString());//写入结束时间sw.Close();lbTime.Text = "选课时间
为:"+dtStart.ToString()+“到”+dtEnd.ToString(); //更新选课时间段显示
录入学生和教师信息:在AdminUser.Aspx中,用与录入学生和教师信息。如图5-6:
图5-6
添加教师代码如下:
private void btnAddTearcher_Click(object sender, System.EventArgs e){string sql = "insert into Teacher(TId,TKey,TName) values('"+txtTId.Text.Trim()+"','"+MyUtility.MD5(txtTId.Text.Trim())+"','"+txtTName.Text.Trim()+"')";try{if ( Db.ExecuteSql(sql) == 1 ){sql = "select * from Teacher";DataSet ds1 = Db.ExecuteSelectSql(sql);if ( ds1 != null && ds1.Tables.Count > 0 ){dgViewT.DataSource = ds1.Tables[0];dgViewT.DataBind();}}else{Response.Write( MyUtility.Alert("添加失败-_-,请检查编号是否已经存在!") );return;}}catch{Response.Write( MyUtility.Alert("添加失败-_-,请检查编号是否已经存在!") );return;}}
录入教学楼教室信息:在AdminRoom.Aspx中,教学楼和教室的管理主要包括添加和删除操作,添加一个教室必须指定其所属的教学楼。如图5-7:
图5-7
添加教学楼代码如下:
private void btnAddBuilding_Click(object sender, System.EventArgs e){if ( txtBuilding.Text.Trim() == "" ){Response.Write(MyUtility.Alert("请输入教学楼名称!"));return;}string sql = "insert into Building(BuildingName) values('"+txtBuilding.Text.Trim()+"')";Db.ExecuteSql(sql);}
5.2教师管理说明
教师用户的功能需求有个人信息的管理、开设课程、课程时间地点编辑、设置学生成绩。
教师个人信息:在Teacher.Aspx中,在这里可以修改密码和添写教师个人信息。如图5-10:
如图5-10
开设课程:在NewCourse.Aspx中,在这里可以添加新课程,其中包括课程名称、课程类型、 学分、前导课程、最大人数、课程介绍。如图5-11:
如图5-11
从数据库读取所有课程编号和课程名称代码如下:
ddlCPreCId.Items.Clear();ddlCPreCId.Items.Add("请选择");string sql = "select CId,CName from Course";DataSet ds = Db.ExecuteSelectSql(sql);if ( ds != null && ds.Tables.Count > 0 ){for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ )ddlCPreCId.Items.Add( new ListItem( ds.Tables[0].Rows[i]["CName"].ToString(), ds.Tables[0].Rows[i]["CId"].ToString() ) );}ddlCPreCId.SelectedIndex = 0;
课程时间地点编辑:在TeacherMain.Aspx中,在这里可以编辑课程时间和地点。如图5-12:
如图5-12
设置学生成绩:在SC.Aspx中,可以添写学生考试成绩。
从数据库中读取教师开设的课程代码如下:
string sql = "select x.*,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x where x.TId like '"+Session["Id"].ToString()+"'";DataSet ds = Db.ExecuteSelectSql(sql);if ( ds != null && ds.Tables.Count > 0 ){if ( ds.Tables[0].Rows.Count > 0 ){lbCount.Text = "您一共开设有 "+ds.Tables[0].Rows.Count.ToString()+" 门课程!";dgCourse.DataSource = ds.Tables[0];dgCourse.DataBind(); for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ ){if ( dgCourse.Items[i].Cells[3].Text == "必修" )dgCourse.Items[i].Cells[8].Text = "必修";else{sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString();DataSet ds1 = Db.ExecuteSelectSql(sql);if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 )dgCourse.Items[i].Cells[8].Text= ds1.Tables[0].Rows[0][0].ToString();}}}else{lbCount.Text = "您暂时还没有开设课程!";}}
第6章 总结
经过几个月的学习,研究和开发,我选择的课题学生选课系统基本完成。其功能基本符合网络上的用户要求,能够在线选课,在线添加课程,在线查询课程等。
省略
参考文献
[1]吴晨,《+SQL Server-数据库开发与实例》,清华大学出版社,出版7月
[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版10月
[3](美)solid,《SQLServer从入门与精通(应用技术基础)》,清华大学出版社,出版09月
[4](美)保罗《 2.0经典教程C#篇》人民邮电出版社,出版5月
致 谢
省略
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
C#毕业设计——基于C#++sqlserver的选课系统设计与实现(毕业论文+程序源码)——选课系统