C#软件开发工具实训
前言
随着学校的发展,学生人数不断增加,各种需要处理的学生信息也变多了。那么一款用于处理学生信息的学生信息管理系统应运而生,该系统具有提高学生管理工作效率的特点。学生信息管理系统可以让学生信息管理工作,规范、科学,从而减少学校工作人员的负担的。
学生档案管理系统是学校工作人员管理学生信息的工具,能使学生信息实现系统化、规范化和自动化,其中心任务是用计算机对学生信息进行常规管理,如查询、修改、增加、删除,针对这样的需求设计了学生档案管理系统。
本系统主要包括学生信息查询、学生课程查询、班级管理等几部分。其功能主要有:
1、有关学籍等信息的输入,包括输入学生基本信息、所在班级、所学课程和成绩等。
2、学生信息的查询,包括查询学生基本信息、所在班级、已学课程和成绩等。
3、学生信息的修改。
4、班级管理信息的输入,包括输入班级设置、年级信息等。
5、班级管理信息的查询。
6、班级管理信息的修改。
7、学生课程的设置和修改。
8、系统管理:修改密码,退出系统。
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
1.绪论
1.1问题的提出
随着科学的进步,计算机技术方面也迅猛发展,比如计算机网络技术与数据库技术方面,这些方面的进步改变了人们生活工作的方式。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更有效率。
数据库始于20世纪60年代,经过40多年的发展,现在已经是变成了一种体系,成为计算机软件的一个不可替代的分支。数据库技术展现的是如今数据管理的方法,使计算机的应用切实融入到国民经济各个领域,在数据处理领域发挥着越来越大的作用。
我国的教育是一个影响着国家兴盛的重要行业,随着市场经济体制的发展,根据社会主义制度的中国特有的国情发展,我国对教育也是大力扶持与重视的,这样就使教育业向规范性与现代化的方向高速发展,教育事业从各方面提高工作效率,取得很好的经济效益,而一些新兴的、比较小的教育机构还没有全部具备这种功能。由此可见,随着我国教育的快速发展,计算机信息技术在教育上的应用会更加普及。
1.2项目开发的目的及意义
学生信息管理系统是将计算机技术和教学、教务工作相结合,按照学校的工作流程设计完成的。为了使学生信息管理系统在学院的管理中发挥更大的作用,让工作过程的更加简便,提高工作效率和工作质量,系统应具有实用性、简便性和适用性,与此同时要做到科学性,对每个数据库要有条不紊的管理,防止错乱,能够按照用户的要求进行简单查询和复合查询,实现报表打印,能够对查询结果进行分类汇总,注意数据的安全性,方便用户的操作,尽量避免复杂操作。
在学校,用计算机管理学生的信息已经越来越时尚了。用计算机不仅可以提高单位时间内做的事,还可以让错误发生到最低,更重要的是可以保证学校资料的安全性,从而提高了学校的管理能力。因此学生信息管理系统对于学校来说,是必不可少的。
2.开发工具的选择
本系统的开发使用的是MICROSOFT公司的VisualStudio.net开发工具,利用其提供的各种面向对象的开发工具,尤其是控件和简洁的数据库的智能化对象,在很短时间就能建立起系统应用原型,对初始原型系统进行需求迭代,不断修正和改进,以达到用户满意的系统。
本系统采用的数据库是MicrosoftSQLServer2008,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求,提供了一个全面的数据库平台,它可以用一个单独的分析存储进行强大的分析。具有数据压缩、备份压缩、分区表并行等特点。
3.系统分析
3.1业务流程分析
班级管理业务流程图:
教务处可以对班级信息进行管理,可以讲班级信息下发给班主任,班主任与教务处的交互。
图3.1班级管理业务流程图
学生信息管理业务流程图:
学生信息管理的功能完成的是教务处传递学生档案给老师,学生信息管理具有学生信息的筛选、添加、修改、删除等功能。
图3.2学籍管理业务流程图
课程管理业务流程图:
课程信息管理的功能完成的是教务处分配课程给教师,课程信息管理具有查询、添加、修改、删除等功能。
图3.3成绩管理业务流程图
成绩信息管理业务流程图:
成绩信息管理的功能完成的是教务处分配课程给教师,课程信息管理具有查询、添加、修改等功能。
图3.4成绩管理业务流程图
4.学生信息管理系统(总体设计)
4.1系统功能设计
学生信息管理系统是一个完整的学校学生信息管理系统。在本系统中主要包括学生信息管理功能、班级管理功能、课程信息管理功能、学生成绩管理功能等。它们的具体描述如下:
4.1.1用户登录和退出功能
用户登录功能主要包括的功能如下:
配置数据库:灵活的配置数据库以保证在不同的电脑主机上使用该系统。
4.1.2班级管理功能
班级管理功能主要实现班级的管理功能,如班级的添加、修改和删除等。在系统中主要包括:添加新的班级和年级信息、修改班级和年级信息、删除班级和年级信息。
4.1.3学生信息管理功能
学生档案管理功能主要对学生信息的管理,如学生信息的添加、修改和删除等。在系统中主要包括:查询新的学生信息、添加新的学生信息、修改学生信息、删除学生信息。
4.1.4课程信息管理功能
课程管理功能主要对课程信息的管理,如课程信息的添加、修改和删除等。在系统中主要包括:添加新的课程信息、修改课程信息、删除课程信息。
4.1.5学生成绩管理功能
学生成绩管理功能主要对学学生成绩的管理,如学生成绩的添加、修改和删除等。在系统中主要包括:添加新的学生成绩、修改学生成绩、删除学生成绩。
4.2功能模块设计:
4.3数据库设计
数据库的物理结构如下:
注意:主键:PK外键:FK
院系表Department
字段 | 类型 | 备注 |
DeptId | int | PK院系ID |
DeptCode | Nvarchar(50) | 院系代码 |
DeptName | Nvarchar(50) | 院系名称 |
Contact | Nvarchar(50) | 联系电话 |
专业表Major
字段 | 类型 | 备注 |
MajorId | int | PK专业ID |
MajorCode | Nvarchar(50) | 专业代码 |
MajorName | Nvarchar(50) | 专业名称 |
DeptId | int | FK院系ID |
Note | ntext | 专业简介 |
班级表Class
字段 | 类型 | 备注 |
ClassId | int | PK班级ID |
ClassCode | Nvarchar(50) | 班级代码 |
ClassName | Nvarchar(50) | 班级名称 |
MajorId | int | FK专业ID |
学生表Students
字段 | 类型 | 备注 |
SutId | int | PK学生ID |
SutCode | Nvarchar(50) | 学号 |
SutName | Nvarchar(50) | 姓名 |
ClassId | int | FK班级ID |
Native | Nvarchar(100) | 籍贯 |
Born | datetime | 出生日期 |
National | Nvarchar(50) | 民族 |
Political | Nvarchar(50) | 政治面貌 |
Sex | Nvarchar(10) | 性别 |
Grade | int | 入学年份 |
Contact | Nvarchar(50) | 电话号码 |
Photo | image | 相片 |
Note | ntext | 备注 |
课程表Course
字段 | 类型 | 备注 |
CourseId | int | PK课程ID |
CourseCode | Nvarchar(50) | 课程代码 |
CourseName | Nvarchar(50) | 课程名称 |
Note | ntext | 课程描述 |
Teacher | Nvarchar(50) | 授课老师 |
Credits | int | 学分 |
成绩表Results
字段 | 类型 | 备注 |
ResultsId | int | PK成绩ID |
SutId | Nvarchar(50) | FK学生ID |
CourseId | Nvarchar(50) | FK课程ID |
Score | int | 分数 |
SemesterId | Nvarchar(50) | FK学期ID |
学期表Semester
字段 | 类型 | 备注 |
SemesterId | int | PK学期ID |
SemesterName | Nvarchar(50) | 学期(例如:2011-2012学年第一学期、2011-2012学年第二学期、2012-2013学年第一学期、2012-2013学年第二学期、2013-2014学年第一学期、2013-2014学年第二学期) |
5.系统操作流程图
首先是我们的登陆界面,这里将会验证密码(默认教务处管理员用户名:admin密码:admin),如果密码正确将登陆成功,可以选择系统管理、学生信息管理等对它们进行添加、删除、修改等相应的操作,操作完毕后再系统管理里安全退出即可。
6.系统详细设计
6.1学生信息管理系统的界面与实现
系统启动运行后,将出现用户登录窗体(图6.1),当用户输入用户名或者密码错误讲不能登陆。(默认用户名为admin密码为admin)
图6.1系统登录界面
部分代码如下:
privatevoidbtnLogin_Click(objectsender,EventArgse)
{
if(txtUserName.Text.Trim().Length==0)
{
MessageBox.Show("用户名不能为空!","提示");
txtUserName.Focus();
}
elseif(txtPwd.Text.Trim().Length==0)
{
MessageBox.Show("密码不能为空!","提示");
txtUserName.Focus();
}
else
{
if(UsersBLL.GetUsersLogin(txtUserName.Text.Trim(),txtPwd.Text.Trim(),outusers))
{
AdminFormaf=newAdminForm(users);
af.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误!","提示");
}
}
}
6.2主窗口的设计
用户输入正确的用户名和密码以后程序即进入主窗口(图6.2),本模块是本系统的应用界面,在本界面上集成了本系统的所有功能,共有6个功能菜单(功能模块),从而实现了本系统从基础资料管理、班级管理、学生信息管理、课程管理、成绩管理、系统管理等系统的具体功能,同时,在系统管理模块中可以完成对本系统的安全性管理。
图6.2主窗口界面
6.2.1班级管理界面设计
本系统的班级管理窗口如下图所示:
图6.3班级窗口界面
添加、修改、删除功能的主要代码如下:
///根据ID修改
///
publicstaticintUpdateClass(ClassClassModel)
{
stringsql=string.Format("UPDATEClasssetClassCode='{0}',ClassName='{1}',MajorId={2}whereClassId={3}",ClassModel.ClassCode,ClassModel.ClassName,ClassModel.MajorId,ClassModel.ClassId);
returnDBHelper.ExecuteCommand(sql);
}
///
///根据主键删除
///
publicstaticintDeleteClass(intId)
{
stringsql=string.Format("deletefromClasswhereClassId={0}",Id);
returnDBHelper.ExecuteCommand(sql);
}
///
///查询条数
///
publicstaticintCountNumber(stringNewWHere)
{
stringsql="";
if(!string.IsNullOrEmpty(NewWHere))
{
sql="selectcount(*)fromClasswhere"+NewWHere;
}
else
{
sql="selectcount(*)fromClass";
}
returnDBHelper.GetIntScalar(sql);
}
///
///分页
///
publicstaticListPageSelectClass(intpageSize,intpageIndex,stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql=string.Format("SELECTtop{0}*FROMClasswhereClassIdnotin(selecttop{1}ClassIdfromClasswhere1=1{2}orderby{3}{4})and1=1{2}orderby{3}{4}",pageSize,pageSize*pageIndex,WhereSrc,PXzd,PXType);
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///根据主键查询实体
///
publicstaticClassGetIdByClass(intId)
{
stringsql=string.Format("SELECT*FROMClasswhereClassId={0}",Id);
ClassClassModel=newClass();
using(DataTabletable=DBHelper.GetDataSet(sql))
{
ClassModel=GetMode(table);
}
returnClassModel;
}
///
///查询全部
///
publicstaticListAllData(stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql="select*fromClasswhere1=1";
if(!string.IsNullOrEmpty(WhereSrc))
{
sql+=string.Format(WhereSrc+"orderby{0}{1}",PXzd,PXType);
}
else
{
sql+=string.Format("orderby{0}{1}",PXzd,PXType);
}
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///私有方法
///
privatestaticListGetList(DataTabletable)
{
Listlist=newList();
foreach(DataRowrowintable.Rows)
{
ClassClassModel=newClass();
ClassModel.ClassId=Convert.ToInt32(row["ClassId"]);
ClassModel.ClassCode=Convert.ToString(row["ClassCode"]);
ClassModel.ClassName=Convert.ToString(row["ClassName"]);
ClassModel.MajorId=Convert.ToInt32(row["MajorId"]);
list.Add(ClassModel);
}
returnlist;
}
6.2.2学生信息管理界面设计
图6.4学生信息管理界面
导出Excel的主要代码:
privatevoidbtnExport_Click(objectsender,EventArgse)
{
try
{
ExportExcel("学生信息资料.xls");
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"提示");
return;
}
}
privatevoidExportExcel(stringfileName)
{
stringsaveFileName="";
SaveFileDialogsaveDialog=newSaveFileDialog();
saveDialog.DefaultExt="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName=fileName;
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")<0)return;//被点了取消
Microsoft.Office.Interop.Excel.ApplicationxlApp=newMicrosoft.Office.Interop.Excel.Application();
if(xlApp==null)
{
MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooksworkbooks=xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbookworkbook=workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheetworksheet=(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写入标题
for(inti=0;i<dgvView.ColumnCount;i++)
{
worksheet.Cells[1,i+1]=dgvView.Columns[i].HeaderText;
}
for(intr=0;r<dgvView.Rows.Count;r++)
{
for(inti=0;i<dgvView.ColumnCount;i++)
{
worksheet.Cells[r+2,i+1]=dgvView.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
if(saveFileName!="")
{
try
{
workbook.Saved=true;
workbook.SaveCopyAs(saveFileName);
}
catch(Exceptionex)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!n"+ex.Message);
}
}
xlApp.Quit();
GC.Collect();//强行销毁
MessageBox.Show(fileName+"保存成功","提示",MessageBoxButtons.OK);
}
}
6.2.3课程管理界面设计
图6.4课程管理界面
查询的部分代码如下:
///
///查询条数
///
publicstaticintCountNumber(stringNewWHere)
{
stringsql="";
if(!string.IsNullOrEmpty(NewWHere))
{
sql="selectcount(*)fromClasswhere"+NewWHere;
}
else
{
sql="selectcount(*)fromClass";
}
returnDBHelper.GetIntScalar(sql);
}
///
///分页
///
publicstaticListPageSelectClass(intpageSize,intpageIndex,stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql=string.Format("SELECTtop{0}*FROMClasswhereClassIdnotin(selecttop{1}ClassIdfromClasswhere1=1{2}orderby{3}{4})and1=1{2}orderby{3}{4}",pageSize,pageSize*pageIndex,WhereSrc,PXzd,PXType);
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
///
///根据主键查询实体
///
publicstaticClassGetIdByClass(intId)
{
stringsql=string.Format("SELECT*FROMClasswhereClassId={0}",Id);
ClassClassModel=newClass();
using(DataTabletable=DBHelper.GetDataSet(sql))
{
ClassModel=GetMode(table);
}
returnClassModel;
}
///
///查询全部
///
publicstaticListAllData(stringWhereSrc,stringPXzd,stringPXType)
{
Listlist=newList();
stringsql="select*fromClasswhere1=1";
if(!string.IsNullOrEmpty(WhereSrc))
{
sql+=string.Format(WhereSrc+"orderby{0}{1}",PXzd,PXType);
}
else
{
sql+=string.Format("orderby{0}{1}",PXzd,PXType);
}
using(DataTabletable=DBHelper.GetDataSet(sql))
{
list=GetList(table);
}
returnlist;
}
6.2.4成绩信息管理界面设计
成绩信息管理界面,基本上是一个信息显示全面的界面,可以比较详细的知道该学生的信息,以及哪一学期考试的成绩,展示如图:
图6.5成绩信息管理界面