资源描述
附件4:课程设计汇报书
面向对象方法学
课 程 设 计 报 告
设计题目:学生信息管理系统课程
班 级:13软件工程1班
学 号:0***
姓 名:何**
指导老师:庄**老师
设计时间:12月
摘 要
本文描述是基于Windows环境学生信息管理系统,关键功效模块包含:学生信息增删改查,学生课程增删改查, 学生成绩增删改查,用户增删改查。所用体系构架Client/Server结构。关键工具Microsoft Visual Studio 设计窗体, MYSQL建立数据库,实现学生信息管理各个功效。利用语言C#和sql语法编程。
本篇汇报介绍一个学生信息管理系统从分析到设计最终到开发全过程为,给出了学生信息管理系统设计和技术实现过程,尤其在细节上分析功效和函数实现思想。
关键词:面向对象,学生信息管理系统,Win7,MYSQL,VS,C/S
This article describes the Windows environment based student information management system , the main function modules include: Additions and deletions to change search student information , additions and deletions to change search student curriculum , student achievement CRUD user CRUD. The system architecture Client / Server structure . The main tool for Microsoft Visual Studio design form , MYSQL database was established to achieve the various functions of the student information management . Sql syntax and use of C # programming language .
This report describes a student information management system from analysis to design and finally to the whole process of development , the process gives the student information management system design and technology , in particular, to achieve ideological analysis functions and functions in detail.
Keywords: object oriented, student information management system,Win7, MYSQL, VS, C/S
目 录
摘 要 2
绪 论 4
1.1 设计目标 4
1.2 开发工具选择 4
1.3 开发环境 4
1.4 本汇报关键内容 4
需求分析 5
2.1系统需求介绍 5
2.1.1系统目标 5
2.1.2功效需求分析 5
2.1.3性能需求分析 5
总体设计 6
3.1设计概述 6
3.2系统总体结构及功效模块划分 6
3.2.1学生信息管理模块 6
3.2.2学生课程管理模块 7
3.2.3学生成绩管理模块 7
3.2.4系统用户管理模块 8
3.3系统数据库概念结构设计 8
3.3.1系统E-R图 8
3.3.2系统数据库设计 9
3.4安全保密设计 10
3.4.1用户登录安全性 10
具体设计 11
4.1概述 11
4.2系统程序步骤图 11
4.3系统关键功效模块介绍 12
4.3.1系统登录 12
4.3.2学生信息管理模块 12
4.3.3学生课程管理模块 14
4.3.4学生成绩管理模块 16
4.3.5系统用户管理模块 18
4.3.6版权相关 20
关键功效模块代码 21
5.1 登录界面代码设计 21
5.2 主页面代码 26
5.3 系统用户管理模块代码设计 38
5.4 课程信息管理模块代码设计 45
5.5成绩信息管理模块代码设计 52
总结 61
参考文件 61
课程设计心得 62
绪 论
1.1 设计目标
本课程设计目标是使学生能熟练掌握简单简单Windows窗体应用程序设计和ADO.net应用,期望经过此次课程设计锻炼学生使用C#语言处理实际问题能力。
1.2 开发工具选择
本系统后台数据库采取MYSQL 数据库,该数据库系统在安全性、正确性和运行速度方面有绝正确优势,而且处理数据量大,效率高;前台采取Microsoft 企业Visual Studio 作为关键开发工具,可和MYSQL 数据库无缝链接。
1.3 开发环境
开发系统:Win7
系统开发平台:Microsoft Visual Studio
系统开发语言:C#
数据库管理软件:MYSQL
1.4 本汇报关键内容
本汇报具体介绍了学生信息管理系统开发过程,关键包含到工作以下:系统需求分析、系统总体设计、系统概念设计、系统各模块具体设计、系统运行和测试。
需求分析
2.1系统需求介绍
2.1.1系统目标
(1) 依据查询条件实现学生信息查询
(2) 学生选课信息查询、成绩信息和用户信息查询
(3) 学生信息、课程信息、成绩信息、用户信息增加、删除、修改
(4) 对基础信息完成增加、删除、修改时,需注意表和表之间关联
2.1.2功效需求分析
本系统功效需求分析以下:
(1) 学生信息查询:能够依据学号进行查询.
(2) 学生信息管理:关键是用于学生信息添加、删除、修改;
(3) 学生成绩查询:能够依据学号进行查询.
(4) 学生成绩管理:关键是用于学生成绩添加、删除、修改;
(5) 课程信息查询:可依据菜单进行查询.
(6) 课程信息管理:关键是用于课程信息添加、删除、修改;
(7) 用户信息查询:可依据菜单进行查询.
(8) 用户信息管理:关键是用于用户信息添加、删除、修改;
2.1.3性能需求分析
(1) 登录、用户界面需求:简练、易懂、易用、友好用户界面。
(2) 安全保密性需求:只有凭借用户名和密码登陆系统,只有管理员才能进行信息管理,非管理员只能查看信息。
总体设计
3.1设计概述
依据需求把整个系统分化成不一样模块,每个模块完成一个特定子功效。把这些模块结合起来组成一个整体。逐一实现各个功效;
3.2系统总体结构及功效模块划分
经过对系统需求分析,学生信息管理系统关键划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功效模块。图3.2.0 系统总体结构。
图3.2.0 系统总体结构
3.2.1学生信息管理模块
学生信息管理:关键是用于学生信息添加、删除、修改,图3.2.1学生信息管理模块结构。
图3.2.1
3.2.2学生课程管理模块
学生课程管理:关键是用于学生课程添加、删除、修改,图3.2.2学生课程管理模块结构。
图3.2.2
3.2.3学生成绩管理模块
学生成绩管理:关键是用于学生成绩添加、删除、修改,图3.2.3学生成绩管理模块结构。
图3.2.3
3.2.4系统用户管理模块
系统用户管理:关键是用于系统用户添加、删除、修改,图3.2.4系统用户管理模块结构。
图3.2.4
3.3系统数据库概念结构设计
依据对数据项和数据结构分析,设计出能够满足系统需求多种实体,及它们之间关系,为后面逻辑结构设计打下基础。
3.3.1系统E-R图
系统E-R图能够将各个实体之间关系显示出来,将各个实体间属性依靠表示明白。图3.3.1系统E-R图结构。
图3.3.1系统E-R图结构
3.3.2系统数据库设计
综合以上分析,要实现上面全部功效模块,关键设计表以下:
表3.3.2.1 用户表(user)
表3.3.2.2成绩表(grade)
表3.3.2.3课程表 (course)
表3.3.2.4学生表(stu)
3.3.3数据库连接配置
①先在项目中引用MySQLDriverCS.dll
②类添加 using MySQLDriverCS;
③MySQLConnection conn = new MySQLConnection(new MySQLConnectionString("数据库名", "Server帐号", "密码").AsString);
3.4安全保密设计
3.4.1用户登录安全性
系统设计了登录界面,每个正当用户有用户名及一个密码,只有当用户输入正确用户名及密码组合后才能够对学生信息进行操作。
具体设计
4.1概述
具体设计阶段根本目标是确定应该怎样具体实现所要求系统,也就是说,经过这个阶段设计工作,应该得出目标系统正确描述,从而在编码阶段能够把这个描述直接翻译成用某种程序设计语言书写程序。
4.2系统程序步骤图
程序步骤图又称为程序框图,它是历史悠久使用最广泛描述软件设计方法。它可将整个程序总体步骤清楚明白显示出来。图4.2.1系统总步骤图结构。
图4.2.1系统总体步骤图
4.3系统关键功效模块介绍
4.3.1系统登录
用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。用户界面图4.3.1 用户登录界面所表示。
图4.3.1 用户登录界面
4.3.2学生信息管理模块
学生信息管理:经过程序主界面添加学生信息按钮可添加学生信息(图 4.3.2添加信息窗口)。学生信息进行具体信息管理(图4.3.3 信息管理)包含删除信息(图 4.3.4删除信息提醒)和修改信息(图4.3.5 修改信息窗口)。
图4.3.2添加信息窗口
图4.3.3 信息管理
图4.3.4删除信息提醒
图4.3.5 修改信息窗口
4.3.3学生课程管理模块
学生课程管理:经过程序主界面菜单-->系统-->课程管理 可添加课程信息(图 4.3.5信息管理)和 具体课程管理(图4.3.6 添加信息窗口)和(图4.3.7 删除信息提醒)和(图4.3.8 修改信息窗口)。
图 4.3.5信息管理
4.3.6 添加信息窗口
图4.3.7 删除信息提醒
图4.3.8 修改信息窗口
4.3.4学生成绩管理模块
学生信息管理:选择一行学生信息经过程序主界面查看-->学生成绩按钮,查看该学生成绩信息(图 4.3.7查看信息窗口)。查看后还能够添加该学生成绩(图 4.3.8添加信息窗口)、删除该学生成绩(图 4.3.9删除提醒窗口)和修改该学生成绩(图 4.3.10修改信息窗口)
图4.3.7成绩管理
4.3.8添加信息窗口
图 4.3.9删除提醒窗口
图 4.3.10修改信息窗口
4.3.5系统用户管理模块
系统用户管理:经过程序主界面菜单-->系统-->用户管理,查看该系统用户信息(图 4.3.11查看信息窗口)。查看后还能够添加该系统用户(图 4.3.12添加信息窗口)、删除该系统用户(图 4.3.13删除提醒窗口)和修改该系统用户(图 4.3.14修改信息窗口)
4.3.11查看信息窗口
图 4.3.12添加信息窗口
图 4.3.13删除提醒窗口
图 4.3.14修改信息窗口
4.3.6版权相关
版权相关:图4.3.15版权相关
图4.3.15版权相关
关键功效模块代码
5.1 登录界面代码设计
namespace SIMS_1
{
public partial class Log : Form
{
String check = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string check_4 = "";
Random r = new Random();
public Log()
{
InitializeComponent();
for (int i = 0; i < 4; i++)
{
int n=r.Next(0,61);
check_4 += "" + check[n];
}
l_check.Text = check_4;
}
private static String id, password, type;
public static int Flag = 1;
String flag = "";
MySQLConnection con = new MySQLConnection(new MySQLConnectionString("students", "root", "123456").AsString);
private void bt_log_Click(object sender, EventArgs e)
{
try
{
id = txt_id.Text.Trim();
password = txt_password.Text.Trim();
if (this.rb_log_Manager.Checked)
{
type = "管理员";
}
if (this.rb_Log_Not_Manager.Checked)
{
type = "非管理员";
}
// 假如输入帐号和密码和系统帐号密码一致就进入本系统
con.Open();
MySQLCommand setformat = new MySQLCommand("set names gb2312", con);
setformat.ExecuteNonQuery();
setformat.Dispose();
string sql = "select * from user where 用户名='" + id + "' and 用户密码='" + password + "'and 用户类型='" + type + "'";
MySQLDataAdapter adapter = new MySQLDataAdapter(sql, con);
DataSet set = new DataSet();
adapter.Fill(set,"user");
this.dataView.DataSource = set.Tables["user"];
int rowcount = dataView.RowCount - 1;
if (rowcount == 1)
{
try
{
if (string.Compare(check_4,txt_check.Text,true)==0)
{
MySQLCommand setformat1 = new MySQLCommand("set names gb2312", con);
setformat1.ExecuteNonQuery();
setformat1.Dispose();
string sql1 = "select 用户类型 from user where 用户名='" + id + "' and 用户密码='" + password + "'";
MySQLDataAdapter adapter1 = new MySQLDataAdapter(sql1, con);
DataSet ds = new DataSet();
adapter1.Fill(ds);
DataRow dr = ds.Tables[0].Rows[0]; //得到行数据集,实际是个数组……
flag = dr.ItemArray[0].ToString();
con.Close();
if (flag.Equals("非管理员"))
{
Flag = 0;
}
else
{
Flag = 1;
}
Students s = new Students();
s.Show();
this.SetVisibleCore(false);
}
else
{
MessageBox.Show("验证码错误!");
}
}
catch (MySQLException)
{
MessageBox.Show("数据库链接犯错了");
}
}
else
{
MessageBox.Show("您输入帐号或密码不正确或没有选择用户类型,请重新输入!", "警告!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show("未找到数据库!");
}
}
private void bt_cancel_Click(object sender, EventArgs e)
{
//问询是否退出本系统
if (MessageBox.Show("是否取消此次登录?", "确定", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
{
Application.Exit();
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
registered_add r_add = new registered_add();
r_add.Show();
}
private void l_check_Click(object sender, EventArgs e)
{
check_4 = "";
for (int i = 0; i < 4; i++)
{
int n = r.Next(0, 61);
check_4 += "" + check[n];
}
l_check.Text = check_4;
}
}
}
5.2 主页面代码
namespace SIMS_1
{
public partial class Students : Form
{
public static MySQLConnection con = null;
public Students()
{
try
{
InitializeComponent();
con = new MySQLConnection(new MySQLConnectionString("students", "root", "123456").AsString);
if (Log.Flag == 0)
{
this.bt_add.Hide();
bt_delete.Hide();
bt_change.Hide();
}
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show("未找到数据库!");
}
}
private void bt_searchAll_Click(object sender, EventArgs e)
{
con.Open();
MySQLCommand setformat = new MySQLCommand("set names gb2312", con);
setformat.ExecuteNonQuery();
setformat.Dispose();
string sql1 = "select * from stu";
MySQLDataAdapter adapter = new MySQLDataAdapter(sql1, con);
DataSet set = new DataSet();
adapter.Fill(set, "stu");
this.dataView.DataSource = set.Tables[0];
int rowcount = dataView.RowCount-1;
MessageBox.Show("查找到"+rowcount+"个学生信息!");
if (rowcount == 0)
{
MessageBox.Show("您还未添加学生!");
}
con.Close();
}
private void bt_search_Click(object sender, EventArgs e)
{
try
{
Int64 id = Convert.ToInt64(txt_search.Text);
con.Open();
MySQLCommand setformat = new MySQLCommand("set names gb2312", con);
setformat.ExecuteNonQuery();
setformat.Dispose();
String sql = "select * from stu where 学号='" + id + "'";
MySQLDataAdapter adapter = new MySQLDataAdapter(sql, con);
DataSet set = new DataSet();
adapter.Fill(set, "stu");
dataView.DataSource = set.Tables[0];
int rowcount = dataView.RowCount-1;
if (rowcount == 0)
{
MessageBox.Show("未找到您要查找学号学生!");
}
con.Close();
}
catch (FormatException)
{
MessageBox.Show("输入学生学号格式有误\n请重新输入!", "警告!", MessageBoxButtons.OK);
}
}
private void bt_add_Click(object sender, EventArgs e)
{
Add a = new Add();
a.Show();
}
private void bt_delete_Click(object sender, EventArgs e)
{
try
{
String id = dataView.SelectedRows[0].Cells[0].Value.ToString();
if (MessageBox.Show("是否要删除学号为:" + id + " 学生?", "确定", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
{
con.Open();
MySQLCommand setformat = new MySQLCommand("set names gb2312", con);
setformat.ExecuteNonQuery();
setformat.Dispose();
String sql = "delete from stu where 学号='" + id + "'";
MySQLCommand command= new MySQLCommand(sql, con);
command.ExecuteNonQuery();
con.Close();
MessageBox.Show("删除成功!", "提醒!", MessageBoxButtons.OK);
}
}
catch (ArgumentOutOfRangeException)
{
MessageBox.Show("您还没有选择一行要删除数据!");
}
catch (NullReferenceException)
{
MessageBox.Show("您选择行数据无效!");
}
}
private void bt_change_Click(object sender, EventArgs e)
{
try
{
String id = dataView.SelectedRows[0].Cells[0].Value.ToString();
String name = dataView.SelectedRows[0].Cells[1].Value.ToString();
String sex = dataView.SelectedRows[0].Cells[2].Value.ToString();
String age = dataView.Se
展开阅读全文