第11章 学生信息管理系统开发.docx
- 文档编号:13144938
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:22
- 大小:311.47KB
第11章 学生信息管理系统开发.docx
《第11章 学生信息管理系统开发.docx》由会员分享,可在线阅读,更多相关《第11章 学生信息管理系统开发.docx(22页珍藏版)》请在冰点文库上搜索。
第11章学生信息管理系统开发
第11章学生信息管理系统开发
11.1系统分析与设计
11.1.1需求分析
随着学校规模不断扩大,学生数量也在急剧增加,为此,需要借助软件技术开发一个学生信息管理系统来提高学生管理工作的效率。
本章使用C#开发学生信息管理系统。
本系统分为学生、教师和管理员三种角色,各个角色具有的功能如下:
1.学生功能模块有以下几项:
(1)学生登录:
输入学生姓名,填写正确的密码,选择学生身份进行登录.
(2)个人信息模块:
学生可以查看及更改个人信息
(3)课程管理模块:
学生可以查看、添加、删除选修课程的信息。
(4)成绩查询模块:
学生可以按照年度名和课程名对课程成绩进行查询。
(5)登录密码修改模块:
学生可以修改个人密码。
2.教师功能模块有以下几项:
(1)教师登录:
输入教师名和密码,选择教师身份进行登录
(2)成绩管理模块:
教师可以录入、查询并更改所教课的所有学生的成绩
(3)课程管理模块:
教师可以查询、添加、删除、修改所开设课程的信息。
(4)登录密码修改模块:
教师可以修改个人密码
3.管理员功能模块有以下几项:
(1)管理员登录:
输入管理员名称,填写正确的密码,选择管理员身份进行登录.
(2)班级管理模块:
班级信息的浏览、查询、编辑、增加和删除。
(3)成绩管理模块:
按照课程号、课程名称、班级、教师号、学生学号,并结合年度进行某门课的成绩查询;可以对现实的成绩进行修改;可以按照学号、课程、年度和学期录入新的学生成绩。
(4)学生管理模块:
可以按照学号、姓名查询学生信息,对学生信息进行编辑、添加和删除。
(5)教师管理模块:
可以按照教师号、姓名查询教师信息,对教师进行编辑、添加和删除。
(6)管理员管理模块:
可以提升教师成为管理员,对已有管理员信息进行编辑、添加和删除。
11.1.2系统总体设计
系统的功能模块图如图11-1所示。
图11-1系统功能模块图
11.1.3数据库设计
本系统共包含6张表,如表11-1~表11-6所示。
表11-1学生表(student)
字段名
字段类型
字段说明
S_no
Char(10)
学生学号(主键)
S_name
Char(20)
学生姓名
S_sex
Char
(2)
学生性别
S_birthday
datetime
学生生日
S_department
Char(10)
学生系别
grade
Char(10)
学生年级
表11-2教师表(teacher)
字段名
字段类型
字段说明
T_no
Char(10)
教师号(主键)
T_name
Char(20)
教师姓名
T_sex
Char
(2)
教师性别
T_duty
Char(10)
教师职称
表11-3课程表(course)
字段名
字段类型
字段说明
C_no
Char(10)
课程号(主键)
C_name
Char(20)
课程名
C_type
Char(10)
课程类型
C_score
Int
学分
T_no
Char(10)
教师号
grade
Char(20)
学生年级
表11-4选课表(choice)
字段名
字段类型
字段说明
S_no
Char(10)
学生学号(主键,外键)
C_no
Char(10)
课程号(主键,外键)
score
Int
所选课程的分数
表11-5用户信息(userinfo)
字段名
字段类型
字段说明
Userid
Char(10)
用户登录号(主键)
Username
Char(20)
用户名
passwd
Char(20)
用户密码
role
Char(30)
角色
表11-6班级表(class)
字段名
字段类型
字段说明
grade
Char(20)
年级
class
Char(10)
班级
11.1.4文件列表
表11-7列出本系统中的文件及其所对应的模块功能描述。
表11-7文件列表
模块名
文件名
模块功能描述
登录模块
LoginForm.cs
选择不同身分进行登录
学生模块
MainForm.cs
学生模块的父窗体,可在菜单下选择打开相应的功能窗体
查看学生信息
MDIecs.cs
当窗体加载时在DataGridView中显示登录学生本人的信息
修改学生信息
MDIa.cs
学生可以修改除学号外的自己所有信息
个人选课信息
MDIb.cs
查看、添加、删除选修课程的信息
个人成绩查询
MDIc.cs
学生可以按照年度名和课程名对课程成绩进行查询
修改个人密码
MDId.cs
学生登录后可修改自己的密码
教师模块
Formteacher.cs
教师模块的父窗体,可在菜单下选择打开相应的功能窗体
成绩查询
MDIx1.cs
教师可以查询所教课的所有学生的成绩
成绩录入及更改
MDIx.cs
教师可以录入、更改所教课的所有学生的成绩
课程查询
MDIy1.cs
教师可以查询所开设课程的信息
添加删除修改
MDIy.cs
教师可以查询、添加、删除、修改所开设课程的信息
管理员模块
Form1.cs
管理员模块的父窗体,可在菜单下选择打开相应的功能窗体
浏览班级信息
MDI9.cs
班级信息的浏览
班级管理其他功能
MDI91.cs
班级信息的查询、编辑、增加和删除
成绩查询
MDI10.cs
可按照课程号、课程名称等查询成绩
成绩修改
MDI11.cs
可以对成绩进行修改,可以按照学号等录入新的学生成绩
查询学生信息
MDI1.cs
可以按照学号、姓名查询学生信息
学生管理其他功能
MDI5.cs
可以对学生信息进行编辑、添加和删除
教师信息查询
MDI13.cs
可以按照教师号、姓名查询教师信息
教师信息修改
MDI14.cs
可以对教师进行编辑、添加和删除
提升管理员
MDI4.cs
现在的管理员提升新的管理员
关于开发人员信息
Designer.cs
开发人员信息介绍
11.2详细设计
11.2.1三层结构
在软件体系结构中,分层结构是最重要的一种结构。
一个良好的应用程序模式,不仅可以方便软件的开发与维护,而且可以保证系统的性能。
下面就微软推荐的三层结构给以简要介绍。
在中小型应用程序开发中,备受推崇的是三层结构模式。
三层结构模式是指将应用程序的体系结构划分为表示层、业务层和数据层。
1.表示层:
显示数据和接受用户输入的数据,仅仅提供应用程序与用户进行交互的界面。
2.业务层:
实现应用程序的业务功能,通过封装好的方法对数据层提供的数据进行业务处理,并将处理好的结果传送给表示层。
业务层是表示层和数据层的桥梁,表示层调用业务层的方法,而业务层接受数据层返回的结果。
3.数据层:
与数据库直接进行操作,实现数据的保存和读取操作。
在三层模式中,表示层和业务层均不包含任何对数据库直接操作的代码,客户端必须通过业务层才能访问数据层,避免用户直接操作数据层,保证了数据的安全性。
另外,由于表示层、业务层和数据层完全分离,当用户界面或数据库发生变化时,不需要对系统进行重新开发,只需要在现有系统的基础上做简单调整即可,降低了开发和维护的成本。
表示层、业务层和数据层之间的关系如图11-2所示。
图11-2三层之间的关系图
11.2.2三层结构的搭建
1.搭建表示层
打开VisualStudio2005,选择“文件—>新建—>项目”,弹出如图11-3所示的“新建项目”对话框。
图11-3“新建项目”对话框
在“新建项目”对话框中,“模板”选择“Windows应用程序”;在“名称”一栏中输入项目名,这里我们输入“MyProject”;“位置”列表框中选择项目生成的路径;“解决方案名称”中输入解决方案名,这里输入“MyProject”。
设置完毕后,单击“确定”。
此时便在VisualStudio2005中创建了一个解决方案MyProject,如图11-4所示。
图11-4设计界面
2.搭建业务层
在图11-4所示的窗口中,选择“文件—>新建—>项目”,弹出如图11-3所示的“新建项目”对话框,“模板”选择“类库”,“名称”输入类库的名称“MyProjectBLL”,“解决方案”下拉列表中选择“添入解决方案”。
最后,单击“确定”。
此时便在解决方案“MyProject”中增加了一个类库MyProjectBLL。
3.搭建数据层
与搭建业务层类似,向解决方案中添加一个类库,名称为“MyProjectDAL”。
至此,解决方案资源管理器如图11-5所示。
图11-5“解决方案资源管理器”对话框
4.添加各层之间的依赖
创建好表示层、业务层和数据层之后,为使三层之间协同工作,需要添加表示层对业务层的依赖、业务层对数据层的依赖。
(1)添加表示层对业务层的依赖
图11-6“解决方案资源管理器”
在图11-6所示的“引用”位置处单击右键,选择“添加引用”,弹出如图11-7所示的“添加引用”对话框。
图11-7“添加引用”对话框
在“添加引用”对话框中,选择“项目”选项卡,选择业务层“MyProjectBLL”,单击“确定”。
这时返回到“资源管理器”,在表示层的MyProject的引用中便添加了一项“MyProjectBLL”,如图11-8所示。
图11-8添加表示层对业务层依赖的“解决方案资源管理器”
(2)添加业务层对数据层的依赖
添加业务层对数据层的依赖与
(1)中添加表示层对业务层的依赖相似,读者可仿照上述过程进行添加,这里不再赘述。
11.3系统实现
11.3.1登陆窗体
1.界面设计
登录窗体运行后的效果如图11-9所示。
图11-9登陆窗体
2.功能说明
用户通过该窗体实现登陆。
用户角色为“学生”时,输入用户名和密码之后登陆到学生管理的主界面;用户角色为“教师”时,输入用户名和密码之后登陆到教师管理的主界面;用户角色为“管理员”时,输入用户名和密码之后登陆到管理员管理的主界面。
3.代码说明
在登陆窗体所对应的类LoginForm.cs中定义了三个公有的静态的布尔类型的变量LoginOrNot1、LoginOrNot2和LoginOrNot3,分别代表学生身份、教师身份和管理员身份登陆是否成功。
在Program.cs文件中根据它们的值为True还是False,决定显示哪个主窗体。
staticclassProgram
{
staticvoidMain()
{
LoginFormlog=newLoginForm();
log.ShowDialog();
if(LoginForm.loginOrNot1==true)
Application.Run(newMainForm());//显示学生管理主窗体
elseif(LoginForm.loginOrNot2==true)
Application.Run(newFormteacher());//显示教师管理主窗体
elseif(LoginForm.loginOrNot3==true)
Application.Run(newForm1());//显示管理员管理主窗体
}
}
“登陆”窗体“确定”按钮的Click事件关键代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(this.textBox1.Text.Trim()=="")
{
MessageBox.Show("请输入用户号:
","信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
elseif(this.textBox2.Text.Trim()=="")
{
MessageBox.Show("请输入密码:
","信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
//业务层调用数据层访问数据库中某用户名的密码,结果以字符串str返回
//此处代码省略
……
if(textBox2.Text.Trim()==str.Trim())
{
if(comboBox1.SelectedIndex!
=-1)
{
if(comboBox1.SelectedItem.ToString()=="学生")
{
StudentInfostu=newStudentInfo();
stringstuID=stu.Login(textBox1.Text.Trim(),textBox2.Text.Trim());
if(stuID!
=string.Empty)
{
GlobalInfo.StuID=stuID;
loginOrNot1=true;
this.Close();
}
else
{
MessageBox.Show("用户号或密码错误,请重新输入","信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
elseif(comboBox1.SelectedItem.ToString()=="教师")
{
StudentInfostu1=newStudentInfo();
stringteacherID=stu1.Login(textBox1.Text.Trim(),textBox2.Text.Trim());
if(teacherID!
=string.Empty)
{
GlobalInfo.TeacherID=teacherID;
loginOrNot2=true;
this.Close();
}
else
{
MessageBox.Show("用户号或密码错误,请重新输入","信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else
{
StudentInfostu3=newStudentInfo();
stringadminID=stu3.Login(textBox1.Text.Trim(),textBox2.Text.Trim());
if(adminID!
=string.Empty)
{
GlobalInfo.AdminID=adminID;
loginOrNot3=true;
this.Close();
}
else
{
MessageBox.Show("用户号或密码错误,请重新输入","信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
else
MessageBox.Show("请选择用户角色","询问",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("密码错误,请重新输入","询问",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox2.Text="";
}
}
}
11.3.2学生个人信息模块
1.界面设计
运行效果如图11-10所示。
图11-10学生个人信息的窗体
2.功能说明
选择“学生”身份成功登陆之后,选择“学生个人信息—>查看信息”菜单项,可以在图11-10所示的窗体中显示登陆者本人的信息。
3.代码说明
本窗体主要用来显示信息的,所以代码比较简单,仅涉及到将从数据库中读取出来的数据显示到控件上。
这里需要说明的是,用户在进行登陆之后,需要保存登陆用户的ID号。
所以在程序中建立了一个类GlobalInfo,它用来保存用户ID号。
在该类中,分别定义了三个静态的公有的字符串类型的属性StuID、TeacherID和AdminID,分别保存登陆的学生、教师、管理员的ID号。
本模块对应的数据层中,主要根据登陆的学生的ID来查询学生的信息,其关键代码如下:
SqlConnectionconn=newSqlConnection(Constants.Con);
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromstudentwheres_no=@sno",conn);
SqlDataAdaptersda=newSqlDataAdapter();
sda.SelectCommand=cmd;
//通过GlobalInfo类的StuID属性来获得登陆的学生ID
SqlParameterpar=newSqlParameter("@sno",MyProject.Student.GlobalInfo.StuID);
cmd.Parameters.Add(par);
DataSetds=newDataSet();
sda.Fill(ds);
11.3.3个人选课模块
1.界面设计
运行效果如图11-11所示。
图11-11个人选课信息窗体
2.功能说明
在本模块中,既可以查看本人已选修的全部课程,还可以添加新的选修课,或删除某门已经选修的课程。
3.代码说明
“添加”某门选修课,首先需要依据添加的课程名到课程表中查找其所对应的课程号,然后向选课表中插入一条记录。
其关键代码如下:
SqlConnectioncon=newSqlConnection(Constants.Con);
con.Open();
SqlCommandcmd=newSqlCommand("declare@cnochar(10)set@cno=(selectc_nofromcoursewherec_name=@name)insertintochoicevalues(@no,@cno,null)",con);
SqlDataAdapterda=newSqlDataAdapter();
da.SelectCommand=cmd;
SqlParameterpara1=newSqlParameter("@no",MyProject.Student.GlobalInfo.StuID);
SqlParameterpara2=newSqlParameter("@name",textBox2.Text);
cmd.Parameters.Add(para1);
cmd.Parameters.Add(para2);
DataSetdst=newDataSet();
da.Fill(dst,"choice");
MessageBox.Show("添加成功!
","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
con.Close();
11.3.4密码修改模块
1.界面设计
运行效果如图11-12所示。
图11-12密码修改窗体
2.功能说明
本模块可以完成密码的修改,输入原密码之后会进行验证,原密码正确方可输入新密码。
3.代码说明
单击“确定”,首先需要查询数据库原密码是否正确,如果正确,在更新数据库。
关键代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox1.Text!
="")
{
//查询用户表中登陆者的密码,返回结果放在字符串str中
…...//此处代码省略
if(textBox1.Text.Trim()==str.Trim())
{
if(textBox2.Text!
="")
{
if(textBox3.Text==textBox2.Text)
{
//更新用户表,密码为新输入的密码
……//此处代码省略
MessageBox.Show("修改成功!
","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("新密码与确认密码不符,请重新输入","询问",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox3.Text="";
}
}
else
MessageBox.Show("请输入新密码","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("密码错误,请重新输入","询问",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox1.Text="";
}
}
else
MessageBox.Show("密码不能为空","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
学生管理的主要模块就介绍到这,关于教师管理和管理员管理模块不做详细介绍。
11.4部署应用程序
创建好应用程序之后,需要将应用程序发布给其他用户,下面我们就以本章学生信息管理系统为例,简单介绍如何部署应用程序。
1.创建安装部署项目
打开学生信息管理系统,在“解决方案资源管理器”中选择解决方案“MyProject”并右击,选择“添加—>新建项目”命令,弹出如图11-13所示的对话框。
图11-13“添加新项目”对话框
在“添加新项目”对话框中,“项目类型”选择“其他项目类型—>安装和部署”,“模板”选择“安装项目”,设置安装文件的名称和位置后单击“确定”。
2.在“解决方案资源管理器”中,选择刚添加的安装项目—Setup1,右键单击,选择“添加—>项目输出”,弹出如图11-14所示的对话框。
图11-14“添加项目输出组”对话框
在图11-14所示的对话框中,选择“主输出”,单击“确定”。
3.选择菜单中的“生成—>生成Setup”,编译项目,则在项目Setup的Debug文件夹下会自动生成安装程序。
通过以上步骤为应用程序学生信息管理系统创建了一个简单的安装项目,运行安装程序,便可以将应用程序安装在本地机器上,这就完成了部署应用程序的任务。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第11章 学生信息管理系统开发 11 学生 信息管理 系统 开发