资源描述
《C#程序设计》
课程设计报告
课程设计题目: 计算机系学生信息管理系统
作者所在系部:
作者所在专业:
作者所在班级:
作 者 姓 名 :
作 者 学 号 :
指导教师姓名:
完 成 时 间 :
课程设计任务书
课题名称
计算机系学生信息管理系统
完成时间
指导教师
职称
学生姓名
班 级
总体设计要求和技术要点
总体要求:
(1) 数据库设计合理,注意表与表之间的关联
(2) 操作简便
(3) 功能齐全,风格统一
(4) 没有明显错误和异常
(5) 数据格式验证
创新要求:
在基本要求达到后,可进行创新设计,如提供数据的导入导出功能等。
工作内容及时间进度安排
此次课程设计时间为两周,第15、16周,共40学时。
分四个阶段完成:
1.分析设计阶段:明确设计要求,找出实现方法。这一阶段在第1天完成。
2.编码调试阶段:根据设计分析方案编写C#代码,然后调试该代码,实现课题要求的功能。这一阶段在第2-8天完成。
3.总结报告阶段:总结设计工作,撰写课程设计报告,这一阶段在第8-9天完成。
考核阶段:这一阶段在第10天完成。
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
摘 要
随着科学技术的不断进步,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一个重要部分,信息查询系统是一个由用户和计算机组成的进行信息管理、信息收集、存储处理、传递使用和维护的软件系统。学生信息管理系统是学校管理学生信息的一种必不可少的的工具,它相对与手工书写管理更加便利,快捷,节约大量时间,大幅提高日常查询效率。
关于学生信息管理系统,论文主要分几个重点部分来介绍它的功能的实现。对各个功能的描述,内容简洁,明了,结构紧凑。学生信息管理系统可以满足用户的需求,具体体现在对学生信息的录入,修改,查询,修改等操作。实现其中的操作除了对各个类中代码书写,更重要的还需要书写与后台数据库交互的代码,满足数据库信息的输入和输出。学生信息管理系统的开发目的是为了实现学生个人信息的信息化管理。本系统需要完成的功能有:
管理员模块
1.修改密码
2.教师登录账号信息管理(教师查询、添加、修改、删除)
3.专业管理(专业查询、添加、修改、删除)
4.年级管理(课程查询、添加、修改、删除)
5.班级管理(班级查询、添加、修改、删除)
6.学生管理(学生查询、添加、修改、删除)
教师模块
1.修改登录密码
2.按班级查询学生
3.按学号查询学生
4.按姓名查询学生
关键词:C# 学生信息 数据库 管理 查询 添加 修改 删除
目 录
第1章 绪 论 1
1.1 课题研究现状分析 1
1.1.1 本领域内已开展的研究工作 1
1.1.2 已经取得的研究成果 1
1.2 选题的目的及意义 2
第2章 系统需求分析 3
2.1 问题的提出 3
2.2 系统的设计目标 3
第3章 系统总体设计 4
3.1 系统功能设计 4
3.1.1 系统登录 5
3.1.2 学生基本信息资料维护 5
3.2 数据库的设计 5
3.3 库中各个表的设计 6
第4章 系统实现 8
4.1 数据库操作类 8
4.2 登录模块实现 8
4.3 学生信息查询模块实现 10
4.4 学生信息添加模块实现 13
4.5 学生信息修改模块实现 15
4.6 学生信息删除模块实现 17
4.7 学生信息浏览模块实现 18
4.8 学生课程信息查询模块实现 20
4.9 学生课程信息添加模块实现 21
4.10 学生课程信息修改模块实现 23
4.11 学生课程信息删除模块实现 24
第5章 系统使用说明 26
第6章 课程设计总结 27
6.1 主要问题及解决办法 27
6.2 课程设计体会 27
6.3 自我评定 27
参考文献 29
第1章 绪 论
近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
1.1 课题研究现状分析
在我们的教育事业里,计算机早涉及。在学生的管理中,如果通过使用计算机可以减少大量的手工操作,提高工作效率。学生基本信息管理系统过去采用人工处理方式,由于工作量非常之大,为了提高工作效率,方便管理,因此需要开发一个学生信息管理系统。
本次课题为:学生基本信息管理系统,它的主要功能是先通过用户身份验证,然后即可登录学生基本信息管理系统,然后通过增、删、查、改操作对学生基本信息进行管理和维护。
1.1.1 本领域内已开展的研究工作
1.理论研究基础
(1)后台以SQL数据库支持。
(2)前台以 NeatBeans为开发环境,实现学生基本信息管理的增、删、查、改操作。
2.技术层面的支持
(1)系统的设计与实现应采用MVC分层模式。
(2)系统界面采用MDI方式,即用户登录后进入主窗体,主窗体通过菜单进入子窗体。
1.1.2 已经取得的研究成果
当今IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
学生信息管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。学生信息管理系统就是采用现代化的信息管理方式代替手工管理方式,提高学生信息管理工作效率,做到信息的规范管理,科学统计和快速查询。
1.2 选题的目的及意义
目的:为了使学生信息管理工作科学化、规范化,更好的适应当前学生信息管理的工作需求,缓解手工管理存在的弊端,就必须采用计算机辅助管理。在本学期我学习了《c#课程设计》一门课程,为了巩固本学期所学的知识,解决一些简单的问题。为了更好的学习计算机语言,打下良好的基础,把自己打造成一个计算机高手,提高自我,开发了这个学生信息管理系统。
意义:本系统界面简单,通过选择登录身份进入不同的界面,就能简单的实现对学生的查找、删除、添加、修改、还可以对专业,课程,年级,进行增、删、查、改。目前学校的学生信息管理系统已经不能够适应越来越多的学生信息剧增的局面了,而本系统的研发,能更加方便用户对学生进行管理。
第2章 系统需求分析
随着经济全球化的推进以及企业激烈的竞争,各大高校的学生信息管理系统已经越来越不能够适应学生及相关信息剧增的局面了,所以我们现在需要一个检索迅速、查找方便、易修改功能齐全方便的系统来适应我们的需求。
系统采用先进的两层体系结构,Client(客户端)负责提供表达逻辑、显示用户界面信息、基本操作;Server(服务器端)负责实现数据服务。
2.1 问题的提出
为了减少人工工作量,提高工作效率,使学生管理部门的工作更加有效地进行。学生信息管理系统的更新迫不及待。
2.2 系统的设计目标
本系统是对教育部门进行一体化管理的软件系统,其核心管理思想是实现对学生信息增、删、改的管理。新系统应达到以下目标:
1. 充分了解用户需求及当前形式,功能齐备,能完成数据处理;
2. 要有详细的设计说明书;
3. 每一模块的流程图要很清晰;
4. 系统能够正常的运行,能较好的完成预定的功能;
5. 系统要有完整的帮助文件,供前台操作员能方便的操作本系统。
2
第3章 系统总体设计
3.1 系统功能设计
本系统实现了对计算机系学生信息的管理。总体分为2个模块:教师模块,管理员模块。如图3-1所示。
登陆学生基本信息系统
管理员
教
师
学生管理
按学号查
班级管理
专业管理
年级管理
教师管理
按班级查
按姓名查
清除
修改
查询
删除;
增加
显示
图3-1 系统功能模块图
(1)显示模块:用于显示所有学生的基本信息。
(2)增加模块:添加学生的基本信息。
(3)删除模块:删除符合条件的学生的基本信息。
(4)查询模块:查询出满足条件的学生的基本信息。
(5)修改模块:对学生的基本信息进行修改。
(6)清除模块:清除文本框内的内容。
(7)按学号查:根据学号查询学生信息。
(8)按姓名查:根据姓名查询学生信息。
(9)按班级查:根据班级查询学生信息。
3.1.1 系统登录
登录为用户使用系统的起始点,用户必须先通过身份验证,方可对学生基本信息进行相关操作,登录流程如图3-2所示。
登录
失败
处理
错误提示
查询验证
成功
登录主界面
操作
结束
图3-2 登录模块流程图
简要说明及功能描述:
功能主要是用于确保用户在提供正确的验证信息之后,可以进一步使用本系统。
3.1.2 学生基本信息资料维护
管理员存在账号密码,教师存在账号密码。从而维护了学生信息。
3.2 数据库的设计
本系统采用sql server 2008数据库管理系统,创建的数据库名称为:StudentMessageManagement数据库中包含7张表,各表功能及描述如表3-1所示。
表3-1 数据库中的表
表名
作用
Administrator
用于存储管理员的账号密码信息
Teacher
用于存储教师的账号密码信息
Student
用于存储学生信息
Class
用于存储班级信息
Major
用于存储专业信息
Grade
用于存储年级信息
Course
用于存储课程信息
3.3 库中各个表的设计
1.管理员表
管理员表Administrator用于维护管理员的基本情况,主键为AdId。表中各字段定义及描述如表3-2所示。
表3-2 Administrator表
字段名
数据类型
长度
是否为空
是否主键
字段意义
AdId
nchar
20
No
是
管理员账号
AdPwd
nchar
20
Yes
否
管理员密码
AdName
nchar
50
Yes
否
管理员姓名
2.教师表
表3-3 Teacher表
字段名
数据类型
长度
是否为空
是否主键
字段意义
TeaId
nchar
20
否
是
教师账号
TeaPwd
nchar
20
是
否
教师密码
TeaName
nchar
50
是
否
教师姓名
3.学生信息表
表3-4 Student表
字段名
数据类型
长度
是否为空
是否主键
字段意义
StuId
int
--
否
是
学生ID
StuNo
nchar
20
是
否
学生学号
StuName
nchar
14
是
否
学生姓名
Age
nchar
5
是
否
年龄
Sex
nchar
5
是
否
性别
ClassId
int
--
是
否
班级ID
GradeId
int
--
是
否
年级ID
MajorId
int
--
是
否
专业ID
Phone
nchar
20
是
否
联系电话
Address
nchar
50
是
否
家庭住址
Extra
nchar
50
是
否
备注
4.班级表
表3-5 Class表
字段名
数据类型
长度
是否为空
是否主键
字段意义
ClassId
int
--
否
是
班级ID
ClassName
nchar
20
是
否
班级名
5.课程表
表3-6 Course表
字段名
数据类型
长度
是否为空
是否主键
字段意义
CourseId
int
--
否
是
课程ID
CourseName
nchar
20
是
否
课程名
GradeId
int
--
是
否
年级ID
MajorId
int
--
是
否
专业ID
6.年级表
表3-7 Grade表
字段名
数据类型
长度
是否为空
是否主键
字段意义
GradeId
int
--
否
是
年级ID
GradeName
nchar
10
是
否
年级名
7.专业表
表3-8 Major表
字段名
数据类型
长度
是否为空
是否主键
字段意义
MajorId
int
--
否
是
专业ID
MajorName
nchar
10
是
否
专业名
第4章 系统实现
4.1 数据库操作类
Context类,用于实现窗体间的传递。
定义如下:
class Context
{ public static User use = null;}
User类,用于记录登录者的账号和ID号,以便于修改密码。
class User
{ public string userId { get; set; } public string userPwd { get; set; } }
4.2 登录模块实现
本系统的登录界面如图4-1所示,输入用户名和密码,选择登录身份,点击登录,判断用户名和密码是否正确,正确可进入相应的系统主界面,否则提示错误信息。点击退出,退出登录窗口。
图4-1 登录界面
图4-2 空的用户名和密码 图4-3 错误的用户名和密码
(1) 登录按钮的代码为:
private void btnOK_Click(object sender, EventArgs e)
{string connectionStr = "Data Source='.';Initial Catalog='StudentMessageManagement';Integrated Security='true'";
SqlConnection connection = new SqlConnection(connectionStr);
if (txtUsername.Text != "" && txtPwd.Text != "")
{ connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
if (rdoAdministrator.Checked)
{command.CommandText = String.Format("select count(*) from Administrator where AdId='{0}' and AdPwd='{1}'", this.txtUsername.Text, this.txtPwd.Text);
int count = (int)command.ExecuteScalar(); //查询表中的记录个数
if (count > 0)
{User user = new User();
user.userId = txtUsername.Text;
user.userPwd = txtPwd.Text;
Context.use = user;
Administrator ad = new Administrator();
this.DialogResult = DialogResult.OK;
this.Hide();ad.Show();}
else
MessageBox.Show("用户名或密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}
if (rdoTeacher.Checked)
{command.CommandText = String.Format("select count(*) from Teacher where TeaId='{0}' and TeaPwd='{1}'", this.txtUsername.Text, this.txtPwd.Text);
int count = (int)command.ExecuteScalar();
if (count > 0)
{User user = new User(); user.userId = txtUsername.Text;
user.userPwd = txtPwd.Text;Context.use = user;
Teacher tea = new Teacher();
this.DialogResult = DialogResult.OK;
this.Hide();tea.Show();}
else
MessageBox.Show("用户名或密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}
connection.Close();}
else
MessageBox.Show("用户名或密码不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}
(2)取消按钮的代码为:
private void btnExit_Click(object sender, EventArgs e)
{Application.Exit();}
4.3 学生信息查询模块实现
1. 管理员身份登录成功后,选择学生管理功能,可以看到界面如下:
图4-4 学生信息界面
2. 输入查询条件,点击查询的下拉框,选择“按。。。查询”,即可显示学生信息。:
图4-5 学生查询
图4-6 学生查询显示
3. 查询代码如下:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{string connectionStr = "Data Source='.';Initial Catalog='StudentMessageManagement';Integrated Security='true'";
SqlConnection connection = new SqlConnection(connectionStr);
string sql = "";
switch (comboBox1.Text)
{case "按学号查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and StuNo like '%{0}%'",txtNo.Text.Trim());break;
case "按姓名查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and StuName like '%{0}%'",txtName.Text.Trim()); break;
case "按班级查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and ClassName like '%{0}%'",cmbClass.SelectedItem); break;
case "按专业查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and MajorName like '%{0}%'",cmbMajor.SelectedItem);break;
case "按性别查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and Sex like '%{0}%'", cmbSex.SelectedItem);break;
case "按年龄查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and Age like '%{0}%'",txtAge.Text.Trim()); break;
case "按年级查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and GradeName like '%{0}%'",cmbGrade.SelectedItem);break;
case "按家庭住址查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and Address like '%{0}%'",txtAddress.Text.Trim());break;
case "按备注查询":sql = string.Format("select * from Student,Class,Grade,Major where Student.ClassId=Class.ClassId and Student.GradeId=Grade.GradeId and Student.MajorId=Major.MajorId and Extra like '%{0}%'",cmbExtra.Text.Trim());break; }
SqlCommand command = new SqlCommand(sql,connection);
connection.Open();SqlDataReader reader = command.ExecuteReader();
this.lstShow.Items.Clear();
while (reader.Read())
{ListViewItem lv = new ListViewItem();
lv.Text = reader["StuNO"].ToString();lv.SubItems.Add(reader["StuName"].ToString());
lv.SubItems.Add(reader["Age"].ToString());lv.SubItems.Add(reader["Sex"].ToString());
lv.SubItems.Add(reader["ClassName"].ToString());
lv.SubItems.Add(reader["GradeName"].ToString());
lv.SubItems.Add(reader["MajorName"].ToString());
lv.SubItems.Add(reader["Phone"].ToString());lv.SubItems.Add(reader["Address"].ToString());
lv.SubItems.Add(reader["Extra"].ToString());this.lstShow.Items.Add(lv);}
reader.Close();connection.Close();}
4.4 学生信息添加模块实现
1. 将要添加的学生信息填入编辑框内,点击添加按钮。带有红*标记的为必填项。
图4-7 添加成功
图4-8 错误提示
2.若输入的学号重复,则提示:
图4-9 输入学号重复提示
2. 添加代码如下:
private void btnAdd_Click(object sender, EventArgs e)
{if (txtNo.Text.Trim() == "" || txtName.Text.Trim() == "" || cmbClass.Text.Trim() == "" || cmbGrade.Text.Trim() == "" || cmbMajor.Text.Trim() == "")
{ MessageBox.Show("您输入的学生基本信息不完整(至少输入学号,姓名,班级,年级,专业)!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
else{
String connectionStr = "Data Source='.'; Initial Catalog='StudentMessageManagement'; Integrated Security='true'";
SqlConnection connection = new SqlConnection(connectionStr);connection.Open();
SqlCommand command = new SqlCommand();command.Connection = connection;
command.CommandText = String.Format("Select MajorId from Major where MajorName='{0}'", this.cmbMajor.SelectedItem);
int majorId = (int)command.ExecuteScalar();
command.CommandText = String.Format("Select GradeId from Grade where GradeName='{0}'",
this.cmbGrade.SelectedItem);
int gradeId = (int)command.ExecuteScalar();
command.CommandText = String.Format("Select ClassId from Class where ClassName='{0}'", this.cmbClass.SelectedItem);
int classId = (int)command.ExecuteScalar();
command.CommandText = String.Format("select count(*) from Student where StuNo='{0}'", this.txtNo.Text.Trim());
int count = (int)command.ExecuteScalar();
if (count > 0)
{ MessageBox.Show("您输入的学生学号已存在,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
else{String sql = String.Format("insert into Student(StuNo,StuName,Age,Sex,ClassId,GradeId,MajorId,Phone,Address,Extra)" +"values ('{0}', '{1}', '{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')",txtNo.Text, txtName.Text, txtAge.Text, this.cmbSex.SelectedItem, classId, gradeId, majorId, txtPhone.Text, txtAddress.Text, cmbExtra.SelectedItem);
command.CommandText = sql;command.ExecuteNonQuery();
MessageBox.Show("添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}}
txtNo.Text = "";txtName.Text = "";txtAddress.Text = ""; txtAge.Text = "";
txtPhone.Text = ""; cmbClass.Text = ""; cmbGrade.Text = "";
cmbMajor.Text = ""; cmbSex.Text = ""; cmbExtra.Text = ""; }
4.5 学生信息修改模块实现
1. 首先选中要修改的学生,系统会自动将本学生信息填充到编辑框,只需要在编辑框内修改,修改完后点击修改按钮即可成功。如图4-10:
图4-10 修改成功
2. 若修改后的学号已存在,则提示。如图4-11
图4-11 输入学号重复提示
3. 修改按钮的代码如下:
private void btnModify_Click(object sender, EventArgs e)
{String connectionStr = "Data Source='.'; Initial Catalog='StudentMessageManagement'; Integrated Security='true'";
SqlConnection connection = new SqlConnection(connectionStr);
connection.Open();SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = String.Format("Select MajorId from Major where MajorName='{0}'", this.cmbMajor.Text);
int majorId = (int)command.ExecuteScalar();
command.CommandText = String.Format("Select GradeId from Grade where GradeName='{0}'", this.cmbGrade.Text);
int gradeId = (int)command.ExecuteScalar();
command.CommandText = String.Format("Select ClassId from Class where ClassName='{0}'", this.cmbClass.Text);
int classId = (int)command.ExecuteScalar();
command.CommandText = String.Format("select count(*) from Student where StuNo='{0}'", this.txtNo.Text.Trim());
int count = (i
展开阅读全文