学生管理系统说明文档

更新时间:2024-03-16 05:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学生信息管理系统详细设计说明书

班级:14计本高二

姓名:姚仕梁 学号:1408200207

1引言

1.1编写目的

建立学生信息管理系统,采用计算机对学生成绩进行管理,帮助广大师生提高工作效率,实现学生成绩管理工作流程的系统化、规范化和自动化,减少人力财力投资。

1.2背景

该项目的名称为“学生信息管理系统”。

随着学校的规模不断扩大,专业、班级、学生的数量急剧增加,有关学生课的各种信息量也成倍增长,而目前许多高校的学生成绩管理仍停留在人工管理阶段,重复工作较多,工作量大,效率低。因此,迫切需要开发基于网络的学生信息管理系统来提高管理工作的效率。

1.3定义

学生成绩管理:对学生的基本信息、课程选择、成绩的录入、修改、删除、查询等一系列的操作。

2总体设计

2.1需求分析

本软件主要提供以下功能:

本地应用方面:

1、录入功能:

● 提供有权限的人员登入对系统进行管理 2、查询功能:

● 成绩模糊查询; ● 课表查询; 3、修改功能:

● 用户可以修改自己的资料,学号不能为空(在权限范围内的); 4、添加功能:

● 增加一个新记录; 5、删除功能:

● 删除一个学生记录; 6、查询

● 核对人员对系统进行访问;

网络应用:

7、学生查询:

● 提供学生查询自己的成绩; 8、其他查询:

● 提供他人访问学生成绩数据库;

2.2软件结构(如图)

学生成绩管理系统学生教师管理员成绩查询我的消息我的留言个人管理公告管理成绩管理个人资料公告查看角色管理课程分类课程管理班级管理学期管理组织机构管理成绩管理个人管理系部管理3.1登录模块

功能:是用户可以进行各种操作的必须前提。 输入项目:用户名、密码。 输出项目:浏览区和基本资料区。 程序逻辑:

P1:检查用户名、密码与数据库是否吻合(完整性和一致性)。 P2:产生提示用户名或密码错误的消息窗口; P3:用户确认后退出程序运行; P4:进入主窗体; P5:进入事件等待状态;

3.2关闭系统模块

功能:关闭并退出系统,保留相应状态数据。 输入项目:全局变量;

输出项目:更新后的数据库文件和配置文件。 程序逻辑:

P1:设置数据库和配置文件; P2:释放系统资源并退出系统;

3.3浏览模块

功能:维护窗口中浏览区中信息的更新和刷新。

性能:这是经常使用的一个模块,对性能要求在很短时间内作出反应。 输入项目:鼠标或键盘事件。 输出项目:从新设置的浏览区中信息

3.4刷新浏览模块

功能:从新经过修改的浏览区。

3.5查询模块

功能:完成查询功能。 性能:相应时间应尽量快。 输入项目:无。 输出项目:无。 程序逻辑:

P1:进入查询窗体; P2:若用户取消,则返回; P3:获得查询结果;

P4:查询结果显示在主窗体上,并等待用户确认; P5:若查询结果项数等于零,返回;

3.6修改模块

功能:完成修改功能。 输入项目:各种修改。 输出项目:修改后的基本资料 程序逻辑:

P1:点击要修改的表; P2:产生窗体; P3:等待用户修改;

3.7添加模块

功能:完成增加功能。 输入项目:无。 输出项目:无。

3.8限制条件

1硬件条件。该软件要求的具体设备配置必须是奔腾以上的CPU、内存128MB以上、硬盘10GB以上。

2软件限制。Windows9x/2000/XP操作系统,服务器安装SQL Server 2005服务器版

4.1数据库设计

本系统的数据库是SQL server数据库,在SQL环境下创建数据库学生信息库.mdf文件。该数据库包括学生信息表、成绩信息表、用户登录信息表用于纪录学生的基本信息数据库表结构如下所示:

4.1.1各表的物理结构 4.2数据库链接 4.2.1数据库链接代码

实例化关键词SqlDataAdapter,SqlCommand,DataSet SqlDataReader数据阅读器

数据库链接字符串

public static class DB {

///

static string constr;

public static string getConnection() {

constr = \Source=.;AttachDbFilename=|DataDirectory|\\\\学生信息管理.mdf;Integrated Security=True\ return constr; } }

数据库数据集DATASET 驻存在内存中离线

string SQLStr = \ 用户表”;

try {

SqlConnection myCon = new SqlConnection(CString); myCon.Open();//打开数据库

SqlCommand MyCom1 = new SqlCommand();//实例化数据库操作对象 MyCom1.Connection = myCon;

MyCom1.CommandType = CommandType.Text; MyCom1.CommandText = SQLStr;

SqlDataAdapter mydataAdapter1 = new SqlDataAdapter();//实例化适配器 mydataAdapter1.SelectCommand = MyCom1;

DataSet myds = new DataSet();

mydataAdapter1.Fill(myds, “用户表”);

string information = \学生表 where 学号='\ myCon = new SqlConnection(DB.getConnection()); myCon.Open();

MyCom = new SqlCommand(); MyCom.Connection = myCon;

MyCom.CommandType = CommandType.Text;

MyCom.CommandText = information;//设置要执行的命令

SqlDataAdapter MyDataAdapter = new SqlDataAdapter();//生成SqlDataAdapter对象

//设置MyDataAdapter对象的SelectCommand属性值为创建的SqlCommand对象名

MyDataAdapter.SelectCommand = MyCom; MyDs = new DataSet();//产生新的数据集

MyDataAdapter.Fill(MyDs, \学生表\填充数据集

Navigator = this.BindingContext[MyDs, \学生表\用Navigator绑定Student表 SqlDataReader MyDataReader = MyCom.ExecuteReader(); DispValue();//显示当前记录的值

sqlcommand类的属性

1.CommandText

获取或设置要对数据源执行的Transact—SQL语句或存储过程。[1]

2. CommandType

获取或设置一个值,该值指示如何解释CommandText属性。 3.Connection

获取或设置SqlCommand的实例使用的SqlConnection。

SelectCommand 获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。

Fill(DataSet, String) 在 DataSet 中添加或刷新行以匹配使用 DataSet 和 DataTable 名称的数据源中的行。 (继承自

4.2.2数据库链接操作

第一步:附加数据库(对已经建好的数据库进行附加)点击数据库右键附加。

第二部:安全性设置,展开安全性,sa用户点击右键属性,进行安全性设置(密 码设置、默认数据库设置),状态选择登录启用。

第三步:服务器属性设置,右击服务器属性,进行安全性设置。

第四步:重启服务器。右击服务器,选择重启服务器。

4.3数据库调试

数据库成功附加、安全性设置、重启。

5.1登录界面

设计过程:

用于输入用户名和密码登录,选择相应的用户类型进入系统,若是用户类型选择错误则不能进入系统。输入用户名和密码后点击确定判断数据库中的用户是否为合法用户。

设计代码:

string CString =DB.getConnection(); string SQLStr = \用户表\

try {

SqlConnection myCon = new SqlConnection(CString);

myCon.Open();

SqlCommand MyCom1 = new SqlCommand(); MyCom1.Connection = myCon;

MyCom1.CommandType = CommandType.Text; MyCom1.CommandText = SQLStr;

SqlDataAdapter mydataAdapter1 = new SqlDataAdapter();

mydataAdapter1.SelectCommand = MyCom1;

DataSet myds = new DataSet();

mydataAdapter1.Fill(myds, \用户表\

int i;

bool flag =false ;

for (i = 0; i < myds.Tables[\用户表\ {

if (username.Text == \ {

MessageBox.Show(\用户名密码不能为空\警告\ username.Text = \ password.Text = \ username.Focus(); flag = true; break; } else if (username.Text != myds.Tables[\用户表\|| password.Text != myds.Tables[\用户表\ {

flag = false; }

else if (username.Text == myds.Tables[\用户表\&& password.Text == myds.Tables[\用户表\ {

string yhm = username.Text; mm = password.Text;

Main f1 = new Main(username.Text,password .Text ); this.Hide();

for (i = 0; i < myds.Tables[\用户表\ {

if (yhm == myds.Tables[\用户表\用户表\管理员\

{

f1.教师操作ToolStripMenuItem.Visible = false; f1.学生操作ToolStripMenuItem.Visible = false; f1.toolStrip1.Visible = false;

} else if (yhm == myds.Tables[\用户表\用户表\教师\

{

f1.toolStripButton2.Visible = false; f1.toolStripButton3.Visible = false;

f1.管理员操作ToolStripMenuItem.Visible = false; f1.学生操作ToolStripMenuItem.Visible = false; } else if (yhm == myds.Tables[\用户表\用户表\学生\

{

f1.toolStripButton1.Visible = false;

f1.教师操作ToolStripMenuItem.Visible = false; f1.管理员操作ToolStripMenuItem.Visible = false; } }

flag = true;

f1.ShowDialog();

this.Close(); break; } }

if (flag == false) {

MessageBox.Show(\输入有误!请重新输入!\警告\ username.Text = \ password.Text = \ username.Focus(); }

myCon.Close(); }

catch (SqlException OleDbe) {

MessageBox.Show(OleDbe.Message, \连接失败\

基本控件

Form窗体 Login

控件的属性值截图

代码实现功能区或事件驱动

实现直接利用Login的属性获取键盘enter的值

5.2学生个人信息查询界面

主要基本控件

DataGridView ComboBox

控件的属性值截图

MDI属性

代码实现功能区或事件驱动

button5.Enabled = true; button4.Enabled = true; string SQLStr;

if (comboBox1.Text == \学生\ {

if (textBox1.Text == \ {

SQLStr = \学生表 \ } else {

SQLStr = \学生表 where 学号='\+ \

}

Myda = new SqlDataAdapter(SQLStr, myCon); Myds = new DataSet(); Myda.Fill(Myds, \学生表\

this.dataGridView1.DataSource = Myds.Tables[0]; }

if (comboBox1.Text == \教师\ {

if (textBox1.Text == \ {

SQLStr = \教师表 \ } else {

SQLStr = \* from 教师表 where 教师号='\+ textBox1.Text + \

}

Myda = new SqlDataAdapter(SQLStr, myCon); Myds = new DataSet(); Myda.Fill(Myds, \教师表\

this.dataGridView1.DataSource = Myds.Tables[0];//把缓存中的表赋值到dataGridView1

5.2.1 使用皮肤引擎

控件的属性值截图

代码实现功能区及事件驱动

private void wf_denglu_Load(object sender, EventArgs e)//加载

{

skinEngine1.SkinFile = \; }

基本控件

控件的属性值截图

代码实现功能区及事件驱动

private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e) {

if (MessageBox.Show(\是否退出系统!\系统提示\== DialogResult.Yes) {

Application.Exit(); } }

private void 重新登录ToolStripMenuItem_Click(object sender, EventArgs e) {

Login dl = new Login(); this.Hide();

dl.ShowDialog(); this.Close(); }

private void 用户信息管理ToolStripMenuItem_Click(object sender, EventArgs e) {

if (childFormNumber == 0) {

MemberManage yhgl = new MemberManage(); //MDI的窗体 yhgl.MdiParent = this; childFormNumber++; yhgl.Show(); } else {

MessageBox.Show(this, \请先关闭正在运行的窗口,再进行操作!\错误提示\

} }

private void 排课管理ToolStripMenuItem_Click(object sender, EventArgs e) {

if (childFormNumber == 0) {

CourseManage pkgl = new CourseManage(); pkgl.MdiParent = this; childFormNumber++; pkgl.Show(); } 示\

}

else {

MessageBox.Show(this, \请先关闭正在运行的窗口,再进行操作!\错误提}

5.3学生信息管理

5.3.1学生信息查询

5.3.2数据绑定及数据导航

BindingManagerBase 抽象类

使用 BindingManagerBase,可以对 Windows 窗体上绑定到相同数据源的数据绑定控件进行同步。(有关将控件简单绑定到数据源的更多信息,请参见 Binding 类。)例如,假定窗体包含两个绑定到相同数据源的不同列的 TextBox 控件。数据源可能是一个包含客户姓名的 DataTable,其中的列可能包含名字和姓氏。这两个控件必须同步以便一起显示同一客户的正确姓名。从 BindingManagerBase 类继承的 CurrencyManager 通过维护指向数据源中当前项的指针来完成此同步。TextBox 控件被绑定到当前项,因此它们显示同一行的信息。在当前项更改时,CurrencyManager 通知所有绑定控件,以便它们能够刷新它们的数据。此外,可以设置 Position 属性来指定控件所指向的 DataTable 中的行。若要确定数据源中存在的行数,请使用 Count 属性。

public partial class StudentSearch : Form {

private BindingManagerBase Navigator;//用来对记录导航 private SqlConnection myCon;//连接对象 private SqlCommand MyCom;//命令对象

//private SqlDataAdapter MyDataAdapter;//数据适配器对象 private DataSet MyDs;//数据集对象

public string yhm;

public StudentSearch(string zm) {

InitializeComponent();

yhm = zm;//学号 }

private void button2_Click(object sender, EventArgs e) {

this.Close(); }

private void DispValue()//把当前记录的值显示在文本框中 {

for (int i = 0; i < MyDs.Tables[\学生表\ {

Navigator.Position = i;

textBox1.Text = MyDs.Tables[\学生表\学号\

textBox2.Text = MyDs.Tables[\学生表\姓名\

textBox3.Text = MyDs.Tables[\学生表\性别\

textBox4.Text = MyDs.Tables[\学生表\班级\

textBox5.Text = MyDs.Tables[\学生表\Navigator.Position][\出生日期\

textBox6.Text = MyDs.Tables[\学生表\家庭所在地\

textBox7.Text = MyDs.Tables[\学生表\是否团员\ }

}

private void StudentSearch_Load(object sender, EventArgs e) {

string information = \学生表 where 学号='\ myCon = new SqlConnection(DB.getConnection()); myCon.Open();

MyCom = new SqlCommand(); MyCom.Connection = myCon;

MyCom.CommandType = CommandType.Text;

MyCom.CommandText = information;//设置要执行的命令

SqlDataAdapter MyDataAdapter = new SqlDataAdapter();//生成SqlDataAdapter对象

//设置MyDataAdapter对象的SelectCommand属性值为创建的SqlCommand对象名

MyDataAdapter.SelectCommand = MyCom; MyDs = new DataSet();//产生新的数据集

MyDataAdapter.Fill(MyDs, \学生表\填充数据集

Navigator = this.BindingContext[MyDs, \学生表\用Navigator绑定Student表 //创建BindingManagerBase对象必须要使用到BindingContext类 SqlDataReader MyDataReader = MyCom.ExecuteReader(); DispValue();//显示当前记录的值 }

BindingManagerBas管理绑定到相同数据源和数据成员的所有 Binding 对象。该类为抽象类。

Position

当在派生类中被重写时,获取或设置绑定到该数据源的控件

所指向的基础列表中的位置。

学生修改密码:

设计过程:

体现出面向对象思想,构造函数,类,属性,继承 直接调用静态DB类的static方法 设计代码:

public static class DB {

static string constr;

public static string getConnection() {

constr = \

Source=.;AttachDBFilename=|DataDirectory|\\\\学生信息管理.mdf;Integrated Security=True\; return constr; }

}

public partial class Pssword : Form {

private SqlConnection MyCon; private SqlCommand MyCom; public string Str; public string yhm; public string mm;

public Pssword(string n,string m) {

InitializeComponent(); yhm = n; mm = m;

MyCon = new SqlConnection(DB. getConnection()); MyCon.Open(); }

本文来源:https://www.bwwdw.com/article/ckj8.html

Top