项目实训-学生信息管理系统(共84页).doc

上传人:飞****2 文档编号:17093486 上传时间:2022-05-21 格式:DOC 页数:84 大小:1.12MB
返回 下载 相关 举报
项目实训-学生信息管理系统(共84页).doc_第1页
第1页 / 共84页
项目实训-学生信息管理系统(共84页).doc_第2页
第2页 / 共84页
点击查看更多>>
资源描述

《项目实训-学生信息管理系统(共84页).doc》由会员分享,可在线阅读,更多相关《项目实训-学生信息管理系统(共84页).doc(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上项目实训学生信息管理系统设计与实现前言:项目概述学生信息管理系统介绍项目名称学生信息管理系统代码量3000行项目简介该系统可以帮助教辅人员进行学生基本信息的日常管理和维护;进行学生选课模拟以及重要数据备份等功能。项目目的 掌握WinForm图形用户界面开发技术 掌握ADO.NET数据库访问技术涉及的主要技术WinForm、ADO.NET、SQL Server数据库环境Microsoft SQL Server 2000编程环境Visual Studio 2005项目特点 基于.NET采用C#语言开发 项目属于C/S结构程序技术重点 WinForm窗体主要控件的应用 数据

2、库各类对象的应用,例如:存储过程、触发器等技术难点ADO.NET数据库访问技术1 项目需求以及分析设计1.1 项目需求分析随着学校规模的不断扩大,每个院系的专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而很多高校的学生信息管理工作仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低。因此,迫切需要开发学生信息管理系统来提高管理工作的效率。经过详细调研,我们确定了一个简易的学生信息管理系统的基本需求。 需要进行身份认证登录系统只允许合法用户进行登陆操作,并且该系统主要面向教学管理人员提供服务(例如教学秘书、辅导员等)。合法用户登陆后可以进行系统的主要功能操作。 数据查询

3、服务系统需要为服务对象提供两种服务:一是进行学生基本信息的浏览;二是进行学生成绩信息查询服务。 数据添加服务系统根据需要可以添加学生基本信息以及添加学生的选课信息等操作。 数据更新服务系统根据需要可以更新学生的基本信息。 数据删除服务系统根据需要可以删除学生的基本信息,但是要求备份删除学生的所有信息。 系统扩展服务本项目限于篇幅等,在后面主要描述并实现了系统登录、学生基本信息浏览、成绩信息查询、学生基本信息的添加、更新和删除以及学生选课的功能。有关其他实体信息的管理,例如:成绩信息、课程信息等维护功能没有实现。但是大家完全可以根据后面系统提供的框架来扩展系统的其他功能。此外,根据需要,我们采用

4、基于C/S结构来开发学生信息管理系统。1.2 项目功能描述根据需求分析,学生信息管理系统为用户提供的功能主要分为以下几类:系统管理服务:系统系统登录、注销以及系统退出功能。数据查询和统计服务:学生基本信息浏览和查询、学生成绩信息查询等功能。数据添加服务:学生基本信息添加、学生选课、其他可以扩展的功能(院系信息添加、课程信息添加、成绩信息添加、管理员账户信息添加等未实现)。数据更新服务:学生基本信息更新、其他可以扩展的功能(院系信息更新、课程信息更新、成绩信息更新、管理员密码修改功能等未实现)。数据删除服务:学生基本信息删除、其他可以扩展的功能(院系信息删除、课程信息删除、成绩信息删除、管理员删

5、除等功能未实现)。系统介绍服务:系统基本信息介绍、系统使用帮助(未实现)等。根据以上系统功能描述,绘制学生信息管理系统的功能模块划分如图14.1.2-1所示。系统登录系统管理注销退出学生基本信息浏览学生成绩信息查询其他功能扩展学生基本信息添加学生选课其他功能扩展学生基本信息更新其他功能扩展学生基本信息删除其他功能扩展关于本系统其他功能扩展数据查询和统计数据添加数据更新数据删除帮助学 生 信 息 管 理 系 统图1.2-1:“学生信息管理系统”功能模块图1.3 数据库设计本系统后台数据库采用的是SQL Server 2000,根据系统的功能描述以及系统的详细设计,学生成绩信息管理系统中各种数据信

6、息之间的关系如图1.3-1所示。图1.3-1:“学生成绩信息管理系统”数据库关系图下面针对图1.3-1中的数据库基本表的具体设计进行详细介绍。表名:admin(管理员表),如表1.3-1所示。字段名称数据类型字段说明字段属性userNameVarchar(20)用户名主键passwordVarchar(20)密码限制最低6位,不能为空表1.3-1:管理员表设计说明表名:Dept(院系表),如表1.3-2所示。字段名称数据类型字段说明字段属性deptIDChar(4)院系编号主键deptNameNvarchar(30)院系名称不许为空且唯一phoneVarchar(12)联系电话表1.3-2:院

7、系表设计说明表名:stu(学生表),如表1.3-3所示。字段名称数据类型字段说明字段属性stuIDChar(12)学号主键stuNameNvarchar(20)姓名不许为空stuSexNchar(1)性别只能输入:男、女stuBirthDatetime出生日期要求年龄不能大于30岁stuPoliticTinyint政治面貌只能输入1、2、3(其中1表示党员,2表示团员,3表示其他)stuDeptChar(4)所属院系参照院系表院系编号取值stuResumeNtext简历stuPhotoImage照片stuPcardChar(18)身份证编号表1.3-3:学生表设计说明表名:course(课程表

8、),如表1.3-4所示。字段名称数据类型字段说明字段属性courseIDChar(6)课程编号主键courseNameNvarchar(30)课程名称不许为空,唯一CreditTinyint学分其值不能大于5courseTimeVarchar(30)上课时间stuLimitedTinyint限选人数默认值:250stuPreSelectTinyint已选人数默认值:0,并且不能大于stuLimited表1.3-4:课程表设计说明表名:grade(成绩表),如表1.3-5所示。字段名称数据类型字段说明字段属性stuIDChar(12)学号参照学生表学号字段取值courseIDChar(6)课程编

9、号参照课程表课程编号字段取值gradeDecimal(5,2)成绩成绩必须介于0和100之间说明:stuID和courseID联合主键表1.3-5:成绩表设计说明2 项目详细设计以及功能实现本章主要任务是从实际应用出发,使学生能够掌握SQL Server 等大型数据库技术,掌握C#+SQL Server等大型数据库软件进行大型数据库桌面应用程序开发的基本过程和基本方法,并能够运用C#进行简单的办公自动化系统编程。在进行项目详细设计之前,首先创建一个名为StuInfoManage的windows应用程序项目。2.1 数据库通用访问类的创建考虑到整个项目中多个窗体的很多位置都需要涉及到数据库的访问

10、操作,所以我们将数据库操作频繁使用的部分代码抽取出来,组合而成数据库访问类,从而避免重复编写相同代码的工作。常见的数据库访问操作主要有:更新操作(包括插入数据、修改数据和删除数据)、查询操作(指直接执行SQL语句进行数据库操作)、存储过程的执行操作(主要包括返回结果集的存储过程以及使用返回值的存储过程)等。在StuInfoManage项目中进行以下操作: 添加一个类:将其中创建的Class1.cs重命名为SqlHelper.cs。 在该类中添加如下代码:public class abstract class SqlHelper /获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直

11、接使用,但不能修改 public static readonly string ConnectionString = server = .;database=stuInfoManage;Integrated Security = true; / 执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlC

12、ommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString) /通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); /清空SqlCommand中的参数列表 cmd.Parameters.Clear(); return val; /

13、执行一条返回SqlDataReader的SqlCommand命令,通过专用的连接字符串。 public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try PrepareCommand(

14、cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; catch conn.Close(); throw; / 执行一条返回DataSet的SqlCommand命令,通过专用的连接字符串。 public static DataSet ExecuteDataset(string connectionString, Command

15、Type commandType, string commandText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection cn = new SqlConnection(connectionString) cn.Open(); PrepareCommand(cmd, cn, (SqlTransaction)null, commandType, commandText, commandParameters); SqlDataAdapter da = new

16、 SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); cmd.Parameters.Clear(); return ds; / 为执行命令准备参数 private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter cmdParms) /判断数据库连接状态 if (conn.State != Connecti

17、onState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; /判断是否需要事物处理 if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); /* * 功能:调用存储过程,并返回存储过程返回值的通用方法 * 要执行的存储过程的名称 * 要执行的存

18、储过程中参数的集合 * 区分是查询(1)操作还是更新(2)操作 * 返回存储过程的返回值 */ public int ProcReturnValue(string procName, SqlParameter cmdparam,int DataOpType) SqlConnection sqlconn=new SqlConnection(ConnectionString); try if (sqlconn.State != ConnectionState.Open) sqlconn.Open(); SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Con

19、nection = sqlconn; sqlcmd.CommandText = procName; sqlcmd.CommandType = CommandType.StoredProcedure; if (cmdparam != null) foreach (SqlParameter param in cmdparam) sqlcmd.Parameters.Add(param); sqlcmd.Parameters.Add(new SqlParameter(ReturnValue,SqlDbType.TinyInt); sqlcmd.ParametersReturnValue.Directi

20、on = ParameterDirection.ReturnValue; if (DataOpType = 1) sqlcmd.ExecuteScalar(); if(DataOpType = 2) sqlcmd.ExecuteNonQuery(); return Convert.ToByte(sqlcmd.ParametersReturnValue.Value); catch throw; finally sqlconn.Close(); 至此,数据库通用访问类创建完毕。我们可以用此类完成几乎所有的数据库操作。2.2 系统主界面设计与功能实现(1)界面设计的基本要求 界面设计要完整的体现用户

21、的功能需求,并且美观大方。 界面设计的交互操作过程符合用户的习惯性工作过程。(2)系统主界面设计在stuInfoManage项目中将Form1.cs重命名为MainForm.cs,并参照表格2.2-1的说明设置MainForm窗体的属性。属性名设置IsMdiContainerTrueText学生信息管理系统StartPositionCenterScreenWindowStateMaximized表格2.2-1:主窗体主要参数设置(3)系统菜单设计根据需求,系统需要在主窗体上创建一个菜单系统来引导用户的操作,至于菜单系统中的各级菜单显示字符以及命名参见表格2.2-2说明。主菜单子菜单命名系统管理

22、SystemManageMenuItem系统登陆LoginInMenuItem注销LoginOutMenuItem退出SystemExitMenuItem数据查询DataQueryMenuItem学生基本信息浏览StuBasicInfoQueryMenuItem学生成绩信息查询StuGradeInfoQueryMenuItem课程成绩信息查询CourseGradeQueryMenuItem数据添加DataAddMenuItem学生基本信息添加StuBasicInfoInsertMenuItem数据更新DataUpdateMenuItem学生基本信息更新StuBasicInfoUpdateMen

23、uItem数据删除DataDeleteMenuItem学生基本信息删除StuBasicInfoDeleteMenuItem帮助HelpMenuItem关于本系统AboutSystemMenuItem表格: 2.2-2 菜单系统主要参数设置(4)系统菜单功能初始状态的设定由于该系统需要合法用户登陆成功后才能操作相应的系统主要功能,所以系统的主要功能的初始状态是不可用的。此外,当系统登录成功后需要打开系统主要功能锁定。为了实现该功能以及方便以后操作,首先在MainForm类中添加以下两个私有方法:/将系统主要功能调用的菜单锁定的方法private void MenuStatusOFF()DataQ

24、ueryMenuItem.Enabled = false;DataAddMenuItem.Enabled = false;DataUpdateMenuItem.Enabled = false;DataDeleteMenuItem.Enabled = false; /打开系统主要功能锁定状态的方法private void MenuStatusOn()DataQueryMenuItem.Enabled = true;DataAddMenuItem.Enabled = true;DataUpdateMenuItem.Enabled = true;DataDeleteMenuItem.Enabled

25、= true;然后,双击MainForm窗体类的Load事件,在该事件中添加如下代码:MenuStatusOFF();(5)“注销”功能的实现功能:将系统主要功能设置为锁定状态,以方便其他用户登陆使用。具体操作:选中“注销”菜单,在注销菜单的Click事件中添加如下代码。MenuStatusOFF();(6)“退出”功能的实现当系统退出时,需要提示是否真的退出等提示选项等,实现该功能在MainForm窗体类中进行如下操作: 在“退出”菜单的Click事件中添加如下代码:this.Close(); 在MainForm窗体类的FormClosing事件中添加如下代码:DialogResult mg

26、r = MessageBox.Show(您确定要退出学生信息管理系统吗?, 信息提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);if (mgr = DialogResult.Cancel)e.Cancel = true;至此,系统主界面以及菜单系统的主要设计任务已经完毕。2.3 登录窗体的设计与功能实现(1)功能描述该步骤要实现两个功能:1、点击“系统管理”主菜单下“系统登录”功能选项,打开“系统登陆”窗体;在该窗体处于打开状态时,我们不能操作主界面包括系统菜单的

27、所有功能,除非关闭该窗体以后,才能继续操作;2、系统启动完成后,系统主要功能处于不可用状态,当登陆成功后,打开功能锁定。在本案例中,解决第一个问题的方法是使用模式对话框,解决第二个问题的方法是在登陆窗体中设置一个“系统菜单状态”变量(SysMenuStatus),通过该变量的真假来判断是否打开系统的功能锁定。(2)流程图针对功能描述,我们绘制系统登录功能的操作流程图如图2.3-1所示。启动主窗体主菜单:系统管理子菜单:系统登陆菜单输入用户名和密码信息提示数据验证提示登录成功信息,打开功能菜单锁定并结束登陆成功失败图2.3-1:“系统登录”功能实现流程图(3)数据库设计本窗体主要功能的实现所涉及

28、的用户登陆合法性验证采用带返回值的存储过程来实现。具体操作过程为:在SQLServer查询分析器中输入以下代码后并运行,创建存储过程LoginJudge,用于判断登陆用户的合法性验证。Use stuInfoManageIf exists(select * from sysobjects where name = LoginJudge and type = P)Drop procedure LoginJudgegocreate procedure LoginJudge (userName nvarchar(100),passWord varchar(100)as if not exists(se

29、lect * from admin where userName = userName) return 1 - 表示不存在该用户 else begin if not exists(select * from admin where userName = userName and password=passWord ) return 2 -表示密码错误 else return 3 -表示登陆成功 endGO代码输入完毕后点击运行按钮,生成LoginJudge存储过程。(4)界面设计首先,在stuInfoManage项目中添加一个Windows窗体,将其窗体类名改为:SystemLoginForm

30、,设置该窗体的属性Text为“系统登录”,并添加一个公共数据成员:public Boolean SysMenuStatus = false; 其次,在该“系统登录”窗体上添加必要控件并设置相关属性,具体设置参照表格14.2.3-1说明。控件类型命名属性Lable1采用系统默认Text:系统登陆Lable2采用系统默认Text:用户名:Lable3采用系统默认Text:密码:ComboBoxUserNameComboBox无TextBoxPasswordTextBoxPasswordChar:*ButtonLoginButtonText:登陆ButtonResetButtonText:重置But

31、tonExitButtonText:退出表格14.2.3-1:“系统登录”窗体上面控件的主要属性设置表格其他显示样式以及效果可以根据实际情况具体调节,例如字体的大小和颜色等。具体设计效果可以参照图2.3-2。图2.3-2:“系统登录”窗体设计效果图(5)代码实现5.1 菜单功能调用的实现首先,在系统主界面类MainForm类中添加一个私有数据成员,该成员为系统登陆窗体的一个实例,即在MainForm类中添加如下代码:SystemLoginForm LoginForm = new SystemLoginForm();其次,双击“系统登陆”菜单,在“系统登陆”菜单的Click事件中添加以下代码:/

32、判断该对象是否存在,如果不存在,就创建它if (LoginForm.IsDisposed)LoginForm = new SystemLoginForm();/以模式对话框的形式显示LoginForm窗体LoginForm.ShowDialog();/登陆窗体运行完毕后,判断登陆窗体的属性SysMenuStatus的取值/如果登陆窗体中系统菜单状态变量的值为真,打开系统菜单主要功能的锁定状态if (LoginForm.SysMenuStatus = true)MenuStatusOn();至此,登录窗体的功能调用已经实现。5.2 “登陆窗体”相应功能的实现 “用户名”组合框的数据初始化系统界面

33、启动后,自动加载数据库中合法的管理员的用户名,在用户名组合框中列示以便选择,当然也允许用户自行输入个人的用户名。实现该功能需要在SystemLoginForm窗体类的Load事件中添加以下代码,为UserNameComboBox数据进行初始化操作: string sqlstr = select userName from admin; DataSet userNameDS = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString,CommandType.Text,sqlstr); UserNameComboBox.DataSource = us

34、erNameDS.Tables0; UserNameComboBox.DisplayMember = userName; “系统登陆”窗体的初始化 我们在启动系统登录窗体后,要使各个控件处于数据选择或输入状态。要实现该功能,首先,我们需要在SystemLoginForm窗体类中添加私有方法用于控件初始状态设定:private void ComponentReset()UserNameComboBox.Text = ;PasswordTextBox.Text = ;UserNameComboBox.Focus();然后在SystemLoginForm窗体的载入事件中添加该方法的调用:Compon

35、entReset(); “重置”按钮功能的实现重置功能主要实现清空已经输入或选择的数据,以便用户重新输入。完成此功能,需要在“重置”按钮的Click事件中添加以下代码实现控件状态重置:ComponentReset(); “退出”按钮功能的实现在“退出”按钮的Click事件中添加以下代码:this.Close(); “登陆”按钮功能的实现点击登陆按钮后,首先要根据需要判断用户名和密码是否非空,密码长度是否大于6位。如果违反这些基本条件,直接给出相应提示信息。如果具备这些基本条件,则调用存储过程LoginJudge判断用户的合法性,并根据返回值进行应有的操作和相应的提示信息。实现该功能,需要在“登

36、陆”按钮的Click事件中添加如下代码:private void LoginButton_Click(object sender, EventArgs e)string userName = UserNameComboBox.Text.Trim();string passWord = PasswordTextBox.Text.Trim();if (userName.Length = 0)MessageBox.Show(用户名不能为空!请重新输入!, 信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);UserNameComboBox.Focus

37、();elseif (passWord.Length = 0)MessageBox.Show(密码不能为空!请重新输入!,信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);PasswordTextBox.Text = ;PasswordTextBox.Focus();else if (passWord.Length 6)MessageBox.Show(密码长度不能短于6位,请重新输入!, 信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);PasswordTextBox.Text = ;Pas

38、swordTextBox.Focus();else SqlParameter cmdparam = new SqlParameternew SqlParameter(userName,userName),new SqlParameter(passWord,passWord);int loginFlag = SqlHelper.ProcReturnValue(LoginJudge, cmdparam,1);switch (loginFlag) case 1: MessageBox.Show(不存在该用户,请重新输入或者选择你要登陆的用户名!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); ComponentReset(); break; case 2: MessageBox.Show(用户名存在,但密码输入密码错误!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); PasswordTextBox.Clear(); PasswordTextBox.Focus();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁