C#学生信息管理系统课程设计NET.docx
《C#学生信息管理系统课程设计NET.docx》由会员分享,可在线阅读,更多相关《C#学生信息管理系统课程设计NET.docx(37页珍藏版)》请在冰豆网上搜索。
![C#学生信息管理系统课程设计NET.docx](https://file1.bdocx.com/fileroot1/2023-2/4/0d7b1cf6-54a7-443f-bfb9-9208ded5ef52/0d7b1cf6-54a7-443f-bfb9-9208ded5ef521.gif)
C#学生信息管理系统课程设计NET
学生管理系统
摘要:
现在高校的学生信息的管理趋向于复杂化和多元化,随着计算机的广泛应用,越来越多的高校均采用了计算机化的管理模式。
查询、修改、录入、删除等基本操作都采用了计算机的数据库技术。
比起以前使用卡片的方法有了很大的进步,方便管理,易于更新,极大的方便了学生信息的管理工作。
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
关键词:
学生信息;数据库;系统维护
1引言
1.1介绍本课题的目的和意义
学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段
1.2课题目的及意义
1.2.1开发一个学生管理系统意义
计算机已经成为我们学习和工作的得力助手:
今天,计算机的价格已经十分低廉,性能有了长足的进步。
它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率;
第四,计算机可以使敏感文档更加安全,等等。
为了解决传统学生信息的管理正面临着的这些问题,我所设计的学生信息管理系统软件也就应运而生了。
1.2.2使用计算机管理学生信息的意义
由于我国有些学校学生信息的管理水平比较低,只停留在纸介质的水准上,这样的机制很明显地已不能适应时代的发展要求,它浪费了过多的人力及物力,还存在一些先天缺陷。
在信息时代,这种传统的管理方法被以计算机为基础的信息管理方法取代已是大势所趋。
归纳起来,学生信息管理系统做到一下功能比较合民意:
首先,可以存储历届的学生信息,安全、高效;
其次,系统可操作性强,能够节省人力,最好只需一到二名信息录入员;
再次,查找信息速度快、效率高,可以检索有条件信息;
再其次,为将来学校实现网络化教育做准备。
1.3主要设计功能
本程序需要具备以下功能:
可以对学生信息进行操作,比如修改、添加等;
可以对学生信息进行查询;
系统管理具体包括添加、删除用户,修改用户信息等。
2系统概述
2.1系统设计背景
随着学校规模的不断扩大,学生数量急剧增加,有关学生的各种信息也成倍增加。
面对庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率。
通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。
2.2系统的功能简介
本系统主要分成四个部分:
学生信息管理,成绩管理,及用户管理。
2.2.1学生信息管理
为每位在校学生就其中学号、性别、姓名、出生日期、出生地、备案,而且以中考成绩作为分班的依据,可以对学生信息进行添加,删除,修改。
2.2.2成绩管理
每个学期组织期末考试,并对每个学生的各门成绩进行登记、汇总、排名。
涉及的主要数据是每个班每个学期一张成绩单,内容是学生的学号、姓名及成绩,在该管理中主要完成成绩的浏览、查询、分数的计算、打印的功能,而且成绩作为学生学习状况的主要依据和教师教学质量考核的主要依据之一。
2.2.3用户管理
该模块的主要功能是实现对用户的各种权限管理工作,添加新用户、修改用户密码、修改用户注册信息、删除用户帐号等功能,从而方便于对用户的管理。
3系统的分析及设计
3.1需求分析
3.1.1功能需求
通过调查,要求系统需要有以下功能:
由于操作人员的计算机知识普遍较差,要求有良好的人机界面;
由于该系统的使用对象多,要求有较好的权限管理;
原始数据修改简单方便,支持多条件修改
方便的数据查询,支持多条件查询;
在相应的权限下,删除数据方便简单,数据稳定性好;
数据计算自动完成,尽量减少人工干预;
3.1.2性能需求分析
(1)硬件环境
CPU:
Pentium4C2.4D
内存:
256M
硬盘:
80G
显示器:
17寸
(2)软件环境
WindowsXP系统/Windows7
MicrosoftVisualStudio2008
SQLServer2005
IIS6.0
3.2总体设计
3.2.1可行性分析
经过调查、研究、分析、计算,在学生信息管理中的应用已经条件成熟,我们将从以下几个方面总结系统开发的可行性,具体情况如下:
技术可行性
以Windows为操作系统,运用SQLSERVER2005的数据库技术,开发以WindowsXP/Windows7为用户的操作平台,界面友善、功能齐全的《学生信息管理系统》。
新系统的运行硬件环境PC机,当用户使用系统时,通过正确的口令进入系统,进行数据库的维护操作和运用。
经济可行性
一方面,新系统中友好的人机界面和更强劲的功能支持,会使教务人员的工作进一步提高,从而节省人力、物力,进而提高经济效益;另一方面系统开发成本低,现有PC机即可提供该系统开发工作需要的所有硬件设备环境,至于人员主要以现有教师为指导,学生为主体进行完成。
操作可行性
操作上是对IE浏览器的引用,该浏览器的使用,主要凭借使用浏览操作技术即可完成数据录入、报表打印,方便简单。
使用前只要对用户进行简单的说明或阅读帮助文件即可使用该系统。
在对现有系统和现状认真调查分析的基础上,明确了学生信息管理工作本身存在的问题和建立管理信息系统的初步要求,进一步研究确定新系统的目标如下:
1、按照管理信息系统的原理和方法,采用成熟的信息技术和手段,支持中学学生管理的全过程,加强成绩表中信息资源的管理和应用,提高教务工作的效率。
2、针对现代计算机广泛应用的情况以及数据的封闭性,学生信息管理系统基于Windows系统研制、设计和开发。
3、考虑经费等的原因,新系统使用PC机和现有其他打印设备以节省资金、降低成本。
3.2.2功能分析
根据系统分析的结果,按照结构化的系统设计方法,《学生信息管理系统》从功能上可以做出如下系统的划分:
系统功能结构图
3.2.3数据流图分析
数据流图是在对系统分析调查的基础上,以系统的科学性、管理的合理性、技术的可行性角度出发,将信息处理功能和彼此之间的联系自顶向下、逐层分解,从逻辑上精确地描述应具有的数据加工功能、数据输入、数据输出、数据存储及数据的来源和去向。
学生信息管理系统经过划分出各子系统及其各自的功能,以及相互联系,绘制出数据流图如下:
图3-1顶层数据流图
图3-2第0层数据流图
图3-3第一层数据流图
图3-4第一层数据流图
图3-5第二层数据流图(修改学生信息)
图3-6第二层数据流图(添加学生信息)
图3-7第二层数据流图(删除学生信息)
图3-8第二层数据流图(查询学生成绩)
图3-9Admins(管理员)表E-R图
图3-10Students(学生)表E-R图
图3-11Score(成绩)表E-R图
4详细设计
4.1数据库设计
数据库采用了Microsoft推出的SQLSERVER2005数据库,能够快速方便的和其他套件综合使用。
由于SQLSERVER2005具有显著的简易性和有效性,大量的网络数据库系统都采用SQLSERVER2005作为后台数据库。
使用SQLSERVER2005的好处还在于,为系统以后的扩展提供方便。
本系统中所涉及到的主要实体共有五个数据表:
User表:
{用户ID,用户密码}
Students表:
{学号,姓名,性别,班级,出生地,出生日期}
Score表:
{学号,姓名,成绩}
Course表:
{科目编号,科目名称,开始时间,结束时间,学期}
Class表:
{编号,一期班名,二期班名,三期班名,入学时间}
各表的物理结构:
User表:
Students表:
Score表:
Course表:
Class表:
4.2系统模块设计
本界面的主要功能是为了对系统进行安全性管理,本系统的用户名和密码保存在user表中,可以用user;123为用户名和密码来登陆本系统,其登录界面如下:
登录页面主要是根据用户输入的用户名和密码,去查找管理员表中是否存在这样的合法的用户,找到则登录成功;未找到则提示用户登录错误。
其系统流程图如下所示:
由于与数据库链接是整个系统的关键,也是使用就经常的,把与数据库链接的文件集成到DBOperater下的DBConnection.cs类中
namespaceDBOperater
{
publicclassDBConnection
{
privateSqlConnectionconn;//定义一个连接对像
///
///购造方法中实例一个连接对象,本项目使用的是MicrosoftSQLServer
///
publicDBConnection()
{
conn=newSqlConnection(@"DataSource=LENOVO-PC;InitialCatalog=StudentManageDB;IntegratedSecurity=True");
}
///
///根据参数传来的SQL语句,执行增、删、改操作
///
///要执行的SQL语句
publicvoidExecuteSqlNonQuery(stringstrSql)
{
SqlCommandcmd=newSqlCommand(strSql,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
finally
{
conn.Close();
}
}
///
///根据参数传来的SQL语句,执行断开式查询操作
///
///要执行的SQL语句
///返回DataTable类型的查询结果
publicDataTableExecuteSqlQuery(stringstrSql){
DataTabledt=newDataTable();
SqlDataAdapterda=newSqlDataAdapter(strSql,conn);
try
{
da.Fill(dt);
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
returndt;
}
///
///根据参数传来的存储过程名和存储过程中用到的参数,执行增、删、改操作
///
///存储过程名
///存储过程中用到的参数数组
publicvoidExecuteProcNonQuery(stringstrProc,SqlParameter[]pars)
{
SqlCommandcmd=newSqlCommand(strProc,conn);
cmd.CommandType=CommandType.StoredProcedure;
if(pars!
=null)//如果存储过程中用到的参数数组不为空
{
foreach(SqlParameterparinpars)//则遍历数组
{
cmd.Parameters.Add(par);//将所有的参数添加到SqlCommand对象的参数属性中
}
}
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
finally
{
conn.Close();
}
}
///
///根据参数传来的存储过程名和存储过程中用到的参数,执行断开式查询操作
///
///存储过程名
///存储过程中用到的参数
///返回DataTable类型的查询结果
publicDataTableExecuteProcQuery(stringstrProc,SqlParameter[]pars)
{
DataTabledt=newDataTable();
SqlDataAdapterda=newSqlDataAdapter(strProc,conn);
da.SelectCommand.CommandType=CommandType.StoredProcedure;
if(pars!
=null)//如果存储过程中用到的参数数组不为空
{
foreach(SqlParameterparinpars)//则遍历数组
{
da.SelectCommand.Parameters.Add(par);//将所有的参数添加到SqlDataAdapter对象的参数属性中
}
}
try
{
da.Fill(dt);
}
catch(Exceptionex)
{
thrownewException(ex.Message);
}
returndt;
}
}
}
验证数据是否存在到数据访问层(DAL)userDAO.cs中验证
//验证用户名和密码是否正确
publicUsersisUsers(Usersuser)
{
SqlParameter[]pars=newSqlParameter[2]{newSqlParameter("@userName",SqlDbType.VarChar,30),
newSqlParameter("@userPass",SqlDbType.VarChar,10)
};
pars[0].Value=user.UserName;
pars[1].Value=user.UserPass;
DataTabledt=dbc.ExecuteProcQuery("proc_isUsers",pars);
if(dt.Rows.Count!
=0)
{
user.UserId=Int32.Parse(dt.Rows[0]["userId"].ToString());
user.Picture=dt.Rows[0]["picture"].ToString();
user.Status=Int32.Parse(dt.Rows[0]["status"].ToString());
user.BackImage=dt.Rows[0]["backImage"].ToString();
user.Powers=dt.Rows[0]["powers"].ToString();
returnuser;
}
else
{
returnnull;
}
系统主界面:
本模块是本系统的主功能界面,在本界面上集成了本系统的所有功能,共有个功能菜单,从而实现了本系统从信息管理、成绩管理、页面管理等系统的具体功能,同时,在系统管理模块中可以完成对本系统的安全性管理。
4.2.1学生信息模块的设计
添加学生信息:
publicvoidStudentAdd(Studentstu)
{
SqlParameter[]pars=newSqlParameter[6]{newSqlParameter("@studentNO",SqlDbType.VarChar,20),
newSqlParameter("@studentName",SqlDbType.VarChar,50),
newSqlParameter("@gender",SqlDbType.Char,2),
newSqlParameter("@birthday",SqlDbType.VarChar,30),
newSqlParameter("@classId",SqlDbType.Int,4),
newSqlParameter("@remark",SqlDbType.VarChar,256)
};
pars[0].Value=stu.StudentNO;
pars[1].Value=stu.StudentName;
pars[2].Value=stu.Gender;
pars[3].Value=stu.Birthday;
pars[4].Value=stu.ClassId;
pars[5].Value=stu.Remark;
dbc.ExecuteProcNonQuery("proc_AddStudent",pars);
}
修改学生信息:
//修改学生信息的方法
publicvoidStudentUpdate(Studentstu)
{
SqlParameter[]pars=newSqlParameter[7]{newSqlParameter("@studentId",SqlDbType.Int,4),
newSqlParameter("@studentNO",SqlDbType.VarChar,20),
newSqlParameter("@studentName",SqlDbType.VarChar,50),
newSqlParameter("@gender",SqlDbType.Char,2),
newSqlParameter("@birthday",SqlDbType.VarChar,30),
newSqlParameter("@classId",SqlDbType.Int,4),
newSqlParameter("@remark",SqlDbType.VarChar,256)
};
pars[0].Value=stu.StudentId;
pars[1].Value=stu.StudentNO;
pars[2].Value=stu.StudentName;
pars[3].Value=stu.Gender;
pars[4].Value=stu.Birthday;
pars[5].Value=stu.ClassId;
pars[6].Value=stu.Remark;
dbc.ExecuteProcNonQuery("proc_UpdateStudent",pars);
}
删除学生信息:
//删除学生信息的方法
publicvoidStudentDelete(Studentstu)
{
SqlParameter[]pars=newSqlParameter[1]{newSqlParameter("@studentId",SqlDbType.Int,4)};
pars[0].Value=stu.StudentId;
dbc.ExecuteProcNonQuery("proc_DelStudent",pars);
}
查询学生信息:
//查询所有学生信息的方法
publicDataTableStudentSelectAll()
{
returndbc.ExecuteProcQuery("proc_SelStudentAll",null);
}
4.2.2学生成绩模块设计
添加成绩:
代码如下:
publicvoidScoreAdd(ScoreBeansco)
{
SqlParameter[]pars=newSqlParameter[6]{newSqlParameter("@courseId",SqlDbType.Int,4),
newSqlParameter("@studentId",SqlDbType.Int,4),
newSqlParameter("@score",SqlDbType.Float),
newSqlParameter("@mode",SqlDbType.VarChar,20),
newSqlParameter("@examDate",SqlDbType.DateTime),
newSqlParameter("@className",SqlDbType.VarChar,20)
};
pars[0].Value=sco.CourseId;
pars[1].Value=sco.StudentId;
pars[2].Value=sco.Score;
pars[3].Value=sco.Mode;
pars[4].Value=sco.ExamDate;
pars[5].Value=sco.ClassName;
dbc.ExecuteProcNonQuery("proc_AddScore",pars);
}
成绩修改:
代码如下:
//修改成绩信息的方法
publicvoidScoreUpdate(ScoreBeansco)
{
SqlParameter[]pars=newSqlParameter[5]{newSqlParameter("@scoreId",SqlDbType.Int,4),
newSqlParameter("@courseId",SqlDbType.Int,4),
newSqlParameter("@score",SqlDbType.Float),
newSqlParameter("@mode",SqlDbType.VarChar,20),
newSqlParameter("@examDate",SqlDbType.DateTime)
};
pars[0].Value=sco.ScoreId;
pars[1].Value=sco.CourseId;
pars[2].Value=sco.Score;
par