资源描述
湖 北 轻 工 职 业 技 术 学 院 毕 业 论 文
湖北轻工职业技术学院
毕业设计(论文)
《学生信息管理系统》
学生姓名: 谈 彬
系 部: 信息工程系
专 业: 计算机信息管理
指导老师: 戴 远 泉
日 期: 二零一零年五月二十三日
摘要
随着信息技术在管理上越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率的把内部活动有机的组织起来,就必须建立与自身特点相适应的信息管理系统。
本文介绍了一种适合院校单位对院校内的专业、班级、学生、课程、成绩等一系列管理的有效解决方案,在Microsoft的可视化开发环境Visual Studio 2008下开发完成,并对该方案进行了详细的介绍,了解其相关的设计、结构、组成等。
关键词:
信息管理系统 解决方案 Visual Studio 2008
Abstract
With more and more information technology in management and extensive application of information management system implementation, technology has gradually matured. Information management system is an evolving new discipline, any one unit to survive and to develop higher efficiency of the internal activities up organic organization, established with its own characteristics on the Bi Xu Xiang meet the information management system.
This article describes a unit for the institutions of professional institutions, classes, students, curriculum, performance management and a series of effective solutions, in the Microsoft visual development environment developed under Visual Studio 2008 to complete, and the program a detailed introduction to the understanding of their related design, structure and composition.
Keywords:
Information management system solutions Visual Studio 2008
目录
摘要 2
Abstract 3
目录 4
引言 5
第一章 概述 6
1.1 系统概述 6
1.2 系统开发基本目标 6
1.3系统开发设计思想 6
第二章 开发环境 7
2.1 相关技术与开发工具概述 7
2.2 开发语言 7
2.3 开发工具 7
2.4 开发重点技术 8
第三章 系统设计 8
3.1 系统功能功能模块划分 8
3.1.1 系统功能描述 8
3.1.2 系统功能模块图 10
3.2 数据库设计 12
3.2.1 数据库需求分析 12
3.2.2 数据库概念结构设计 12
3.2.3 数据库逻辑结构设计 15
3.2.4数据表之间的依赖关系 17
第四章 系统具体实现 18
4.1 系统模块功能说明 18
4.1.1 登陆窗口模块 18
4.1.2 系统主窗口模块 20
4.1.3 系统管理模块 22
4.1.4 专业信息管理模块 24
4.1.5 班级信息管理模块 28
4.1.6 学生信息管理模块 36
4.1.7 课程信息管理模块 49
4.1.8 成绩信息管理模块 54
4.1.9 年份信息管理模块 58
4.2 系统工作流程(时序图) 61
第五章 系统测试 62
结束语 63
致谢 64
主要参考文献 65
附录(附图) 66
引言
随着院校规模的不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范管理和快速查询、修改、增加、删除等,从而减少管理方面的工作量。
本系统主要用于院校的学生信息管理工作,总体任务是实现学生信息的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到了学生的课程以及成绩的维护与管理,并针对这些需求设计了这套学生信息管理系统。
第一章 概述
1.1 系统概述
学生信息的管理是目前院校学生管理职能部门的一个重要环节,并且该环节的顺利实施有助于推动学校的信息化建设。目前,院校的学生信息管理工作已经不再局限于对学生基本信息数据的维护,而是越来越多地参与到与其他部门相互协调的互动工作中。本系统提供了一套学生综合信息管理平台,能够使管理人员对院校的专业进行分类管理,进而确定各个专业中所包含的班级信息,从而在已有班级信息的基础上对学生信息进行集中管理。
1.2 系统开发基本目标
现今学生信息的繁琐给具有强烈时间观念的教研人员带来了诸多不便,教学办公室应至少具有一种完善的学生信息管理系统。
本系统的开发是出于教学管理人员对于学生的各种信息的管理更加方便,减轻管理人员的工作负担。通过本系统平台,能够帮助教研人员利用计算机,快速方便的对学生信息进行管理、输入、输出、查找等所需操作,使散乱的学生信息能够具体化、直观化、合理化。
1.3系统开发设计思想
1. 尽量采用学校现有和软件硬件环境及先进的管理系统开发方案,从而达到充分利用学校现有的资源,提高系统开发水平和应用效果的目的。
2. 系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充,维护。
3. 系统应具备数据库维护功能,及时根据用户需求进行数据的添加,删除,修改等
4. 系统应符合学校对学生的管理流程满足学校对学生的管理需要,并达到操作过程式中的直观,方便,实用,安全等要求。
第二章 开发环境
2.1 相关技术与开发工具概述
本系统采用面向对象的软件开发语言C#,以Microsoft的可视化开发环境Visual Studio作为主要开发工具,使用Microsoft SQL Server 2005作为关系数据库,并使用强大的ADO.NET进行数据库的连接以及操作,很好的实现了预定的所需功能。
本系统采用了目前主流的三大模式之一的C/S模式,代码编写使用了简单的三层架构,为程序实现了更好的“高内聚,低耦合”的思想。
2.2 开发语言
C#语言是Microsoft .NET框架重点推出的开发语言,其具备C++语言的安全性能和VB语言的快速开发特点,简单的说,C#其实就是一种基于Microsoft .NET平台上的一种编程开发语言,同时它也是目前最流行的开发语言之一。
2.3 开发工具
Microsoft Visual Studio 2008
Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
Microsoft SQL Server 2005
SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序SQL Server 2005 特性概况。
SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。
2.4 开发重点技术
三层架构
通常意义上的三层架构(3-tier application)就是将整个业务应用划分为表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的就是为了“高内聚、低耦合”的思想。
l 表现层:通俗的讲,就是展现给用户的界面,即用户在使用一个系统时他的所见所得。
l 业务逻辑层:针对具体问题的操作,也可以说是对数据层的操作,对数据业务的逻辑处理。
l 数据访问层:该层所做事务直接操作数据库,针对数据的增、删、改、查。
在本解决方案中,采用简单三层架构设计,其中,表现层命名为StudentInfoManage,作为一个独立的项目,用户用户操作;业务逻辑层命名为StudentInfoManage.BLL,作为一个单独的类库,包含所有系统需要处理业务的类的集合;数据访问层命名为StudentInfoManage.DAL,也是一个类库项目,主要用于操作数据库,针对数据库的增、删、改、查等操作。
除此之外,还有StudentInfoManage.Model这个项目,是解决方案的数据模型层,也称为实体类,是对各个实体的抽象,包含各个实体的属性已经设置和获取的方法。
第三章 系统设计
3.1 系统功能功能模块划分
3.1.1 系统功能描述
本系统的主要功能是实现对院校内的专业、班级、学生、成绩、课程进行相关的管理操作,其主要功能包括:
1. 系统管理
添加用户:增加可以登录该系统进行信息管理及操作的用户信息。
添加角色:增加一种登录角色类型,并可以赋予相应的对本系统的权限管理。
2. 专业信息管理
添加专业信息:院校内如果增开新的专业,可以很方便的在本系统内添加。
浏览专业信息:浏览院校内目前所有的专业信息,以便于查找及其他相关操作。
修改专业信息:修改专业的相关信息,删除前应确定该专业下没有相关的班级信息。
删除专业信息:一键快速删除不需要的专业信息。
3. 班级信息管理
添加班级信息:院校内如果增开新的班级,可以很方便的在本系统内添加。
浏览班级信息:浏览院校内目前所有的班级信息,以便于查找及其他相关操作。
修改班级信息:修改班级的相关信息,删除前应确定该班级下没有相关的学生信息。
删除班级信息:一键快速删除不需要的班级信息。
4. 学生信息管理
添加学生信息:院校内如果有新进的学生,可以很方便的在本系统内添加。
浏览学生信息:浏览院校内目前所有的学生信息,以便于查找及其他相关操作,并可以更具相关条件筛选出更具体的学生信息。
修改学生信息:修改学生的相关信息,基本可满足一些必要的学生调动及修改信息的需求。
删除学生信息:一键快速删除不需要的学生信息。
5. 课程信息管理
添加课程信息:院校内如果增开新的学生,可以很方便的在本系统内添加。
浏览课程信息:以树形图的方式更清晰的显示课程的分类,更容易辨别与管理。
修改课程信息:修改课程的相关信息。
删除课程信息:一键快速删除不需要的课程信息。
6. 成绩信息管理
录入成绩信息:详细的筛选出学生的分类和课程的分类,单独为每一位学生和课程路成绩
浏览成绩信息:详细的筛选出学生的分类和课程的分类,方便阅览学生的成绩信息。
修改成绩信息:修改成绩的相关信息。
删除成绩信息:一键快速删除不需要的成绩信息。
查询成绩信息:根据学号和年份信息找到该学生的课程成绩信息,并自动计算出总分,平均分等。
3.1.2 系统功能模块图
根据本系统的模块划分及操作流程,分别从系统管理、专业信息管理、班级信息管理、学生信息管理、课程信息管理和成绩信息管理等主要的功能进行描述。
登陆窗口
主窗口
系统管理
专业管理
班级管理
学生管理
课程管理
成绩管理
系统管理
添加用户
添加角色
专业信息管理
添加专业
专业浏览
修改专业信息
删除专业信息
班级信息管理
添加班级
班级浏览
修改班级信息
删除班级信息
学生信息管理
添加学生
学生浏览
修改学生信息
删除学生信息
课程信息管理
添加课程
课程浏览
修改课程信息
删除课程信息
成绩信息管理
添加成绩信息
浏览学生成绩
学生成绩查询
修改学生成绩
删除学生成绩
3.2 数据库设计
3.2.1 数据库需求分析
由于在本系统中需要存储大量信息,包括学生信息、班级信息等,如果不能合理有效的组织数据表的结构,以及合理设置每张表所包含的字段,那么在后期进行数据的整理及汇总时,就会增加程序的开发难度以及功能实现的复杂度,并造成效率的下降。根据收集来的信息,归纳出以下信息:
l 一个专业包含多个班级
l 一个班级对应一个入学年份及年制
l 一个班级可以包含多名学生
l 一个学生拥有唯一的学号
l 一个班级对应连续的两个学期
l 一个班级在一个学期可以开设多门课程
l 每一门课程需要记录每一名学生的成绩
l 一种角色对应多个用户
3.2.2 数据库概念结构设计
根据数据库需求分析得出的结果,可以确定并概括出程序中所包含的实体及实体间的关系,为后续的数据库逻辑结构设计提供指导。下面通过直观的E-R图实体关系图对实体进行描述。
专业信息()
专业编号
专业名称
专业描述
班级信息
入学年份
班级名称
专业信息
教室编号
学制
班主任
……
学生信息
姓名
学号
性别
家庭住址
政治面貌
民族
……
专业信息实体
班级信息实体
学生信息实体
课程信息实体
课程信息
课程名称
班级编号
学期
成绩信息实体
成绩信息
课程名称
成绩
学号
学期
用户信息实体
用户信息
用户名称
登陆密码
角色
3.2.3 数据库逻辑结构设计
数据库逻辑结构的设计主要是用于为最终确定出的数据库中所需的各种信息表以及每一张表中所包含的字段,数据库中所包含的各项信息表名称及描述如下:
(注:程序编写过程中可能因为种种原因会对数据库进行一些细微修缮,如发现实际数据表与下表数据不符,请参考数据库实际结构)
学生信息管理系统数据库结构
表名称
表信息表述
ClassInfo
班级信息表
CourseInfo
课程信息表
Roles
角色信息表
ScoreInfo
成绩信息表
SpecialtyInfo
专业信息表
StudentInfo
学生信息表
UserInfo
登陆用户信息表
班级信息表ClassInfo
描述
字段
类型
班级编号(主键)
ClassID
int自动编号
班级名称
ClassName
varchar
专业名称
SpecialityName
varchar
教室编号
ClassNum
int
学制
SchoolReform
int
班主任
HeadTeacher
narchar
入校时间
EnrolmentTime
datatime
备注
classRemark
varchar
课程信息表CourseInfo
描述
字段
类型
课程编号(主键)
CourseID
int 自动编号
班级编号
ClassID
int
课程名称
CourseName
varchar
学期
Semester
varchar
成绩信息表ScoreInfo
描述
字段
类型
成绩编号(主键)
ScoreID
int 自动编号
学期
Semester
varchar
学生学号
StudentNumber
varchar
课程名称
CourseName
varchar
分数
Score
float
专业信息表SpecialtyInfo
描述
字段
类型
专业编号
SpecialityID
int 自动编号
专业名称(主键)
SpecialityName
varchar
备注
SpecialityRemark
varchar
学生信息表StudentInfo
描述
字段
类型
学生编号
StuID
int 自动编号
学号(主键)
StuNumber
varchar
姓名
StuName
varchar
性别
StuSex
char
民族
StuRace
varchar
家庭住址
StuAddress
varchar
联系电话
StuPhone
varchar
政治面貌
StuRole
varchar
邮政编码
StuPostalCode
nchar
班级编号
StuClassID
int
备注
StuRemark
text
照片
StuPicture
varchar
登陆用户信息表UserInfo
描述
字段
类型
用户编号
UserID
int 自动编号
用户名称(主键)
UserName
varchar
用户密码
UserPwd
varchar
用户角色
UserRole
varchar
角色信息表Roles
描述
字段
类型
角色编号
RoleID
int 自动编号
角色名称(主键)
RoleName
varchar
系统管理
SystemManage
bit
专业管理
SpecilManage
bit
班级管理
ClassManage
bit
课程管理
CourseManage
bit
成绩管理
ScoreManage
bit
学生管理
StudentManage
bit
年份信息表Time
描述
字段
类型
年份
Time
int
3.2.4数据表之间的依赖关系
一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间存在一定的依赖关系,称为关系。
表之间的依赖关系分析如下:
l 班级信息表中的专业信息来源于专业信息表。
l 学生信息表中的班级信息来源于班级信息表。
l 课程信息表中的班级来源班级信息表。
l 学生成绩表中的学号来源于学生信息表。
l 用户信息表中的角色来源于角色信息表。
数据库关系图如下:
第四章 系统具体实现
4.1 系统模块功能说明
4.1.1 登陆窗口模块
模块设计:登陆系统模块是整个信息系统的起始模块,首先确定你是否能权使用该系统,即身份认证,当身份的验证为正确时,可以登录系统,并保存你的登陆信息传递到主窗口,实现实时显示登陆用户的基本信息和根据传递过来的登陆类型信息,在主窗口进行权限的验证,分配用户可以操作哪些功能。
运行效果图:
关键代码:
//点击登陆
private void lslLogin_Click(object sender, EventArgs e)
{
if (loginValidation())
{
UserInfo userInfo = new UserInfo();
userInfo.UserName = txtLoginName.Text.Trim();
userInfo.UserPwd = txtLoginPwd.Text.Trim();
userInfo.UserRole = cboLoginType.Text.Trim();
if (userManage.ValidateLoginName(userInfo) == false)
{
MessageBox.Show("对不起,您输入的用户名不存在,请重新输入!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtLoginName.SelectAll();
}
else if (userManage.ValidateLoginPwd(userInfo) == false)
{
MessageBox.Show("对不起,您输入的用户密码错误,请重新输入!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtLoginPwd.SelectAll();
}
else
{
if (userManage.ValidateLoginType(userInfo) == false)
{
MessageBox.Show("您选择的登陆类型有误!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
cboLoginType.Focus();
}
else
{
MainForm mainForm = new MainForm(userInfo);
mainForm.Show();
this.Hide();
}
}
}
}
/// <summary>
/// 验证登陆用户名
/// </summary>
/// <param name="user">用户的对象</param>
/// <returns>int</returns>
public int ValidateLoginName(UserInfo user)
{
string sql = string.Format("select count(*) from UserInfo where UserName='{0}'", user.UserName);
return int.Parse(DBHelper.GetExecuteScalar(sql).ToString());
}
/// <summary>
/// 验证登陆密码
/// </summary>
/// <param name="user">用户的对象</param>
/// <returns>int</returns>
public int ValidateLoginPwd(UserInfo user)
{
string sql = string.Format("select count(*) from UserInfo where UserPwd='{0}'", user.UserPwd);
return int.Parse(DBHelper.GetExecuteScalar(sql).ToString());
}
/// <summary>
/// 验证登陆类型
/// </summary>
/// <param name="user">用户的对象</param>
/// <returns>int</returns>
public int ValidateLoginType(UserInfo user)
{
string sql = string.Format("select count(*) from UserInfo where UserRole='{0}' and UserName='{1}' and UserPwd='{2}'", user.UserRole,user.UserName,user.UserPwd);
return int.Parse(DBHelper.GetExecuteScalar(sql).ToString());
}
4.1.2 系统主窗口模块
模块设计:主窗口功能相对简单,只有一些打开其他功能模块窗口的事件,比较重要的就是这里会做权限的判断。
系统的主窗口中,可以根据进行用户身份所有的权限进行各种功能的操作,在主窗口中陈列出信息系统的所有主功能模块:系统管理、专业信息管理、班级信息管理、学生信息管理、课程信息管理、成绩信息管理、年份管理等。
根据权限分配,系统管理必须只能由最高一级的系统管理员才可以操作。其他的功能模块可以根据管理人员的分配来选择,并且由管理员来进行分配权限以及用户账号。
运行效果图:
关键代码:
//权限判断
private void Permissions()
{
DataSet ds = new RoleManage().SearchRole(user.UserRole);
if (ds.Tables[0].Rows[0]["SystemManage"].ToString() == "False")
{
tsmiSystemManage.Enabled = false;
}
else if (ds.Tables[0].Rows[0]["SpecilManage"].ToString() == "False")
{
tsmiSpecialityManage.Enabled = false;
}
else if (ds.Tables[0].Rows[0]["ClassManage"].ToString() == "False")
{
tsmiClassManage.Enabled = false;
}
else if (ds.Tables[0].Rows[0]["CourseManage"].ToString() == "False")
{
tsmiCourseManage.Enabled = false;
}
else if (ds.Tables[0].Rows[0]["ScoreManage"].ToString() == "False")
{
tsmiScoreManage.Enabled = false;
}
else if (ds.Tables[0].Rows[0]["StudentManage"].ToString() == "False")
{
tsmiStudentManage.Enabled = false;
}
}
4.1.3 系统管理模块
模块设计:添加用户角色的作业是将不同权限的用户进行分组,其中包括添加用户角色和添加登陆用户两个界面。
添加用户角色的作用是将不同权限的用户进行分组,这样不同的用户使用不同的功能,对系统的控制有个总体上的控制。
在添加登陆用户功能中,添加用户时需要指定用户所属的角色。
运行效果图:
关键代码:
/// <summary>
/// 添加用户信息
/// </summary>
/// <param name="user">用户的对象</param>
/// <returns>int</returns>
public int AddUserInfo(UserInfo user)
{
try
{
string sql = string.Format("insert into UserInfo values('{0}','{1}','{2}')", user.UserName, user.UserPwd, user.UserRole);
return int.Parse(DBHelper.GetExecuteNonQuery(sql).ToString());
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 添加角色信息
/// </summary>
/// <param name="role">角色信息的对象</param>
/// <returns>int</returns>
public int InsertRoleInfo(Roles role)
{
try
{
string sql = string.Format("insert into Roles values('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", role.RoleName, role.SystemManage, role.SpecilManage, role.ClassManage, role.CourseManage, role.ScoreManage, role.StudentManage);
return int.Parse(DBHelper.GetExecuteNonQuery(sql).ToString());
}
catch (Exception ex)
{
throw ex;
}
}
4.1.4 专业信息管理模块
模块设计:在整个学生信息管理系统中,添加专业信息是这个系统中其他功能实现的先决条件与基础,该功能界面比较简单,仅包含专业名称及专业描述的录入。
在专业信息添加过程中,需要考虑专业名称不能为空,而且不能添加已经存在的专业名称。
在添加信息前判断是否已经存在此专业名称时,使用了SqlCommand的ExecutrNoQuery方法,该方法用于执行用户指定的SQL语句,返回收到影响的行数,通过判断它返回的行数是否大于0来判断是否已经存在记录。
在浏览专业信息的界面中,用户可以按照列表的方式快速查看院校所开设的所有专业,并可以在该界面中完成修改和删除操作。在该界面采用了DataGridView控件,通过该控件绑定数据库,可以显示程序中所检索出的数据集。
对用户选中的专业信息的修改,需要从专业信息浏览窗体中将所选的专业信息的参数传递到修改专业信息窗体中,作为专业信息修改窗体初始化的依据,注意的是在点击修改时,需要判断用户是否有选中任意一条数据。
删除专业信息功能窗体并没有单独进行设计,而是在浏览专业信息窗体中实现的。
当删除一条专业信息记录时,需要充分考虑当前是否有与该专业相关的班级存在,若不存在测
展开阅读全文