基于C#+asp.net+sqlserver的学籍管理系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于C#+asp.net+sqlserver的学籍管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
- 教务平台之学籍管理模块是一个典型的教务信息管理系统(MIS),其开发主要包括后台数据库的建立和前端应用程序的开发两个方面。对于后台数据库要求实现数据的完整性、一致性和安全性;对于前台应用程序开发则要求模块功能完备、界面友好、易使用等特点。
- 教务平台之学籍管理模块是根据高校教务管理的实际需求,采用微软的.NET Framework作为开发平台,使用SQL Server 来设计数据库,以ASP.NET和C#作为前台的开发语言,来完成学生学籍的管理。该设计是基于B/S模式的信息管理系统,主要实现用户管理、学生注册、学籍异动,学生花名册查看和打印等主要功能。同时为了保证后台代码和数据的保护性、密封性,使用了一个中间层分离开前台页面和后台数据的交互操作,使该系统层次清晰,便于开发,维护。通过该系统的应用,可以满足高校教务学籍管理工作的高效化、无纸化和网络化的需求,提高高校教务的工作质量与效率。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9518个字26页
包含内容:整套源码+完整毕业论文
3、关键词:
教务信息管理;B/S;ASP.NET;NET Framework4、毕设简介
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
1 引言
学籍管理系统是一个教育单位信息化管理中不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生学籍管理系统应该能够为用户(即学生和管理者)提供充足的信息和快捷的查询手段。
省略
1.1 课题背景
省略
1.2 国内外现状
省略
1.3 目的和意义
省略
2 实现环境和关键技术
2.1 系统架构选择
2.1.1 B/S架构
B/S(Browser/Server)架构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。特别是局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。但是B/S应用服务器运行数据负荷较重,而且在网络传输环境中,可能导致数据不安全。
2.1.2 C/S架构
C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。采用C/S结构可以减轻服务器运行数据负荷,数据的储存管理也较为透明。而它的缺点也是不少,它会造成高昂的维护成本,且投资大,维护不方便。
通过上边对两种结构的简单介绍可以发现,本系统如果采用B/S最为合适。
2.2 系统实现环境与技术
“.NET代表一个集合,一个环境,一个可以作为平台支持下一代Internet的可编程结构。”即.NET=新平台+标准协议+统一开发工具。.NET Framework(框架结构)是.NET平台的基础,它是建设,开发以及运行WEB应用程序和WEB服务的环境,它包含了公共语言运行库(CLR)和.NET Framework类库—就像ADO.NET,ASP.NET和窗体 ——提供了标准的高级服务,能够使各样的计算机系统成为一体。同时.NET Framework提供了特色丰富的应用环境,精简的开发和简单的集成一些不同的开发语言,它所能直接支持的语言有C++, C#, Visual Basic, 和 JScript .NET和J#。
在这样的环境下,教务平台—学籍管理模块在.Net Framework 下实现,采用SQL Server 作为数据提供者。系统开发中使用的集成开发环境是和.Net Framework 配套的Visual Studio ,使用的语言是C#。
2.2.1 Visual Studio 介绍
Visual Studio 是一系列高效的、智能的开发工具的统称,它拥有一个庞大的产品线,包括面向学生、爱好者、初学者的Express版,面向专家、Visual Basic 6的Standard版,面向顾问、企业开发人员的Professional版和面向架构师的Team System版本。在这些版本中,有些集成了开发软件常用到的东西,比如重构、单元测试、类设计器等等,以方便开发人员快速的设计各类软件。
2.2.2 SQL Server 介绍
SQL Server 是一个全面的数据库平台,使用集成的商业智能工具提供了企业级的数据管理。SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 数据引擎是企业数据管理解决方案的核心。此外 SQL Server 结合了分析、报表、集成和通知功能。
2.2.3 IIS介绍
Microsoft IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是Internet信息服务(Internet Information Server)的缩写。它是一种Web服务,主要包括WWW服务器、FTP服务器等。它使得在Intranet(局域网)或Internet(因特网)上发布信息成了一件很容易的事。
2.2.4 ASP.NET介绍
ASP.NET 不仅仅是 Active Server Page (ASP) 的下一个版本,它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。它是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言创作应用程序,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。当创建 ASP.NET 应用程序时,开发人员可以使用 Web 窗体或 XML Web services,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义。
3 需求分析和数据库设计
3.1 功能需求
系统功能分析是在系统开发的总体任务的基础上完成的。根据具体的需求,整个高校教务管理平台由系统管理、教学计划、计划和课表,以及选课与成绩四个模块组成。
图1 系统结构图
学籍管理是整个高校教务管理平台的一部分,该模块要求实现学生注册,学籍异动,学生花名册查看主要功能。该模块总体分为三种权限的用户。
<1>系统管理员管理具体描述如下:
(1)系统管理员登陆
(2)对整个学籍管理模块信息可以修改,查看。
<2>班主任用户具体描述如下:
(1)班主任登录
(2)进入管辖班级,对自己班级学生进行注册,包括:学生的基本信息、单个学生注册、以及一个班级批量注册。查看班级注册人与未注册人名单。
<3>教务处用户具体描述如下:
(1) 教务处用户登陆
(2) 进入学籍异动界面,根据学生所在的班级ID、学生学号、选择学生学籍的类型,填写学生学籍异动的原因,查看学籍异动清单。
3.2 非系统功能需求
省略
3.3 数据库设计和说明
3.3.1 数据库逻辑设计和说明
高校教务平台系统分为各个模块,但是所使用的数据都来源高校教务管理平台系统。该模块用到学生、注册信息、班级、修学等这些实体,它们之间存在着一定的关系,因此,在数据库设计时确保实体的完整性和数据的一致性是非常重要的。下面为学籍管理模块中实体的关系图。
图2 E-R模型图
3.3.2 学生注册信息管理
学生注册信息管理负责学生注册信息,提供学生注册的基本信息,用户可通过它实现按照表中内容,实现对学生注册信息注册,查看。
表1 学生注册信息和数据列表
3.3.3 表学生信息管理
学生信息管理为学籍管理提供学生的基本信息。用户可通过它实现按照班级,添加、删除、修改学生的基本信息;可以实现对学生基本信息的查看和管理。
表2 学生基本信息和数据列表
3.3.4 学籍异动管理
作为一个高校单位,学生的规模是很庞大的,当然就存在学生学籍的调动情况,学籍异动管理是学籍管理模块的重点,分为学生休学、退学、转学以及复学,根据学生情况做相应的学籍异动的处理。备注(先判断学生是否在校,填写学籍异动的原因,选择学籍异动的类别,提交学籍异动信息)。
3.3.5 查看、打印学生花名册
查看/打印学生花名册可以根据班级的可配置来显和打印班级学生的名单和学生信息。
表6班级信息和数据列表
4 系统功能设计和实现
4.1 总模块设计
该模块是主管学籍工作人员的工作界面,可以对全校学生的信息进行录入、维护和查询;对学生的异动信息进行录入、维护和查询;还可提供学生异动情况查询,以及查看和打印学生相关信息的主要功能。用户登陆系统以后,根据相关的权限进行相关的操作。
图3 功能模块示意图
4.2 具体模块设计与开发
4.2.1 用户角色
用户权限在高校管理平台中是一个公共的模块,学籍管理模块根据实际需求需要,设定了系统管理员、教务处用户、班主任三个用户角色。系统管理员可以修改,查看该系统所有信息。班主任只能对自己所管辖的班级信息进行修改和查看。教务处用户在该模块主要是对学生学籍异动情况进行处理。
角色分配是通过系统管理模块实现的,根据模块需求,为每个用户增加了具体权限,然后通过登陆界面来实现。图4为系统管理员(admin)登陆界面,图5系统管理员进入主页面后的界面。他拥有对整个教务系统的管理权限。
登陆界面实现代码:
protected void btnLogin_Click(object sender, ImageClickEventArgs e)
{ //获取输入的用户名和密码;
string userName = NJJ.Common.PageValidate.InputText(txtUsername.Value.Trim(), 30);
string Password = NJJ.Common.PageValidate.InputText(txtPass.Value.Trim(), 30);
AccountsPrincipal newUser = AccountsPrincipal.ValidateLogin(userName, Password);
if (newUser == null) //登陆信息判断与验证;
{
this.lblMsg.Text = "登陆失败: " + userName;
}
else
{
User currentUser = new NJJ.Accounts.Bus.User(newUser);
Context.User = newUser;
if (((SiteIdentity)User.Identity).TestPassword(Password) == 0)
{
this.lblMsg.Text = "你的密码无效!";
}
else
{
FormsAuthentication.SetAuthCookie(userName, false);
NJJ.TreeAndLog.TreeAndLogManage log = new NJJ.TreeAndLog.TreeAndLogManage(); //系统日志管理,增加日志信息
log.AddLog(DateTime.Now.ToString(), "用户登陆", User.Identity.Name, "1",Request.UserHostAddress);
Session["UserInfo"] = currentUser;
Session["Style"] = currentUser.Style;
if (Session["returnPage"] != null)
{
string returnpage = Session["returnPage"].ToString();
Session["returnPage"] = null;
Response.Redirect(returnpage);
}
else
{
Response.Redirect("main.htm"); //进入系统的主界面
}
}
}
}
4.2.2 学生注册
学生注册功能实现流程图见图6
图6 学生注册流程
班主任身份登陆系统,点击进入自己所管辖的班级学生名单,根据年级或者班级进行注册,可以单独或者一个班级批量提交学生注册名单,然后查看每一个班级注册和未注册的学生名单。最终生成注册名单交教务处,教务处备案。
4.2.3 学籍异动
作为一个高校单位,学生的规模是很庞大的,当然就存在学生的调动情况。本功能实现了学生的休学、退学、转学和复学。查看学生异动的清单。用户选择教务处用户登陆,进入学生学籍异动界面,根据学生的学号和所在班级来处 理学生休学、退学、转学、复学等情况。学籍异动流程见上页图7
图7 学籍异动流程
教务处用户(zz)通过用户登陆进入学籍管理系统,可以进入学生学籍异动,见图11。此时学生注册页面的信息是不可的。
在学籍异动页面上,我们需要输入学籍异动的类型,即有休学、退学、转学和复学。输入学生的学号、学生所在的班级、学生异动的原因。对输入的学生学号、学生所在的班级、原因,我们对它做了检查。学号必须是10位。班级必须按照真确的格式进行录入。原因只能在给定的字符以内。如果以上其中任意一个检查出错,则提示出错,学籍异动不成功。
图10 学籍异动页面
如果录入数据格式正确,我们就会调用服务器上的方法,进行对数据库插入。数据如果插入正确,会提示操作成功的信息,如果出错,则报相应的错误信息给用户。
学籍异动的代码实现:
//学籍异动
public static string TransferStu(string StuID, string ClassID, string type, string Reason) //学籍异动函数;
{
string ShowMSG="";
string sql = string.Empty;
DataSet ds = new DataSet();
try
{
Database db = DatabaseFactory.CreateDatabase();
ds = db.ExecuteDataSet(CommandType.Text, string.Format(" select StuNO,ClassID from student where StuNo='{0}' and ClassID='{1}'", StuID, ClassID));
if (ds.Tables[0].Rows.Count > 0)
{
if (type == "1") //休学情况代码;
{
try
{
sql = "INSERT INTO [Xiuxue]([StuNo], [InOrOut], [Reason], [Classid],[time])VALUES('" + StuID.Trim() + "','0','" + Reason.Trim() + "','" + ClassID.Trim() + "',getdate())";
sql = sql + "UPDATE [Student] SET [State]= '休学' WHERE StuNo = '" + StuID.Trim() + "'"; //插入和修改数据库语句;
//Database db = DatabaseFactory.CreateDatabase();
db.ExecuteNonQuery(CommandType.Text, sql); //处理那些修改数据但不返回行的 SQL 语句
ShowMSG = "学号为" + StuID + "的同学休学了";
}
catch (Exception ex)
{
ShowMSG = "学号为" + StuID + "的同学休学失败了";
throw ex;
}
}
if (type == "2") //复学情况代码;
{
try
{
sql = "INSERT INTO [Xiuxue]([StuNo], [InOrOut], [Reason], [Classid],[time])VALUES('" + StuID.Trim() + "','1','" + Reason.Trim() + "','" + ClassID.Trim() + "',getdate())";
sql = sql + "UPDATE [Student] SET [State]= '复学' WHERE StuNo = '" + StuID.Trim() + "'";
//Database db = DatabaseFactory.CreateDatabase();
db.ExecuteNonQuery(CommandType.Text, sql);
ShowMSG = "学号为" + StuID + "的同学复学了";
}
catch (Exception ex)
{
ShowMSG = "学号为" + StuID + "的同学复学失败了";
throw ex;
}
catch (Exception ex)
{
ShowMSG = "数据库连接异常";
throw ex;
}
}
return ShowMSG;
}
当学籍异动成功后,进入到查看所有学生异动清单的页面,查看异动信息,该页面就是从数据库读取数据,然后按照一定的页面格式,显示给用户。下边代码是学籍异动清单代码实现。
图11 学生学籍异动清单
/// ///学籍异动
public static DataSet MoveList()// 学籍异动清单函数;
{
string sql = string.Empty;
DataSet ds = new DataSet();
try
{ //查询学籍异信息;
Database db = DatabaseFactory.CreateDatabase();
sql = "Select A.*,B.Name from (select A.*,B.IDCardNo,B.Sex from ";
sql = sql + " (SELECT [StuNo], '退学' as state,[Reason], [Classid], [Time] as 'time' FROM [ExitSchool] UNION ";
sql = sql + " select [StuNo], state=Case InOrOut When 0 then '转出'When 1 then '转入'end,[Reason], [Classid], [Transfertime] as 'time' ";
sql = sql + " from TransferStu UNION ";
sql = sql + " Select StuNo,state=Case InOrOut When 0 then '休学'When 1 then '复学'end,Reason,Classid,time from xiuxue)A inner join ";
sql = sql + " (Select IDCardNo,stuno,Sex from Student)B on A.stuno = B.stuno)A inner join ";
sql = sql + " (Select ID,Name from Class)B on A.ClassID = B.ID ";
ds = db.ExecuteDataSet(CommandType.Text, string.Format(sql));
}
catch (Exception ex)
{
throw ex;
}
return ds;
}
4.2.4 学生花名册查看
根据用户自行选择需要关心的学生字段,查询出所有的班级,根据班级里查询出所有的学生相应的内容。
图12 功能实现说明
本功能实现,用了三个页面去处理相应的内容。首先进入学生花名册查看页面,在这里选择班级,然后选择显示配置,选中要显示的学生字段,保存字段,读取信息以及打印页面。
图13 学生花名册查看
学生花名册查看部分代码实现:
public class Test
{
/// <summary>
/// 根据表名获取该表内所有字段名
/// </summary>
/// <param name="TableName">需要获取字段的表名</param>
/// <returns></returns>
public static DataSet GetAllField(string TableName)
{
string sql = "select * from syscolumns where id=(select id from sysobjects where name='" + TableName + "')";
Database db = DatabaseFactory.CreateDatabase();
DataSet ds = null;
ds = db.ExecuteDataSet(CommandType.Text, sql);
return (ds);
}
/// <summary>
/// 根据班级id获取班上所有学生列表
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns></returns>
public static DataSet GetStuListByClassId(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
return (db.ExecuteDataSet(CommandType.Text, sql));
}
/// <summary>
/// 根据教师id读取该教师所代班级信息
/// </summary>
/// <param name="TeacherId">教师id</param>
/// <returns></returns>
public static DataSet GetAllClassByTeacherId(string TeacherId)
{
string sql = "select * from Class where HeadTeacherID='" + TeacherId + "'";
Database db = DatabaseFactory.CreateDatabase();
return (db.ExecuteDataSet(CommandType.Text, sql));
}
5 测试
省略
5.1 功能需求单元测试
单元测试的对象是软件设计的最小单位——模块。因此,我实现的有三个主要的功能模块,相应的,也分成三个相应的测试模块。对每个模块,我严格按照需求说明书进行。
5.1.1 学生注册
在画面输入的地方,是否与需求说明书中要求相符。进行正确的数据的插入,检查数据库中的表,是否有变化。检查异常情况,是否会正确的抛出所需的异常。
5.1.2 学籍异动
检测学号,班级,原因这些画面输入的地方,是否与需求说明书中要求相符。进行正确的数据的插入,检查数据库中的表,是否有变化。检查异常情况,是否会正确的抛出所需的异常。
根据学生的学号和班级来判断该学生是不是存在,出现异常,抛出异常现象,如上图所示。
5.1.3 学生花名册查看
用极限测试方法,对所有可能的学生字段组合,进行遍历。检查异常情况,是否会正确的抛出所需的异常。
根据测试表明,可以选择学生信息字段来查看班级学生的相关信息。例如选择StuNo和IDCardNo,在页面上只显示相应的学号和身份证ID。
5.2 结合测试
结合测试是测试画面的各个机能的联动能力。从一个页面跳转到另外一个页面,是否正确跳转。需要传递的数据是否正确的传输。数据库中的数据内容,在各个地方的使用和显示都是正确的。
图22 学生注册信息
图23 取消注册信息
图22为班级已经注册学生的名单,但是在学生注册之后,有的学生在中途转校,这时需要取消学生的注册信息,见图23。图24为取消转学学生后的注册学生名单。
图24 转出学生后的注册名单
5.3 测试结果
经过相关的单元测试,和结合测试,以及一些边界值黑合测试,系统页面能够正常的跳转,数据能够正常流动,系统中原来发现的BUG,已经完善。
结 论
本系统设计实现了学籍管理模块的基本功能,达到了预期设计的效果。设计上采用至上向下,逐步求精的设计方式,设计过程中完成学生注册、学籍异动、查看和打印花名册等功能,功能上没有遗失。技术上采用了ASP.NET(C#)实现编码,数据库设计使用SQL2005来实现整个模块功能。
省略
参考文献
[1] 徐新华.精通ASP.NET 2.0[M].北京:机械工业出版社,2006。
[2] 石志国.ASP.NET程序设计实用教程[M].北京:电子工业出版社,2006。
[3] 东方人华.ASP.NET数据库开发入门与提高[M].北京:清化大学出版社,2004
[4] Jesse Liberty.C#程序设计[M].北京:中国电力出版社,2002。
[5] 樊建.ASP.NET+ADO.NET 项目开发实例[M].北京:清华大学出版社,2004。
[6] 方睿.网络数据库原理及应用[M].成都:四川大学出版社,2005。
[7] James W.Cooper.C# Design Patterns[M].北京:电子工业出版社,2004。
致 谢
省略
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于C#+asp.net+sqlserver的学籍管理系统设计与实现(源码+文档)asp.net_BS架构_学籍管理系统.zip |