您的当前位置:首页学生信息管理系统

学生信息管理系统

2021-07-29 来源:乌哈旅游
学生信息管理系统

1 引言

1.1 项目背景

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。目前,在学校里,随着高校规模的不断扩大和招生人数的不断增加,需要处理大量的学生数据信息。如何更好的组织学生信息,更加快捷的管理学生信息显得尤为的重要。

作为计算机应用的一部分,使用计算机对学生信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。

我们为此开发了一套学生信息管理系统,本系统面向学校的教务人员,目的是为学校办公管理提供一个快速、简单规范的管理平台,使学院在学生信息管理方面更加规范化,快捷化。

1.2 项目目标

本章以学校的学生信息管理为依托,结合教务教学管理,设计并开发一个学生信息管理系统,提供一个信息更新快捷、管理方便、功能设置合理的学生信息管理解决方案。针对学校大量的学生信息,就学生管理的几个方面,提供一个互动式的学生管理平台。系统目标如下:

 通过学生信息管理系统的实现,使学校的学生信息管理更加科学化。  提供灵活、方便的操作。

 节约学生信息管理的成本,提高学校管理的效率。  对系统提供必要的权限管理。

 为学校考核学生的综合素质提供必要的数据支持。

2 需求分析

2.1 系统需求

在各大中专院校,学校的教务管理的主要内容包括学生的信息管理和教师排课,学生信息管理传统的手工管理主要包括学生档案管理,学生成绩管理。其中学生信息管理对大数据量要求较高,而教师排课系统由于需要十分专业的算法并且系统需求不断的变化,因此在实际应用时,往往会遇到很大的问题,需要进一步研究,目前一般的学校管理系统都包含了学生信息管理的功能。本系统不包含教师排课管理和教师管理的详细业务,只提供学生相关信

息信息的查询。

2.2 功能需求

根据上述的信息管理系统的业务流程、要求以及所要实现的目标,我们可以拟出以下需求目标: (1)建立学生档案的管理和维护。实现计算机自动化管理体制。 (2)建立学生成绩管理机制,在计算机的支持下快速的完成学生成绩的查询和修改。

(3)建立课程设置管理,在计算机的支持下实现课程的添加、删除、修改。 (4)建立班级设置管理,在计算机的支持下实现班级的添加、删除和修改。 (5)实现系统的权限设置管理,保证系统安全性。 根据系统的需求分析,得到本系统的功能要求如下:

(1)班级、课程的设置管理:学校的教务秘书可以根据本校具体情况在每学期开始时设置所需班级数量和人数。并设置本学期的课程。

(2)权限管理:为了很好的保证系统的安全性,学校相关负责人可以设置不同类型的人员的权限。

(3)学生档案管理:学生档案的数量十分庞大,教务管理人员进行新生入学的档案录入及更改。其中包括学生个人信息的修改。

(4)学生成绩管理:教务管理人员可以查询和修改学生的历年考试成绩,掌握学生学习情况,作为评定学生素质的数据依据。

2.3 性能需求

系统的运行对于运行环境的要求是; 1.硬件环境 目前,我们所开发的系统主要是应用在中小规模的学校内部,因此,一般配置的计算机硬件就可以满足系统需求。考虑到学校规模的扩大和硬件价格的降低,为本系统配置在较优秀的服务器硬件,可以充分发挥本系统性能。

 处理器: Intel Pentium 4 3.06 GX 或更高  内存: 256M(推荐)  硬盘空间:40GB

 显卡: SVGA显示适配器 2.软件环境

 操作系统:Windows 2000/XP  开发软件:Microsoft Visual Studio .NET 2003  数据库:Microsoft SQL Server 2000

3 总体设计

3.1 设计思想与处理流程

本系统采用面向对象方法进行分析和设计,在SQL Server 2000数据库上实现数据操作。使用纯面向对象的C#语言作为开发语言,使用Windows2000作为开发平台,能够很好的实现系统的开发及测试。 系统的基本流程是:用户登陆→主界面→选择各项子系统。

3.2 系统层次模块图

“学生信息管理系统”主要分为登录、新生信息录入、学生信息查询、更新学生信息、学生成绩录入、学生成绩查询、权限管理、密码管理、班级管理、课程管理等10个模块。系统主模块功能树如图2-1所示:

登录 密码管理 权限管理 班级管理 学生信息管理系统 课程管理 新生信息录入 学生信息查询 更新学生信息 图2-1 “学生信息管理系统”系统主模块功能树 3.3 模块设计 学生成绩录入 1.登录模块:输入用户名称和密码,如果用户名、密码正确,进入主控制平台;否则学生成绩查询 给出错误信息提示。 2.系统维护模块:

 权限管理子模块:系统管理员进行用户权限设置和初始密码的设置。  密码修改子模块:登陆系统用户可以随时修改自己的密码,保证密码的有效性和保密性。

 班级管理子模块:在新学期开始或每学期中间需要开设新的课程时可以在本模块进行班级的设置和维护。

 课程设置子模块:在每学期开始需要进行本学期需要开设课程的设置。在某一课程发生变动时可以进行课程的维护,包括修改课程的名称、学分等,也可以删除某一课程。

3.学生信息管理模块:

 新生信息录入子模块:在每学年开始或中间可以进行学生信息的录入,包括学生的基本信息等。

 学生信息查询子模块:方便教务管理人员快速的查找某一学生。分为按照学生的姓名进行查找和按照学生的所在班级名进行查找。利于管理人员随时掌握学生信息。

 更新学生信息子模块:教务管理人员可以随时更改学生的某些信息,包括学生姓名、身份证号、班级等信息的更改。 4.学生成绩管理模块:

 学生成绩录入子模块:按照学生考试的时间和课程录入学生的考试成绩。  学生成绩查询子模块:方便教务管理人员快速的查找某一学生的成绩。分为按照学生的姓名进行查找和按照学生的所在班级名进行查找。利于管理人员随时掌握学生考试信息。

5.帮助信息模块:显示系统的开发版本和系统说明信息。

4 数据库设计

1.SQL Server2000数据库建立过程

首先把SQL Server 2000的“服务管理器”打开,鼠标左键单击“开始/继续”按钮,然后在“开始”→“程序”内选择“Microsoft SQL Server” →“企业管理器”。展开左边的程序树,如图2-2所示。

图2-2 打开企业管理器

在“数据库”文件夹图标上单击鼠标右键,选择“新建数据库”,弹出新建数据库窗体,如图2-3所示。

图2-3 新建数据库窗体

在“名称”文本框内,输入新建数据库的名称,在此输入“StuMagSys”,新建学生信息管理数据库。其他选项默认即可。

然后,开始建立本系统需要的数据库表,方法如下:

首先,在新建的数据库上单击鼠标右键,选择“新建”→“表”,如图2-4所示。

图2-4 新建表

然后,在弹出的窗体内输入表字段和类型以及长度和是否允许空等信息,如图2-5所示。

图2-5 新建表窗体

输入完表字段后,为表的字段添加主键、约束和关系等,方法是在添加约束或关系的字段上单击鼠标右键,选择“设置主键”或“关系”等。如图2-6所示。

图2-6 创建主键

保存该表,命名为Student。接下来在建立本章需要的其他表,在此不再详述了。 接下来就是如何向已经建立好的数据表内输入数据了,方法如下,首先在建立好的表上单击鼠标右键,选择“打开表”→“返回所有行”,如图2-7所示。

图2-7 打开表

然后在弹出的窗体内输入数据,输入结束后,鼠标左键单击工具栏上的运行图标,保存数据,如图2-8所示。

图2-8 为表添加数据窗体

2.表结构实现

根据系统功能设计的要求以及功能模块的划分,对于系统用户信息数据库,可以列出以下数据项和数据结构:

(1)、名称:学生信息表 表名称标识:Student表

数据来源:新生信息录入模块进行录入。

表2-1学生信息表(Student)

字段名 字段类型 长度 主/字段值约对应中文

外键 束 名

Student_iint 4 P Not null 学号 d

Student_nnvarchar 10 Not null 姓名 ame

Sex char 2 性别 Birth smalldata4 出生年月

time

Nation char 8 民族 Class_id int 4 Not null 班级号 Entrance_smalldate Not null 入学时间 date time

home nvarchar 40 家庭地址 politic char 10 政治面貌 ID nvarchar 18 身份证号 Job nvarchar 20 职位 specialty nvarchar 20 所学专业

(2)、名称:学生成绩表

表名称标识:Student_course表

数据来源:学生成绩录入模块进行录入。

表2-2学生成绩表(Student_course)

字段名 字段长度 主/字段值约

对应中文名

类型 外键 束

Course_iint 4 P Not null 课程号 d

Student_int 4 P Not null 学号 id

Grade float 8 Not null 成绩 SC_semesSmall2 Not null 学期 ter int

School_ySmall2 Not null 学年 ear int

(3)、名称:班级表 表名称标识:class表

数据来源:班级管理模块进行录入

表2-3班级表(class)

字段名 Class_id

字段类型 Int

长度 4 主/外键 p

字段值约束

Not null

Not null

对应中文名 班级号 年级 班级名称 班级人数 最大人数

Grade char 10 Class_nvarc40 name har

SumStu Int 4 MaxNum int 4

(4)、名称:课程表 表名称标识:course表

数据来源:课程管理模块进行录入

字段名 Course_id Course_name

Credit

(5)、名称:用户表 表名称标识:Syuser表

数据来源:权限管理模块进行录入

Credit Smallint

2 20

字段类型 Int

长度 4

表2-4课程表(course)

主/外键 P

字段值约束

Not null Not null

对应中文名 课程号 课程名 学分

表2-5用户表(Syuser)

字段名 User_id User_name

User_role

Password

字段类型 char

长度 10 10 10 8

主/外键 P

字段值约束 Not null

Not null

对应中文名 用户编用户名 用户角密码

5 详细设计

本系统主要实现学生信息的浏览、查询、编辑、添加和删除,同时对班级和课程进行管理,增加权限的管理。根据已有的需求分析和总体设计,我们在此基础上来进行系统的详细设计和实现,为此,我们建立了一个C#.NET项目。在“开始”菜单中找到“MircoSoft Visual Studio.Net 2003”,启动应用程序,鼠标单击“文件” → “新建” →“项目”,单击“Visual C#项目”,建立一个“Windows 应用程序”,命名为“StudentManagementSystem”,位置默认。如图2-9

所示。

图2-9新建C#项目窗体

然后我们把这个项目生成的默认窗体作为本系统的主窗体,我们再向这个项目中添加一个窗体,鼠标单击“项目”→“添加Windows窗体”,输入窗体名称为“Login”把新添加的窗体作为登陆窗体,调整窗体大小到合适值。修改该窗体的name属性为“Login”,text属性为“用户登陆”,StartPosition属性为“CenterScreen”,其他属性默认。我们接下来的所有窗体文件都是使用这种方法在这个项目中添加。

5.1登录模块的设计与实现

1.用户身份验证IPO图 输入:用户名和密码。 处理:

(1) 用户登录窗体启动。 (2) 输入用户名和密码。

(3) 从用户信息表中检查是否有相应的用户名和密码。 (4) 如果用户名或密码为空或者错误,进行提示。

(5) 如果输入的用户名和密码正确,则允许该用户进入系统。 (6) 进入主控制平台。 输出:主控制平台。

2.用户登录模块的窗体设计,如图2-10所示:

图2-10用户登录模块的窗体效果

3.用户登录模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class Login : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button login_butt; private System.Windows.Forms.Button Logout_butt; private System.Windows.Forms.TextBox User_name; private System.Windows.Forms.TextBox Passwords; public static String Username=\"\";//保存用户登陆名,以便以后使用。 public static bool loginOrnot;//判断用户登陆成功与否。 private string strconn;//查询更新数据库字符串。 private string connstr=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\";//连接数据库字符串。 private SqlDataAdapter sqlda;//查询数据库时使用的适配器。 private DataSet dset =new DataSet();//保存查询结果的数据集。 private SqlConnection myconn;//数据库连接。 private DataTable mytable;//查询返回的数据表。 private DataRow Userrows;//表中的行。 private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox2; private System.ComponentModel.Container components = null; /*此处省略程序自动生成的代码*/ private void login_butt_Click(object sender, System.EventArgs e) { try { strconn=\"select * from syuser where

Use_name=\"+\"'\"+this.User_name.Text.ToString().Trim()+\"'\";//根据用户输入的用户名和密码初始化查询更新数据库字符串 myconn=new SqlConnection(connstr); sqlda=new SqlDataAdapter(strconn,myconn); dset.Clear(); sqlda.Fill(dset,\"syuser\");

mytable=dset.Tables[0];//查询的结果在Tables[0]中。 for(int j=0;j5.2 主操作页面效果

1.主控制平台的窗体设计,如图2-11所示:

图2-11 用户登录模块的窗体效果

2.窗体和控件特殊属性的设置:

控件 MainMenu StatusBar

3.主控制平台的主要代码

控件名称 StuMenu MainstatusBar

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms;

namespace StudentManagementsystem { public class MainFrm : System.Windows.Forms.Form { private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MenuItem menuItem2; private System.Windows.Forms.MenuItem menuItem7; private System.Windows.Forms.StatusBar MainstatusBar; private System.Windows.Forms.MainMenu StuMenu; private System.Windows.Forms.MenuItem Newstu; private System.Windows.Forms.MenuItem QueryStu; private System.Windows.Forms.MenuItem InputGrade; private System.Windows.Forms.MenuItem QueryStuGrade; private System.Windows.Forms.MenuItem UpdateRole; private System.Windows.Forms.MenuItem ExitSys; private System.Windows.Forms.MenuItem UpdateStu; private System.Windows.Forms.MenuItem AddClass; private System.Windows.Forms.MenuItem ChgPsw; private System.Windows.Forms.MenuItem menuItem3; private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.MenuItem Stu_JC; private System.Windows.Forms.MenuItem menuItem4;

private System.ComponentModel.Container components = null; public MainFrm() { InitializeComponent(); this.MainFrm_Load(); } /*此处省略程序自动生成的代码*/ static void Main() { Login log=new Login(); log.ShowDialog(); if(Login.loginOrnot==true) Application.Run(new MainFrm()); } //根据登陆的用户名设置窗体状态。 private void MainFrm_Load() { this.MainstatusBar.Text=\"欢迎使用学生信息管理系统:\"+Login.Username; } //-----------显示学生信息查询窗体--------- private void QueryStu_Click(object sender, System.EventArgs e) { QueryStu QryStu=new QueryStu(); QryStu.Show(); } //-----------显示更新学生信息窗体--------- private void UpdateStu_Click(object sender, System.EventArgs e) { UpdateStu updstu=new UpdateStu(); updstu.Show(); } //-----------显示学生成绩录入窗体--------- private void InputGrade_Click(object sender, System.EventArgs e) { InputGrade inptgrade=new InputGrade(); inptgrade.Show(); } //-----------显示学生成绩查询窗体--------- private void QueryStuGrade_Click(object sender, System.EventArgs e) { QueryStuGrade qrystu=new QueryStuGrade(); qrystu.Show(); } //-----------显示权限管理窗体--------- private void UpdateRole_Click(object sender, System.EventArgs e) { UpdateRole updrole=new UpdateRole(); updrole.Show(); } //-----------显示新生信息录入窗体--------- private void Newstu_Click(object sender, System.EventArgs e) { NewStu nfrm=new NewStu(); nfrm.Show(); } //-----------退出主界面--------- private void ExitSys_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出本系统?\确认\ this.Close(); } //-----------显示密码修改窗体---------

}

}

private void ChgPsw_Click(object sender, System.EventArgs e) { ChgPsw ChangePsw=new ChgPsw(); ChangePsw.Show(); }

//-----------显示班级管理窗体--------- private void AddClass_Click(object sender, System.EventArgs e) { NewClass NewC=new NewClass(); NewC.Show(); }

//-----------显示课程管理窗体--------- private void Addcour_Click(object sender, System.EventArgs e) { AddCourse AdCour=new AddCourse(); AdCour.Show(); }

//-----------显示帮助窗体--------- private void SysHlp_Click(object sender, System.EventArgs e) { SysHelp hp=new SysHelp(); hp.Show(); }

5.3系统维护模块模块的设计与实现

1.权限管理模块的设计与实现

权限管理模块负责整个系统的安全性,只能增加新的用户而不能修改、删除用户,这样保证了系统的恶意操作、误删除等情况出现。

(1).权限管理模块实现的功能

权限管理模块主要实现增加新的用户和并设定该用户权限和设置初始密码。 (2).权限管理模块实现的效果

权限设置模块的窗体设计效果如图2-12所示。

图2-12 权限管理模块的窗体效果

(3).权限管理模块的IPO图 功能:从对话框中取得新的用户名和密码以及相应的职务,写入到数据库内的Syuser表中。 输入:用户名、初始密码和职务 处理:

1) 权限管理窗体启动。 2) 在用户名、密码输入对话框中取得用户名和密码,在数据库StuMagSys内的

Syuser表内查找该用户名如果已存在该用户名,则提示错误信息,否则在Syuser表内添加一条新的记录

输出:对用户表Syuser进行记录添加

(4).权限管理模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class UpdateRole : System.Windows.Forms.Form { private System.Windows.Forms.TextBox UserName; private System.Windows.Forms.TextBox Psw; private System.Windows.Forms.Button NewUserOk; private System.Windows.Forms.Button NewUserCanl; private System.Windows.Forms.ComboBox RoleItem; private string NewRoleStrConn; private SqlConnection NewRoleConn; private SqlCommand NewRoleComd; /*此处省略程序自动生成的代码*/ private void NewUserCanl_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出?\确认\ this.Close(); } private void NewUserOk_Click(object sender, System.EventArgs e) { try { string SqlStr=\"insert into

syuser(Use_name,Password,Use_role)values\"+\"( \"+\"'\"+this.UserName.Text.ToString().Trim()+\"'\"+\w.Text.ToString().Trim()+\"'\"+\ NewRoleStrConn=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; NewRoleConn=new SqlConnection(NewRoleStrConn); NewRoleConn.Open(); NewRoleComd=new SqlCommand(SqlStr,NewRoleConn); int Succnum=NewRoleComd.ExecuteNonQuery(); if(Succnum>0) MessageBox.Show(\"录入成功\"); } catch(Exception Ex) { MessageBox.Show(\"必须选择一个角色!\错误\"); } } } }

2.密码修改模块的设计与实现

密码修改模块负责登陆用户随时修改密码,保证密码的安全性。 (1)密码修改模块实现的功能

密码修改模块主要实现修改登陆用户的密码。 (2)密码修改模块实现的效果

密码修改模块的窗体设计效果如图2-13所示。

图2-13 密码修改模块的窗体效果

(3)密码修改模块的IPO图 功能:从登陆窗体中取得登陆成功的用户名,在数据库的Syuser表内查找该用户,并据此把输入的新密码写入到数据库内的Syuser表中。 输入:新密码和确认密码 处理:

1)密码修改窗体启动。

2)首先从登陆对话框Login内取得登陆系统的登陆用户的登陆用户名。

2)根据已经取得的登陆用户名在数据库StuMagSys的Syuser表内查找该用户,然后比较用户输入的新密码和确认密码,如果比较结果相同,则把新密码写入到相应记录内,如果两次输入不一致,则提示错误信息。 3)把用户的新密码记录到数据库内。 输出:对用户表进行记录修改 (4).密码修改模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data.SqlClient; using System.Data;

namespace StudentManagementsystem { public class ChgPsw : System.Windows.Forms.Form { private System.Windows.Forms.Button ChgPswCanl; private System.Windows.Forms.Button ChgPswOk; private System.Windows.Forms.TextBox ConfPsw; private System.Windows.Forms.TextBox NewPsw; private string PswStrCon; private SqlConnection PswConn; private String PswStrComd; private SqlCommand PswComd; /*此处省略程序自动生成的代码*/ private void ChgPswCanl_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出?\确认\ this.Close(); } private void ChgPswOk_Click(object sender, System.EventArgs e) { if(NewPsw.Text.ToString().Trim()==ConfPsw.Text.ToString().Trim())

{ PswStrCon=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; PswStrComd=\"update Syuser set Password=\"+\"'\"+NewPsw.Text.ToString().Trim()+\"'\"+\" where Use_name=\"+\"'\"+Login.Username+\"'\"; PswConn=new SqlConnection(PswStrCon); PswConn.Open(); PswComd=new SqlCommand(PswStrComd,PswConn); int Succnum=PswComd.ExecuteNonQuery(); if(Succnum>0) MessageBox.Show(\"密码修改成功\"); } else { MessageBox.Show(\"密码不一致,请重新输入\确认\ NewPsw.Text=\"\"; ConfPsw.Text=\"\"; } } } }

3.班级管理模块的设计与实现

班级管理模块负责登陆用户录入班级信息。 (1)班级管理模块实现的功能

班级管理模块主要实现录入班级信息。 (2)班级管理模块实现的效果

班级管理模块的窗体设计效果如图2-14所示。

图2-14 班级管理模块的窗体效果

(3)班级管理模块的IPO图 功能:用户输入要添加的班级信息,包括班级名称、所在年级和最大人数,录入信息到数据库内的class表中。 输入:班级名称、所在年级和最大人数 处理:

1)班级管理窗体启动。

2)把用户输入要添加的班级信息,包括班级名称、所在年级和最大人数信息录入到数据库StuMagSys内的class表中,如果成功则在class表内添加一条记录,给出成功信息。否则给出失败的提示信息。 输出:对班级表进行记录修改 (4)班级管理模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class NewClass : System.Windows.Forms.Form { private System.Windows.Forms.TextBox Grade; private System.Windows.Forms.TextBox ClassName; private System.Windows.Forms.TextBox MaxNum; private System.Windows.Forms.Button NewClassCanl; private System.Windows.Forms.Button NewClassOk; private string NewClassStrConn; private SqlConnection NewClassConn; private SqlCommand NewClassComd; /*此处省略程序自动生成的代码*/ private void NewClassOk_Click(object sender, System.EventArgs e) { try { string SqlStr=\"insert into

class(Class_name,grade,MaxNum)values\"+\"( \"+\"'\"+this.ClassName.Text.ToString().Trim()+\"'\"+\e.Text.ToString().Trim()+\"'\"+\ NewClassStrConn=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; NewClassConn=new SqlConnection(NewClassStrConn); NewClassConn.Open(); NewClassComd=new SqlCommand(SqlStr,NewClassConn); int Succnum=NewClassComd.ExecuteNonQuery(); if(Succnum>0) MessageBox.Show(\"录入成功\"); } catch(Exception Ex) { MessageBox.Show(Ex.ToString(),\"错误\"); } } private void NewClassCanl_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出?\确认\ this.Close(); } } }

4.课程管理模块的设计与实现

课程管理模块负责登陆用户随时课程信息,包括录入新开设的课程;修改已有课程的名称、学分;删除不再开设的课程等。

(1)课程管理模块实现的功能

课程管理模块主要实现课程信息的维护。 (2)课程管理模块实现的效果

课程管理模块的窗体设计效果如图2-15所示。

图2-15 课程管理模块的窗体效果

(3)课程管理模块的IPO图 1).增加新的课程

功能:在课程信息表中增加新的课程,并把结果写入到数据库StuMagSys内的course表中。 输入:新课程的名称和学分信息 处理:

 在数据库StuMagSys内的course表内检索课程信息,显示到窗体的DataGrid 控件

AddCourDA中。

 取得用户输入的新课程的名称和学分信息。

 在数据库StuMagSys内的course表内检索该课程,如果存在该课程,则提示错误

信息。

 如果不存在该课程信息,则把用户添加的新课程信息记录到数据库StuMagSys内

的course表中。

输出:对课程表course进行记录修改 2).删除课程

功能:在课程信息表中删除已有课程,并把结果写入到数据库内的course表中。 输入:选中一条课程记录 处理:

 在数据库StuMagSys内的course表内检索课程信息,显示到窗体的DataGrid 控件

AddCourDA中。

 在数据库StuMagSys内的course表内检索该课程,如果不存在该课程,则提示错

误信息。

 如果存在该课程信息,则把该课程信息记录从数据库StuMagSys内的course表中

删除。

 把数据表的改动记录到数据库内。 输出:对课程表进行记录修改

2).修改课程

功能:在课程信息表中修改课程信息,包括课程名称和学分,并把结果写入到数据库内的course表中。 输入:选中一条课程记录,输入修改信息 处理:

 在数据库StuMagSys内的course表内检索课程信息,显示到窗体的DataGrid 控件

AddCourDA中。

 在DataGrid 控件AddCourDA中录入修改的课程信息。  把对数据表course的改动记录到数据库内。 输出:对课程表进行记录修改 (4).课程管理模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class AddCourse : System.Windows.Forms.Form { private System.Windows.Forms.DataGrid CourList; private System.Windows.Forms.Button AddCour; private System.Windows.Forms.Button ChgCour; private System.Windows.Forms.Button DelCour; private System.Windows.Forms.Button ExitCour; private System.ComponentModel.Container components = null; private string AddCourConnStr=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private SqlConnection AddCourConn; private string AddCourSql; private SqlCommandBuilder AddCourComm; private SqlDataAdapter AddCourDA; private DataSet AddCourseset=new DataSet(); public AddCourse() { InitializeComponent(); this.AddCourse_Load(); } /*此处省略程序自动生成的代码*/ private void AddCourse_Load() { AddCourSql=\"select Course_name as 课程名,credit as 学分 from course\"; this.AddCourConn=new SqlConnection(this.AddCourConnStr); this.AddCourDA=new SqlDataAdapter(this.AddCourSql,this.AddCourConn); AddCourseset.Clear(); this.AddCourDA.Fill(AddCourseset,\"Course\"); CourList.DataSource=AddCourseset.Tables[0]; } private void ChgCour_Click(object sender, System.EventArgs e) { try { int row=this.CourList.CurrentCell.RowNumber; this.CourList.CurrentCell=new DataGridCell(row+1,0); if(AddCourseset.HasChanges()) { this.AddCourConn=new SqlConnection(this.AddCourConnStr); this.AddCourDA=new SqlDataAdapter(this.AddCourSql,this.AddCourConn); AddCourComm=new SqlCommandBuilder(AddCourDA); this.AddCourDA.Update(this.AddCourseset.GetChanges(),\"Course\"); MessageBox.Show(\"保存修改成功!\信息\");

} } catch(Exception Ee) { MessageBox.Show(Ee.ToString(),\"信息\"); } } private void ExitCour_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出本系统?\确认\ this.Close(); } private void DelCour_Click(object sender, System.EventArgs e) { int rowNumber=this.CourList.CurrentCell.RowNumber; try { this.AddCourseset.Tables[0].Rows[rowNumber].Delete(); this.AddCourConn=new SqlConnection(this.AddCourConnStr); AddCourDA=new SqlDataAdapter(\"\ AddCourComm=new SqlCommandBuilder(AddCourDA); AddCourDA.Update(this.AddCourseset.GetChanges(),\"Course\"); MessageBox.Show(\"删除成功!\信息\"); } catch {} } private void AddCour_Click(object sender, System.EventArgs e) { int row=this.CourList.VisibleRowCount; this.CourList.CurrentCell=new DataGridCell(row+1,0); } } }

5.4新生信息录入模块的设计与实现

新生信息录入模块负责登陆用户录入学生信息,包括必须输入的学生姓名,所在班级,入学日期等信息。

1.新生信息录入模块实现的功能

新生信息录入模块主要实现录入学生信息。 2.新生信息录入模块实现的效果

新生信息录入模块的窗体设计效果如图2-16所示。

图2-16 新生信息录入模块的窗体效果

设置

BirthdateTime ERdateTime Class

3.窗体和控件特殊属性的设置:

控件 ComboBox ComboBox

ComboBox

控件属性 Name Name Name

4.新生信息录入模块的IPO图 功能:用户输入要添加的学生信息,包括必须输入的学生姓名、所在班级、入学日期等信息,录入信息到数据库StuMagSys内的student表中。 输入:学生姓名、性别、年龄、出生日期、民族、籍贯、入学日期、班级、政治面貌、身份证号、职位和所学专业信息 处理:

(1)新生信息录入窗体启动。

(2)在数据库StuMagSys的class表检索班级信息,并显示在窗体的Class控件的下拉菜单内。

(3)用户输入新学生信息,检验输入是否完整,并核对是否符合标准,如果不符合则提示用户错误信息。

(4)如果检验通过,在数据库StuMagSys内的class表内根据用户输入的班级信息查找相应的班级号Class_id。以便于进行student表中的数据插入。 (5)在数据库StuMagSys内的student表中查找输入的学生姓名和班级,如果存在该信息,则表明输入重复,给出提示信息。

(6)否则,把用户输入要添加的学生信息录入到数据库StuMagSys内的student表中,给出成功的提示信息。 输出:对学生表student进行记录修改 5.新生信息录入模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem

{ public class NewStu : System.Windows.Forms.Form { private System.Windows.Forms.TextBox Stu_name; private System.Windows.Forms.TextBox Stu_sex; private System.Windows.Forms.TextBox Stu_age; private System.Windows.Forms.TextBox Stu_home; private System.Windows.Forms.TextBox Stu_nation; private System.Windows.Forms.TextBox Stu_specialty; private System.Windows.Forms.TextBox Stu_position; private System.Windows.Forms.TextBox Stu_idnum; private System.Windows.Forms.TextBox Stu_politic; private System.Windows.Forms.Button ExitNStu; private System.Windows.Forms.Button drawbackbutt; private System.Windows.Forms.Button InputnewStu; private SqlConnection NewStuConn; private SqlCommand NewStuComd; private string NewStuStrConn=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private string NewStuStrComd; private SqlDataAdapter NewStusqlda; private System.Windows.Forms.ComboBox Class; private System.Windows.Forms.DateTimePicker ERdateTime; private System.Windows.Forms.DateTimePicker BirthdateTime; public NewStu() { InitializeComponent(); this.NewStu_Load(); } /*此处省略程序自动生成的代码*/ private void NewStu_Load() { DataSet NewStudClassset=new DataSet(); string NewStuStrConnSql=\"select Class_name from class\"; this.NewStuConn=new SqlConnection(this.NewStuStrConn); this.NewStusqlda=new SqlDataAdapter(NewStuStrConnSql,this.NewStuConn); NewStudClassset.Clear(); this.NewStusqlda.Fill(NewStudClassset,\"Class\"); for(int i=0;i\ this.Close(); } //输入新学生代码 private void InputnewStu_Click(object sender, System.EventArgs e) { try { string date=this.ERdateTime.Value.Date.ToString();; if(date==\"\"||this.Stu_name.Text==\"\")//保证学生姓名和入学日期必须得到填写 { MessageBox.Show(\"学生姓名、入学时间、班级必须填写!\提示\"); } else { DataSet NewStudClassset=new DataSet(); //首先需要检索出学生的班级号才可以在学生表中进行插入新记录 string NewStuStrConnSql=\"select Class_id from class where Class_name=\"+\"'\"+this.Class.SelectedItem.ToString().Trim()+\"'\"; this.NewStuConn=new SqlConnection(this.NewStuStrConn); this.NewStusqlda=new SqlDataAdapter(NewStuStrConnSql,this.NewStuConn); NewStudClassset.Clear(); this.NewStusqlda.Fill(NewStudClassset,\"Class\"); string ClassId=NewStudClassset.Tables[0].Rows[0][0].ToString().Trim(); //检索数据库内是否已经有同名的记录 DataSet NewStu=new DataSet(); string ExStu=\"select * from student where

student_name=\"+\"'\"+this.Stu_name.Text.ToString().Trim()+\"'\"+\" and class_id=\"+\"'\"+ClassId+\"'\"; this.NewStuConn=new SqlConnection(this.NewStuStrConn); this.NewStusqlda=new SqlDataAdapter(ExStu,this.NewStuConn); NewStu.Clear(); this.NewStusqlda.Fill(NewStu,\"student1\"); if(NewStu.Tables[0].Rows.Count==0) { //在学生表中插入新纪录 NewStuStrComd=\"insert into

student(student_name,sex,Entrance_date,Class_id,Birth,Nation,home,politic,ID,Job,specialty)values\"+ \"(\"+\"'\"+Stu_name.Text.ToString().Trim()+\"'\"+\ \ this.Stu_nation.Text.ToString().Trim()+\"'\"+\ this.Stu_politic.Text.ToString().Trim()+\"'\"+\Stu_position.Text.ToString().Trim()+\"'\"+\ NewStuConn=new SqlConnection(NewStuStrConn); NewStuConn.Open(); NewStuComd=new SqlCommand(NewStuStrComd,NewStuConn); int Succnum=NewStuComd.ExecuteNonQuery(); if(Succnum>0) MessageBox.Show(\"录入成功\"); } else { MessageBox.Show(\"录入信息重复。\确认\"); } } } catch(Exception Ex) { MessageBox.Show(\"该生已经录入或类型不匹配。\确认\ } } }

}

5.5学生信息查询模块的设计与实现

学生信息查询模块负责根据查询条件查询学生信息。 1.学生信息查询模块实现的功能

学生信息查询模块主要实现查询学生信息,并显示学生信息。 2.学生信息查询模块实现的效果

学生信息查询模块的窗体设计效果如图2-17所示。

图2-17 学生信息查询模块的窗体效果

设置 ClassList QryStuDg

3.窗体和控件特殊属性的设置:

控件 ComboBox DataGrid

控件属性 Name Name

4.学生信息查询模块的IPO图 功能:用户输入要检索的条件,可以按照学生姓名检索,也可以按照学生所在班级检索,显示检索结果。 输入:学生姓名或学生所在班级 处理:

(1)学生信息查询窗体启动。

(2)在数据库StuMagSys的class表检索班级信息,并显示在窗体的ClassList控件的下拉菜单内。 (3)如果用户输入学生姓名作为检索条件,则在数据库StuMagSys的student表内检索学生姓名为给定条件的学生信息,显示检索结果。 (4)如果用户输入学生所在班级作为检索条件,则在数据库StuMagSys的student表内检索学生班级号为给定条件的学生信息,显示检索结果。 输出:显示检索结果输出到窗体的QryStuDg控件内。 5.学生信息查询模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class QueryStu : System.Windows.Forms.Form { private System.Windows.Forms.TextBox QryStuName; private System.Windows.Forms.Button ExitQryStu; private System.Windows.Forms.DataGrid QryStuDg; private System.Windows.Forms.Button QryStuN; private System.Windows.Forms.Button QueryStuClass; private System.Windows.Forms.ComboBox ClassList; private string QryStustrconn; private string QryStuconnstr=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private SqlDataAdapter QryStusqlda; private SqlConnection QrySconn; private System.ComponentModel.Container components = null; public QueryStu() { InitializeComponent(); this.QueryStu_Load(); } /*此处省略程序自动生成的代码*/ //检索数据库表class,并把检索结果填充到班级列表 private void QueryStu_Load() { DataSet QryStudClassset=new DataSet(); QryStustrconn=\"select Class_name from class\"; this.QrySconn=new SqlConnection(this.QryStuconnstr); this.QryStusqlda=new SqlDataAdapter(this.QryStustrconn,this.QrySconn); QryStudClassset.Clear(); this.QryStusqlda.Fill(QryStudClassset,\"Class\"); for(int i=0;i{ MessageBox.Show(\"检索学生信息失败。\信息\"); } } private void ExitQryStu_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出?\确认\ this.Close(); } //按照学生所在的班级检索学生信息 private void QueryStuClass_Click(object sender, System.EventArgs e) { try { DataSet QryStudset =new DataSet(); QryStustrconn=\"select Student_id as 学号,Student_name as 姓名,Sex as 性别,Birth as 出生年月,Nation as 民族,student.Class_id as 班级,Entrance_date as 入学时间,home as 家庭地址,politic as 政治面貌,ID as 身份证号,Job as 职位,specialty as 所学专业 from student,class where

class.class_id=student.class_id and class.Class_name=\"+\"'\"+this.ClassList.SelectedItem.ToString().Trim()+\"'\"; QrySconn=new SqlConnection(QryStuconnstr); QryStusqlda=new SqlDataAdapter(QryStustrconn,QrySconn); QryStudset.Clear(); QryStusqlda.Fill(QryStudset,\"Class_id\"); QryStuDg.DataSource=QryStudset.Tables[0]; } catch { MessageBox.Show(\"检索学生信息失败。\信息\"); } } } }

5.6更新学生信息模块的设计与实现

更新学生信息模块负责登陆用户修改学生信息。 1.更新学生信息模块实现的功能

更新学生信息模块主要实现录入班级信息。 2.更新学生信息模块实现的效果

更新学生信息模块的窗体设计效果如图2-18所示。

图2-18 更新学生信息模块的窗体效果

3.更新学生信息模块的IPO图

功能:用户查找学生信息,并输入新的信息,进行修改。。 输入:学号、姓名、性别、出生年月、民族、班级、入学时间 处理:

(1)班级管理窗体启动。

(2)在数据库StuMagSys的class表检索班级信息,并显示在窗体的QryStuCla控件的下拉菜单内。

(3)用户输入检索条件查找需要修改的学生信息。如果用户输入学生姓名作为检索条件,则在数据库StuMagSys的student表内检索学生姓名为给定条件的学生信息,显示检索结果。 (4)如果用户输入学生所在班级作为检索条件,则在数据库StuMagSys的student表内检索学生班级号为给定条件的学生信息,显示检索结果。 (5)在窗体DataGrid控件UpdStuGrdDg内输入更新信息。

(6)把用户输入要修改的学生信息,包括姓名、班级信息录入到数据库StuMagSys内的student表中,录入成功,给出成功信息。否则给出失败信息。 输出:对学生表进行记录修改 4.更新学生信息模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class UpdateStu : System.Windows.Forms.Form { private System.Windows.Forms.Button QueryStuClass; private System.Windows.Forms.Button QryStuN; private System.Windows.Forms.DataGrid UpdStuGrdDg; private System.Windows.Forms.TextBox QryStuName;

private System.Windows.Forms.Button SaveChg; private System.Windows.Forms.Button ExitUpdStu; private string UpdStustrconnName; private string UpdStustrconnClass; private SqlConnection UpdSconn; private string UpdStuconnstr=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private SqlDataAdapter UpdStuGrdsqlda; private DataSet UpdClassStudset =new DataSet(); private DataSet UpdNameStudset =new DataSet(); private SqlCommandBuilder SqlComm; private string initStringSql=\"select Student_id as 学号,Student_name as 姓名,Sex as 性别,Birth as 出生年月,Nation as 民族,Class_id as 班级,Entrance_date as 入学时间,home as 家庭地址,politic as 政治面貌,ID as 身份证号,Job as 职位,specialty as 所学专业 from Student\"; private System.Windows.Forms.Button DelRecord; private System.Windows.Forms.ComboBox QryStuCla; /*此处省略程序自动生成的代码*/ //在数据库中检索班级名称并填充到班级列表 private void UpdateStu_Load() { DataSet UpdStudClaset=new DataSet(); initStringSql=\"select Class_name from class\"; this.UpdSconn=new SqlConnection(this.UpdStuconnstr); this.UpdStuGrdsqlda=new SqlDataAdapter(this.initStringSql,this.UpdSconn); UpdStudClaset.Clear(); this.UpdStuGrdsqlda.Fill(UpdStudClaset,\"Class\"); for(int i=0;i别,Birth as 出生年月,Nation as 民族,Class_id as 班级,Entrance_date as 入学时间,home as 家庭地址,politic as 政治面貌,ID as 身份证号,Job as 职位,specialty as 所学专业 from student where student_name=\"+\"'\"+this.QryStuName.Text.ToString().Trim()+\"'\"; UpdSconn=new SqlConnection(UpdStuconnstr); UpdStuGrdsqlda=new SqlDataAdapter(UpdStustrconnName,UpdSconn); UpdNameStudset.Clear(); UpdStuGrdsqlda.Fill(UpdNameStudset,\"student\"); UpdStuGrdDg.DataSource=UpdNameStudset.Tables[0]; } catch { MessageBox.Show(\"查询失败。\确认\"); } }

//根据学生班级查询学生信息 private void QueryStuClass_Click(object sender, System.EventArgs e) { try { UpdStustrconnClass=\"select Student_id as 学号,Student_name as 姓名,Sex as 性别,Birth as 出生年月,Nation as 民族,student.Class_id as 班级,Entrance_date as 入学时间,home as 家庭地址,politic as 政治面貌,ID as 身份证号,Job as 职位,specialty as 所学专业 from student,class where

class.class_id=student.class_id and class.Class_name=\"+\"'\"+this.QryStuCla.SelectedItem.ToString().Trim()+\"'\"; UpdSconn=new SqlConnection(UpdStuconnstr); UpdStuGrdsqlda=new SqlDataAdapter(UpdStustrconnClass,UpdSconn); UpdClassStudset.Clear(); UpdStuGrdsqlda.Fill(UpdClassStudset,\"student\"); UpdStuGrdDg.DataSource=UpdClassStudset.Tables[0]; } catch { MessageBox.Show(\"查询失败。\确认\"); } } //保存修改 private void SaveChg_Click(object sender, System.EventArgs e) { try { int row=this.UpdStuGrdDg.CurrentCell.RowNumber; this.UpdStuGrdDg.CurrentCell=new DataGridCell(row+1,0); if(UpdClassStudset.HasChanges())//如果改动是在根据学生班级检索的结果集上进行的那么,更改该结果集 { UpdSconn=new SqlConnection(UpdStuconnstr); UpdStuGrdsqlda=new SqlDataAdapter(this.UpdStustrconnClass,this.UpdSconn); SqlComm=new SqlCommandBuilder(UpdStuGrdsqlda); this.UpdStuGrdsqlda.Update(this.UpdClassStudset.GetChanges(),\"student\"); MessageBox.Show(\"保存修改成功!\信息\"); } else if(UpdNameStudset.HasChanges()//如果改动是在根据学生姓名检索的结果集上进行的那么,更改该结果集 { UpdSconn=new SqlConnection(UpdStuconnstr); UpdStuGrdsqlda=new SqlDataAdapter(this.UpdStustrconnName,UpdSconn); SqlComm=new SqlCommandBuilder(UpdStuGrdsqlda); UpdStuGrdsqlda.Update(this.UpdNameStudset.GetChanges(),\"student\"); MessageBox.Show(\"保存修改成功!\信息\"); } } catch { MessageBox.Show(\"保存修改失败。\信息\"); } } //删除学生记录 private void DelRecord_Click(object sender, System.EventArgs e) { int rowNumber=this.UpdStuGrdDg.CurrentCell.RowNumber; try { this.UpdClassStudset.Tables[0].Rows[rowNumber].Delete(); this.UpdNameStudset.Tables[0].Rows[rowNumber].Delete(); UpdSconn=new SqlConnection(UpdStuconnstr); UpdStuGrdsqlda=new SqlDataAdapter(\"\ SqlComm=new SqlCommandBuilder(UpdStuGrdsqlda); UpdStuGrdsqlda.Update(this.UpdNameStudset.GetChanges(),\"student\"); UpdStuGrdsqlda.Update(this.UpdClassStudset.GetChanges(),\"student\");

}

}

}

MessageBox.Show(\"删除成功!\信息\"); } catch { MessageBox.Show(\"删除失败,请重试。\信息\"); }

5.7学生成绩录入模块的设计与实现

学生成绩录入模块负责登陆用户录入学生每次考试成绩。 1.学生成绩录入模块实现的功能

学生成绩录入模块主要实现录入学生考试成绩。 2.学生成绩录入模块实现的效果

学生成绩录入模块的窗体设计效果如图2-19所示。

图2-19 学生成绩录入模块的窗体效果

3.学生成绩录入模块的IPO图 功能:用户输入要添加的学生成绩信息,包括学生姓名、所在班级、考试课程、考试成绩、考试时间,录入信息到数据库内的student_course表中。 输入:学生姓名、所在班级、考试课程、考试成绩、考试学年和考试学期 处理:

(1)学生成绩录入窗体启动。

(2)在数据库StuMagSys的class表检索班级信息,并显示在窗体的GrdClass控件的下拉菜单内。在数据库StuMagSys的course表检索课程信息,并显示在窗体的CourseCB控件的下拉菜单内。

(3)用户录入学生成绩信息,包括学生姓名、所在班级、考试课程、考试成绩、考试学年和考试学期。

(4)在数据库StuMagSys内的class表内根据用户输入的班级名称查找相应的班级号Class_id。以便于进行student表中的数据插入。

(5)把用户输入要添加的考试信息,包括学生姓名、所在班级、考试课程、考试成绩、考试学年和考试学期录入信息到数据库StuMagSys内的student_course表中,如果录入成功,则给出成功信息,否则给出失败的提示信息。 输出:对学生成绩表student_course进行记录修改。 4.学生成绩录入模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class InputGrade : System.Windows.Forms.Form { private System.Windows.Forms.Button drawbackbutt; private System.Windows.Forms.TextBox Stu_name; private System.Windows.Forms.Button ExitNGrd; private System.Windows.Forms.Button InputnewGrd; private System.Windows.Forms.TextBox Grdsem; private System.Windows.Forms.TextBox GrdYear; private System.Windows.Forms.TextBox Grade; private SqlConnection NewGrdConn; private SqlCommand NewGrdComd; private string NewGrdStrConn=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private string NewGrdStrComd; private SqlDataAdapter NewGrdsqlda; private System.Windows.Forms.ComboBox GrdClass; private System.Windows.Forms.ComboBox CourseCB; public InputGrade() { InitializeComponent(); this.InputGrade_Load(); } /*此处省略程序自动生成的代码*/ //添加窗体的班级列表和课程列表 private void InputGrade_Load() { DataSet NewGrddClassset=new DataSet(); string NewGrdStrConnSql=\"select Class_name from class\"; this.NewGrdConn=new SqlConnection(this.NewGrdStrConn); this.NewGrdsqlda=new SqlDataAdapter(NewGrdStrConnSql,this.NewGrdConn); NewGrddClassset.Clear(); this.NewGrdsqlda.Fill(NewGrddClassset,\"Class\"); for(int i=0;i{ if(MessageBox.Show(\"您确认要退出?\确认\ this.Close(); } //撤销按钮 private void drawbackbutt_Click(object sender, System.EventArgs e) { this.Grade.Text=\"\"; this.Stu_name.Text=\"\"; this.GrdYear.Text=\"\"; this.Grdsem.Text=\"\"; } //添加按钮 private void InputnewGrd_Click(object sender, System.EventArgs e) { try { //检验输入数据是否符合要求 if(this.GrdClass.Text==\"\"||this.Grdsem.Text==\"\"||this.GrdYear.Text==\"\"||this.Grade.Text==\"\") { MessageBox.Show(\"学生姓名、成绩、课程名称、学期、学年必须填写!\提示\"); } else { DataSet NewGrddClassset=new DataSet(); //查询学生所在班级的班级号 string NewGrdStrConnSql=\"select course.course_id,student.student_id from student,course,student_course,class where student.class_id=class.class_id and class.class_name=\"+\"'\"+this.GrdClass.SelectedItem.ToString().Trim()+\"'\"+\" and student.student_name=\"+\"'\"+this.Stu_name.Text.ToString().Trim()+\"'\"+\" and

\"+\"course.course_name=\"+\"'\"+this.CourseCB.SelectedItem.ToString().Trim()+\"'\"; this.NewGrdConn=new SqlConnection(this.NewGrdStrConn); this.NewGrdsqlda=new SqlDataAdapter(NewGrdStrConnSql,this.NewGrdConn); NewGrddClassset.Clear(); this.NewGrdsqlda.Fill(NewGrddClassset,\"Class\"); string courseId=NewGrddClassset.Tables[0].Rows[0][0].ToString().Trim(); string StuId=NewGrddClassset.Tables[0].Rows[0][1].ToString().Trim(); //插入一条新记录 NewGrdStrComd=\"insert into

Student_course(student_id,Course_id,Grade,SC_semester,School_year)values\"+ \"(\"+\"'\"+StuId+\"'\"+\ \ this.Grdsem.Text.ToString().Trim()+\"'\"+\ NewGrdConn=new SqlConnection(NewGrdStrConn); NewGrdConn.Open(); NewGrdComd=new SqlCommand(NewGrdStrComd,NewGrdConn); int Succnum=NewGrdComd.ExecuteNonQuery(); if(Succnum>0) MessageBox.Show(\"录入成功\"); } } catch { MessageBox.Show(\"姓名或班级输入有误!请重新输入。\确认\ } } } }

5.8学生成绩查询模块的设计与实现

学生成绩查询模块负责登陆用户查询学生考试信息。 1.学生成绩查询模块实现的功能

学生成绩查询模块主要实现查询学生考试信息。 2.学生成绩查询模块实现的效果

学生成绩查询模块的窗体设计效果如图2-20所示。

图2-20 学生成绩查询模块的窗体效果

3.窗体和控件特殊属性的设置:

控件 控件属性 设置 ComboBox Name Class DataGrid Name QryStuGrdDg

4.学生成绩查询模块的IPO图 功能:用户输入检索条件,包括按照学生姓名和按照学生所在班级检索,到数据库student_course表内检索,并显示学生成绩信息。 输入:学生姓名或学生所在班级 处理:

(1)学生成绩查询窗体启动。

(2)在数据库StuMagSys的class表检索班级信息,并显示在窗体的GrdClass控件的下拉菜单内。

(3)如果用户输入学生姓名作为检索条件,则在数据库StuMagSys的student,student_course表内检索学生姓名为给定条件的学生信息,显示检索结果。

(4)如果用户输入学生所在班级作为检索条件,则在数据库StuMagSys的student,student_course、class表内检索学生班级号为给定条件的学生信息,显示检索结果。 输出:检索结果显示在QryStuGrdDg控件内。 5.学生成绩查询模块的主要代码

using System;

using System.Drawing; using System.Collections;

using System.ComponentModel;

using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace StudentManagementsystem { public class QueryStuGrade : System.Windows.Forms.Form { private System.Windows.Forms.Button QueryStuClass; private System.Windows.Forms.Button ExitQryStu; private System.Windows.Forms.Button QryStuN; private System.Windows.Forms.DataGrid QryStuGrdDg; private System.Windows.Forms.TextBox QryStuName; private string QryStugrdstrconn; private SqlConnection QrySgrdconn; private string QryStuGrdconnstr=\"workstation id=localhost;Integrated Security=SSPI;database=StuMagSys\"; private SqlDataAdapter QryStuGrdsqlda; private System.Windows.Forms.ComboBox Class; public QueryStuGrade() { InitializeComponent(); this.QueryStuGrade_Load(); } /*此处省略程序自动生成的代码*/ //设置班级列表 private void QueryStuGrade_Load() { DataSet QryStudClassset=new DataSet(); QryStugrdstrconn=\"select Class_name from class\"; this.QrySgrdconn=new SqlConnection(this.QryStuGrdconnstr); this.QryStuGrdsqlda=new SqlDataAdapter(this.QryStugrdstrconn,this.QrySgrdconn); QryStudClassset.Clear(); this.QryStuGrdsqlda.Fill(QryStudClassset,\"Class\"); for(int i=0;iprivate void ExitQryStu_Click(object sender, System.EventArgs e) { if(MessageBox.Show(\"您确认要退出本系统?\确认\ this.Close(); } private void QueryStuClass_Click(object sender, System.EventArgs e) { try { DataSet QryStuGrddset =new DataSet(); QryStugrdstrconn=\"select student_name as 学生姓名,student_course.grade as 成绩,SC_semester as 学期,School_year as 学年 from student,student_course,class where student.student_id=student_course.student_id and student.Class_id=Class.Class_id and Class.Class_name=\"+\"'\"+this.Class.SelectedItem.ToString().Trim()+\"'\"; QrySgrdconn=new SqlConnection(QryStuGrdconnstr); QryStuGrdsqlda=new SqlDataAdapter(QryStugrdstrconn,QrySgrdconn); QryStuGrddset.Clear(); QryStuGrdsqlda.Fill(QryStuGrddset,\"Student_course\"); QryStuGrdDg.DataSource=QryStuGrddset.Tables[0]; } catch { MessageBox.Show(\"没有该学生的成绩信息。\信息\"); } } } }

因篇幅问题不能全部显示,请点此查看更多更全内容