C#课程设计研究生信息管理系统.docx
《C#课程设计研究生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C#课程设计研究生信息管理系统.docx(18页珍藏版)》请在冰点文库上搜索。
C#课程设计研究生信息管理系统
河南理工大学
计算机科学与技术学院
课程设计
2011—2012学年第二学期
课程名称C#Windows程序设计课设
设计题目研究生管理信息系统
学生姓名
学号
专业班级
指导教师
年月日
目录
1.设计任务书
1.1题目与要求
1.2本系统涉及的知识点
2.功能设计
3.数据库设计
4.系统实现
5.总结
参考文献
1.设计任务书
1.1项目目的
研究生信息管理是一项非常重要的工作,它关系到整个学校的工作效率。
一个好的信息管理系统能够方便系统管理人员对学校的基本数据进行维护,包括信息的增加,修改以及对各项信息的变动等操作。
采用研究生信息管理系统不仅可以节省人力物力,而且可以增强学校资料的安全性,提高学校的管理能力。
运用该系统,可以清晰地了解研究生的课程、专业、成绩等信息,并根据需要添加、删除、修改相应的信息。
但是不同的角色,登录得到的界面不同,拥有的权限也不同,这样,起到了对学校资料的保护的作用。
整个系统的管理员可以根据学校情况添加、删除、修改、角色的权限,很方便管理。
1.2题目与要求
本次课程设计的题目是“研究生信息管理系统”的设计与实现。
该设计是对本学期前八周所学的面向对象程序设计课程的巩固和深入应用。
利用前面学过的知识来解决实际问题,锻炼解决问题的能力和动手编程的能力。
同时初步理解软件开发步骤和软件工程思想。
本人计划与刘贺和王刘英编写一个研究生信息管理系统,主要用来管理研究生的基本信息及成绩信息。
本研究生管理信息系统具有以下特点:
1.实现研究生的个人信息、课程、成绩、专业等的管理;
2.提供完整的资料,方便学校统一管理;
3.界面设计简单、操作方便。
本系统的功能主要包括以下几个方面:
1.系统管理员添加年级信息、班级信息、所开设的课程信息和系统用户信息,对用户进行权限设置并对其进行维护;
2.新生入学时,普通管理员录入研究生的基本信息,并在以后的教学中对研究生信息进行基本维护;
3.考试结束后,由任课老师对研究生的成绩进行录入,并对成绩进行分析;
4.学期初期,导师给每位研究生选择课程,并可以对研究生的信息和成绩进行查询;
5.每位研究生可以根据自己的需求对以上录入的信息进行适当的查询。
根据分工,我的主要工作是设计成绩管理模块以及用户管理模块。
1.3本系统设计的知识点
WinForm常用控件、属性、方法,ADO.NET技术。
2.功能设计
本研究生信息管理系统的功能由登录界面和主窗体界面两部分的功能组成。
其中主窗体界面的功能由系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理等模块组成。
具体如下:
1.登录模块:
通过登录模块,用户可以进入本系统进行相关操作。
同时用户通过“忘记密码”链接,可以找回密码。
用户还可以通过友情链接,浏览研究生的一些相关消息。
2.系统管理:
通过本模块,用户可以注册新用户,删除用户和清空系统访问量。
3.专业管理模块:
通过本模块,用户可以添加,浏览专业信息,浏览过程中可以进行修改、删除和更新。
4.课程管理模块:
通过本模块,用户可以添加,浏览课程信息,浏览过程中可以进行修改、删除和更新。
5.研究生管理模块:
通过本模块,用户可以添加,浏览学生信息,浏览过程中可以进行修改、删除和更新。
6.成绩管理模块:
通过本模块,用户可以添加,浏览学生成绩,浏览过程中可以进行修改、删除和更新。
7.用户管理模块:
通过本模块,用户可以修改密码和密保,也可以进行重新登录。
8.帮助模块:
本模块分为操作引导和关于两功能。
操作引导告诉用户如何使用本系统。
而关于则是本系统的一些其他的信息。
3.数据库设计
根据研究生管理信息系统的功能要求,我们设计该系统需要整理研究生信息、教师信息、课程信息、专业信息、成绩信息、用户信息、角色信息。
这样我们运行系统时,根据需要执行便可看到预想的信息。
根据所学的数据库知识知道我们可以给该系统建立数据库,并在建立的数据库中创建所需信息的表以及各表间的关系图。
3.1数据库设计
该系统的数据库命名为masterMIS,数据库中共包括七张表,
1.用户信息表(userinfo),包含用户的名称,密码,角色,密保问题以及答案;
2.角色信息表(roles),包含角色名称和与该角色相关的权限;
3.专业信息表(majorinfo),包含学校所开专业的名称及其详细介绍;
4.课程信息表(courseinfo),包含学校所开设课程的名称及其详细介绍;
5.研究生基本信息表(studentinfo),包含研究生的学号、姓名、性别等信息;
6.成绩信息表(scoreinfo),包含研究生的学号、课程、成绩等信息;
7.教师信息表(teacherinfo),包括教师的姓名等信息。
下面列出了个表的数据结构,如图所示:
表3-1用户信息表(userinfo)
字段名
数据类型
描述
Uname
varchar
用户名(主键)
PWD
varchar
密码
RoleName
varchar
角色名
Question
varchar
密保问题
Answer
varchar
密保问题答案
表3-2角色信息表(roles)
字段名
数据类型
描述
RoleName
varchar
角色名(主键)
SystemManage
bit
系统管理
MajorManage
bit
专业管理
CourseManage
bit
课程管理
ScoreManage
bit
成绩管理
表3-3专业信息表(majorinfo)
字段名
数据类型
描述
MID
int
专业编号
MName
varchar
专业名称(主键)
MRemark
varchar
专业描述
表3-4课程信息表(courseinfo)
字段名
数据类型
描述
CID
int
课程编号(主键)
CName
varchar
课程名称
CDate
varchar
学时
CNum
varchar
学分
MName
varchar
专业名称
CRemark
varchar
课程描述
表3-5研究生基本信息表(studentinfo)
字段名
数据类型
描述
SID
int
研究生学号(主键)
SName
varchar
研究生姓名
SSex
varchar
性别
SPID
varchar
身份证号
SBirth
varchar
出生日期
TID
int
老师编号
MName
varchar
专业名称
SRemark
varchar
备注
表3-6成绩信息表(scoreinfo)
字段名
数据类型
描述
RID
int
成绩编号(主键)
SID
int
学号
CName
varchar
课程名称
Score
varvhar
分数
表3-7教师信息表(teacherinfo)
字段名
数据类型
描述
TID
int
教师编号(主键)
TName
varchar
用户名
3.2数据库中表的关系图
一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间有一定的关系,称为关联。
如果数据库中的信息不能满足正常的依赖关系,就会破坏数据的完整性和一致性。
根据本实例的特点,需要设置课程信息表、专业信息表、研究生信息表、成绩信息表和教师信息表之间的关系,如图3-1所示。
设置用户信息表与角色信息表之间的关系,如图3-2所示。
图3-1数据库关系图
图3-2用户角色关系图
3.3系统程序流程图
程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。
它可将整个程序的总体流程清楚明白的显示出来。
如图系统总流程图结构。
图3.3系统总体流程图
4.系统实现
应用程序主界面
4.1成绩管理模块
在主界面中选择【成绩管理】|【添加成绩】命令菜单,即可进入添加成绩信息界面,如图所示。
用户可以在该窗体中添加学生的成绩信息。
单击【确定】按钮,如果成绩信息填写完整并且同一学号研究生的成绩不重复则添加成功,否则添加失败。
在窗体中设计1个TextBox控件,2个ComboBox控件和2个Button控件。
4.2成绩管理编码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication2
{
publicpartialclassScoreAdd:
Form
{
publicScoreAdd()
{
InitializeComponent();
}
privatevoidScoreAdd_Load(objectsender,EventArgse)
{
try
{
oleConnection1.Open();
stringsql="selectSID,SName,MNamefromstudentinfo";
oleDbDataAdapteradp=newoleDbDataAdapter(sql,oleConnection1);
DataSetds=newDataSet();
adp.Fill(ds,"student");
comboSName.DataSource=ds.Tables["student"].DefaultView;
comboSName.DisplayMember="SName";
comboSName.ValueMember="SID";
oleConnection1.Close();
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
}
}
privatevoidcomboSName_SelectedIndexChanged(objectsender,System.EventArgse)
{
try
{
oleConnection1.Open();
stringsql="selectCID,CNamefromcourseinfowhereMName="+"(selectMNamefromstudentinfowherestudentinfo.MName=courseinfo.MNameandSName='"+comboSName.Text.Trim()+"')";
oleDbDataAdapteradp=newoleDbDataAdapter(sql,oleConnection1);
DataSetds=newDataSet();
adp.Fill(ds,"course");
ComboCName.DataSource=ds.Tables["course"].DefaultView;
ComboCName.DisplayMember="CName";
ComboCName.ValueMember="CID";
oleConnection1.Close();
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
}
}
privatevoidBtAdd_Click(objectsender,EventArgse)
{
if(ComboSName.Text.Trim()==""||ComboCName.Text.Trim()==""||TextScore.Text.Trim()=="")
MessageBox.Show("请填写完整信息","提示");
else
{
oleConnection1.Open();
stringsql;
sql="select*fromscoreinfowhereSID='"+ComboSName.SelectedValue.ToString().Trim()+"'andCName='"+ComboCName.Text.Trim()+"'";
oleDbCommandcmd=newoleDbCommand(sql,oleConnection1);
if(null==cmd.ExecuteScalar())
{
sql="insertintoscoreinfo(SID,CName,Score)values('"+ComboSName.SelectedValue.ToString().Trim()+"','"+"'"+ComboCName.Text.Trim()+"','"+TextScore.Text.Trim()+"')";
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("成绩添加成功","提示");
clear();
}
else
MessageBox.Show("在同一个学生不能添加相同的课程的成绩","提示");
oleConnection1.Close();
}
}
}
}
4.3用户管理模块
在主界面中选择【用户管理】|【修改密码】命令菜单或者单击工具栏中的用户按钮,即可进入修改密码界面,如图所示。
单击【确定】按钮,如果密码正确并且新密码与密码确认相同,则修改成功,否则修改失败。
在窗体中设计4个TextBox控件和2个Button控件。
4.4用户管理编码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication1
{
publicpartialclassModifyCode:
Form
{
publicModifyCode()
{
InitializeComponent();
}
privatevoidBtSave_Click(objectsender,EventArgse)
{
if(TextName.Text.Trim()==""||TextPWD.Text.Trim()==""||TextPWDNew.Text.Trim()==""||TextPWDNew2.Text.Trim()=="")
MessageBox.Show("请填写完整信息","提示");
else
{
oleConnection1.Open();
oleDbCommandcmd=newoleDbCommand("",oleConnection1);
stringsql="select*fromuserinfowhereUName='"+TextName.Text.Trim()+"'andPWD='"+TextPWD.Text.Trim()+"'";
cmd.CommandText=sql;
if(null!
=cmd.ExecuteScalar())
{
if(TextPWDNew.Text.Trim()!
=TextPWDNew2.Text.Trim())
MessageBox.Show("两次密码输入不一致","警告");
else
{
stringsql1="updateuserinfosetPWD='"+TextPWDNew.Text.Trim()+"'whereUName='"+TextName.Text.Trim()+"'";
cmd.CommandText=sql1;
cmd.ExecuteNonQuery();
MessageBox.Show("密码修改成功","提示");
this.Close();
}
}
else
MessageBox.Show("密码错误","提示");
oleConnection1.Close();
}
}
privatevoidBtClose_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoidModifyCode_Load(objectsender,EventArgse)
{
this.TextName.Text=this.Tag.ToString().Trim();
}
}
}
5.总结
为期两周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。
我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的研究生成绩管理和用户管理等模块的功能。
在这短短的五天里我收获如下:
1、巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力。
2、培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:
1、认真上好专业实验课,多在实践中锻炼自己。
2、写程序的过程中要考虑周到,严密。
3、在做设计的时候要有信心,有耐心,切勿浮躁。
4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
6.参考文献
[1]黄光奇,李子木.WEB数据库互连技术开发指南[M].北京:
国防工业出版社,2000.
[2]刘立军.学生信息管理系统的研究与开发[J].江苏泰州:
泰州职业技术学院学报,2005.
[3]李金山.学生信息管理系统的设计[J].太原:
科技情报开发与经济,2005:
(14):
132.
[4]王珊,萨师煊.数据库系统概论[M].第四版.北京:
高等教育出版社,2006-05
[5]王小科,梁冰,吕双.C#全能速查宝典[M].北京:
人民邮电出版社,2009-11
[6]林邦杰.深入浅出C#程序设计[M].北京:
中国铁道出版社,2005.3
[7]周靖JohnSharpVisualC#2005从入门到精选。
北京:
清华大学刘培文耿小芬SQLServer2000数据库原理及应用教程北京:
科海
[8]薛华成管理信息系统(第5版)清华大学出版社(2007-08出版)
[9]郑宇军.C#面向对象程序设计[M].北京:
人民邮电出版社,2005.
[10]沃森(KarliWatson)、内格尔(ChristianNagel)、齐立波、黄静C#入门经典(第5版)清华大学出版社(2010-12出版)