《ASP.NET学生学籍管理系统 .doc》由会员分享,可在线阅读,更多相关《ASP.NET学生学籍管理系统 .doc(29页珍藏版)》请在三一办公上搜索。
1、学 号: 0540410213课 程 设 计题 目学生学籍管理系统教 学 院计算机学院专 业计算机科学与技术班 级05本(2)姓 名李姗指导教师高超 高芹2008年7月1日目 录1 系统分析11.1 需求分析12 系统设计22.1 系统功能分析22.2 系统流程图33 数据库设计43.1 数据库需求分析43.2 数据库概念结构设计44 详细设计84.1 主窗体的创建84.2 创建公用模块94.3用户管理模块的创建104.4 学生功能模块的创建134.5 教师功能模块的创建155总 结22参考文献231 系统分析1.1 需求分析伴随社会的高速发展,全国各高校的学生数量一直在增加,在这样的形式下,
2、必须要求学校有一种高效有序的方法来管理学生的信息。通过调查,要求系统需要有以下功能:(1)由于该系统一次性输入的数据量可能很大,所以要求支持从Excel导入数据;(2)由于该系统的使用对象多,要求有较好的权限管理; (3)原始数据修改简单方便,支持多条件修改;(4)方便的数据查询,支持多条件查询;(5)在相应的权限下,删除数据方便简单,数据稳定性好;1.2 可行性分析由于本系统管理的对象单一,都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可
3、以实现。本系统的设计是在Windows XP操作系统环境下,使用Visual Studio.NET 2003中文版开发成功的。Visual Studio具有以下特点:1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加
4、以处理。3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征。4、面向对象设计的核心是类的设计。例如:可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。2 系统设计2.1 系统功能分析 系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。在本系统中有二种权限:一种是用户权限,即学生。另一种是管理员权限,即教师。学生管理系统需
5、要完成的功能主要有:学生可以完成的功能有 : 学生信息的查询,包括查询学生的基本信息、学生成绩等。 学生信息的修改,学生只能修改他本人的密码。教师可以完成的功能有 : 班级管理信息的输入、查询、修改,包括输入班级设置,年级信息等。 基本课程信息的输入、查询、修改。 学生成绩信息的输入、查询、修改。对上述各功能进行集中、分块、按照结构化程序设计的要求。学籍修改密码修改功能成绩管理功能学籍删除学籍查询成绩查询成绩添加成绩修改成绩删除用户添加用户删除学生信息管理系统学籍管理功能学籍添加用户管理功能修改密码用户删除图2-1 系统功能模块图2.2 系统流程图图2-2 系统流程图3 数据库设计3.1 数据
6、库需求分析 用户信息:包括的数据项有:用户号、姓名、密码、身份。 学生信息:包括的数据项有:学生学号、学生姓名、性别、出生日期、班级名称、 入学年份、学籍编号、政治面貌编号、身份证号、民族编号、家庭地址、照片、照片名称等。 学籍代码表:包括的数据项有:学籍编号、学籍等。 成绩表:包括的数据项有:编号、学号、课程编号、成绩、考试性质编号等。 政治面貌代码表:包括的数据项有:政治面貌编号、政治面貌等。 民族代码表:包括的数据项有:民族编号、民族等。 考试性质表:包括的数据项有:考试性质编号、考试性质等 课程信息:包括的数据项有:课程编号、课程名称、教师、学分、学时等学生学籍管理系统用户信息学生信息
7、课程信息成绩信息 数据库图3-1 学生学籍管理系统数据流程图3.2 数据库概念结构设计3.2.1 系统E-R图 本系统的实体有:学生实体、用户实体、年级实体、课程实体。各个实体具体的描述E-R图如图下所示。 学生基本信息班级成绩课程图3-2 学生实体ER图 用户学生教师图3-3 用户实体ER图 课程课程名称学时教师学分 图3-4 课程实体ER图现在需要将上面的数据库概念结构转化为SQL Server 2000 数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。3.2.2 相关数据学生管理系统数据库中各个表格的设计结果如下面的几个表所示。每个表表示在数据库中的一个数据表图3-5 学生信息表
8、图3-6 学籍代码表图3-7 成绩表 图3-8 政治面貌代码表图3-9 民族代码表图3-10 用户信息表图3-11 考试性质表图3-12 课程信息表4 详细设计4.1 主窗体的创建上面的SQL语句在SQL Server 2000中查询分析器执行后,将自动产生需要的所有表。有关数据库结构的所有后台工作已经完成。现在将通过学生管理系统中各个功能模块的实现,来编写数据库系统的客户端程序。4.1.1 创建空白解决方案为了在Visual Studio.NET 2003中创建应用程序,应当先创建一个空白解决方案,它包括: 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中
9、。(.sln)。 记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。(.suo)。 启动这个空白解决方案后,单击 文件|新建|项目 菜单,在新建项目中选择Visual C#项目 ,在模块中选择Windows 应用程序 ,并命名为MainFrm。4.1.2 创建主窗体Visual Studio.NET 2003创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。在SDI的程序中,每个窗体之间是独立的。而MDI的程序中,有一个窗体是主窗体,可以包含其他窗体,它的类型是MDI Form。本系统采用多文档界面,这样可以使程序更加美观,整齐有序。单击工具栏的“
10、MainMenu”控件,生成一个如下所示的窗体:图4-14.2 创建公用模块在VS.NET中可以使用类库模板快速创建能够与其他项目共享的可再次使用的类和组件。整个工程项目中的任何地方都可以调用公用类库的类和组件,这样可以极大地提高代码的效率。在项目资源管理器中为项目添加一个类,保存为xjDataBase.cs。下面就可以开始添加需要的代码。public class xjDataBaseprivate string strSQL;private string connectionString = workstation id=localhost;packet size=4096;integrat
11、ed security=SSPI;persist security info=False;initial catalog=xueji;private SqlConnection myConnection;private SqlCommandBuilder sqlCmdBld;private DataSet ds = new DataSet ();private SqlDataAdapter da;public DataSet SelectDataBase(string tempStrSQL,string tempTableName)this.strSQL = tempStrSQL;this.m
12、yConnection = new SqlConnection (connectionString);this.da = new SqlDataAdapter (this.strSQL ,this.myConnection );this.ds .Clear ();this.da .Fill (ds,tempTableName);return ds; 4.3用户管理模块的创建系统管理模块主要实现: 用户登录。 添加用户。 修改用户密码。4.3.1 用户登陆窗体的创建系统启动后,将首先出现如下所示的用户登陆窗体,用户首先输入用户名,然后输入密码。图4-2用户登陆窗体中放置了两个文本框(TextBo
13、x),用来输入用户名和用户密码。两个按钮(Button)用来确定或者取消登陆。2个标签(Label)用来标示窗体的信息。为窗体定义全局变量OK,用来判断登陆是否成功,代码如下:public static bool blCanLogin = false;private DataSet ds= new DataSet ();private DataTable myTable;private DataRow myRow;private string sendStrSQL=select * from 用户信息 ;xjDataBase xj = new xjDataBase ();string send
14、TableName = 用户信息;this.ds = xj.SelectDataBase (sendStrSQL,sendTableName);this.myTable = ds.Tables 0;private void button1_Click(object sender, System.EventArgs e)for (int i=0;imyTable.Rows .Count ;i+)this.myRow = myTable.Rows i;if (myRow0.ToString ().Trim ()=this.textBox1 .Text .ToString ().Trim ()&my
15、Row2.ToString ().Trim ()=this.textBox2.Text .ToString ().Trim ()blCanLogin = true;strUser = myRow0.ToString ().Trim ();strpwd=myRow2.ToString ().Trim ();strDignity = myRow3.ToString ().Trim ();strName = myRow1.ToString ().Trim ();this.Close ();return;MessageBox.Show (用户名或密码输入错误!,提示!);return;4.3.2 修改
16、用户密码窗体的创建用户可以修改自己的密码,选择菜单“修改密码”,出现如下所示的窗体:图4-3在这两个窗体中放置了四个文本框,用来输入用户名、原密码、新密码和确认密码。两了按钮用来确定是否修改密码。四个标签用来标示文本框的内容,单击“确认”按钮,将触发Click事件判断是否修改密码成功,代码如下:private void button1_Click(object sender, System.EventArgs e)bool canSubmit;canSubmit=this.CheckNotNull ();if(canSubmit=false)return;for (int i=0;imyTab
17、le.Rows .Count ;i+)this.myRow = myTable.Rows i;if (myRow0.ToString().Trim()=this.textBox1.Text.ToString().Trim()&myRow2.ToString().Trim()=this.textBox2.Text.ToString().Trim()string strUser = textBox1.Text.ToString (); string connstring=workstation id=localhost;integrated security=sspi;database=xueji
18、; SqlConnection conn = new SqlConnection(connstring); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType =System.Data .CommandType .Text ;cmd.CommandText =update 用户信息 set 密码=+this.textBox3 .Text+ where 学号=+strUser+;cmd.Connection = conn; trycmd.ExecuteNonQuery ();conn.Close();catch(Exce
19、ption er)MessageBox.Show (er.ToString ();return;MessageBox.Show (密码修改成功,提示);return; MessageBox.Show (用户名 或原密码输入错误!,提示,MessageBoxButtons.OK ,MessageBoxIcon.Stop );CheckNotNull是一系列触发检验,只是查检查全部通过才能执行修改密码的代码,否则会报错。在此就不将代码一一列出。4.4 学生功能模块的创建以上是学生和教师都可以实现的功能.以下是学生的功能。学生功能模块主要实现如下功能: 查询学籍信息 查询成绩信息4.4.1 查询学籍
20、信息学生在成功登录系统后,即可查询自己的相关信息,在主窗体中点击学生信息查询菜单下的学籍查询,即出现如下所示的窗体:图4-4使用sqlDataAdapter添加数据集并生成DataSet,然后将数据绑定到各个textBox,显示查询本人的照片是本系统的一大特色,实现此功能的代码如下:string sql=SELECT 照片名称,照片 from 学生信息 +WHERE( 学号 = +LoginFrm.strUser +) ; SqlCommand command = new SqlCommand(sql, this.sqlConnection1 ); try this.sqlConnection
21、1 .Open (); catch(Exception newerr) MessageBox.Show(newerr.ToString ()+ 不能打开数据联接!) ; finally SqlDataReader dr = command.ExecuteReader (); if(dr.Read() FileInfo fi = new FileInfo(temp); FileStream myStream=fi.Open(FileMode.Create); byte mydata=(byte)dr照片); foreach(byte a in mydata) myStream.WriteByte
22、(a); myStream.Close(); Image myImage=Image.FromFile(temp) ; this.pictureBox1 .Image=myImage; this.pictureBox1 .Refresh(); dr.Close (); else MessageBox.Show(没有成功读入数据!,提示) ; 4.4.2查询成绩信息除此之外学生还可以查询自己的学习成绩信息, 选择菜单“成绩查询”就可以查询到自己的学习成绩,出现如下所示的窗体。图4-5在窗体中添加一个mainMenu,和学籍查询相似将DataSet中的数据绑定到mainMenu中即可,代码和学籍查
23、询相似在此不再重复。此外学生还可打印自己的成绩单,点击打印按钮,将出现如下窗体。图4-6实现此功能,先建一个CrystalReport.rpt,在数据库字段中将前面生成的DataSet中的成绩表绑定上去,然后往报表中拖入要打印的项目即可,然后再建一个Windows窗体CrystalReport.cs,从工具箱中拖入CrystalReportViewer,调整CrystalReportViewer的大小,并输入和成绩查询相似的代码即可。4.5 教师功能模块的创建以上是学生实现的功能.以下是教师的功能。教师功能模块主要实现如下功能: 添加/删除/修改学籍信息 添加/删除/修改成绩信息 添加/删除用
24、户信息教师在成功登录系统后,点击学籍录入菜单,出现如下所示窗体:图4-7在窗体上放置多个文本框和下拉式文本框,将它们绑定到DataSet中用来输入学籍信息。两个按钮用来确定是否添加学籍信息。单击“添加图片”按钮,出现打开文件对话框,选择图片即可,点击提交即可保存到数据库中。具体代码如下:实现图片加载的代码:if (this.openFileDialog1.ShowDialog()=System.Windows.Forms.DialogResult.OK&this.openFileDialog1 .FileName !=)pathName = this.openFileDialog1.FileN
25、ame;System.Drawing.Image img = System.Drawing.Image.FromFile(pathName);this.pictureBox1.Image = img; this.textBox8 .Text =pathName.Substring(pathName.LastIndexOf()+1);System.IO.FileStream fs = new System.IO.FileStream(pathName,System.IO.FileMode.Open,System.IO.FileAccess.Read); byte buffByte = new b
26、ytefs.Length; fs.Read(buffByte,0,(int)fs.Length); fs.Close(); fs = null;点击学籍修改菜单,出现如下所示窗体:图4-8在学籍修改窗体中,可以实现模糊查询,代码如下:da1.SelectCommand .Parameters 0.Value =%;da1.SelectCommand .Parameters 1.Value =%;da1.SelectCommand .Parameters 2.Value =%;if(this.textBox1 .Text .Trim () !=)da1.SelectCommand .Parame
27、ters 0.Value =%+this.textBox1 .Text .Trim ()+%;if(this.textBox2.Text .Trim () !=)da1.SelectCommand .Parameters 1.Value =%+this.textBox2 .Text .Trim ()+%;if(this.textBox3 .Text .Trim () !=)da1.SelectCommand .Parameters 2.Value =%+this.textBox3 .Text .Trim ()+%;教师还可以点击成绩录入菜单,即可出现如下窗体:图4-9成绩添加是以班级为单位,输
28、入班级名称后,dataGrid中显示全班学生姓名、学号和成绩,其中成绩都为null,教师可在其中输入学生成绩,在文本框中输入对应的名称即可。在本系统中还可从Excel中导入,从excel导入的代码如下:if(this.openFileDialog1.ShowDialog()=System.Windows.Forms.DialogResult.OK&this.openFileDialog1 .FileName !=)string filename = openFileDialog1.FileName;string strCon = Provider = Microsoft.Jet.OLEDB.4
29、.0 ; + Data Source = + filename + ;Extended Properties=Excel 8.0; OleDbConnection myConn = new OleDbConnection(strCon); myConn.Open(); string strCom = Select * FROM Sheet1$ ; OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); DataSet dataSet1 = new DataSet(); myCommand.Fill(dataSet1,
30、 Sheet1$); myConn.Close(); this.dataGrid1.SetDataBinding (dataSet1,Sheet1$);从dataGrid中将成绩存入sql数据库的代码如下:for(int i=0;i dataGrid1.VisibleRowCount - 1 ;i+)sqlConnection1.Open();string comm2=Insert into 成绩表 (学号,成绩,课程编号,考试性质编号) values(学号,成绩,课程编号,考试性质编号) ; this.sqlCommand2 .CommandText =comm2; this.sqlComm
31、and2 .Parameters .Add (学号,System.Data .SqlDbType .VarChar );this.sqlCommand2 .Parameters 0.Value =this.dataGrid1 i,1.ToString ();this.sqlCommand2 .Parameters .Add (成绩,System.Data .SqlDbType .Int );this.sqlCommand2 .Parameters 1.Value =this.dataGrid1 i,2.ToString ();this.sqlCommand2 .ExecuteNonQuery
32、();this.sqlCommand2.Parameters.Clear();this.sqlCommand2.Dispose();sqlConnection1.Close();教师还可以点击修改成绩菜单,即可出现如下窗体:图4-10修改成绩的实现方法和修改学籍基本相同,在此不再重复。教师还可以点击添加/删除用户菜单,即可出现如下窗体:图4-11在本窗体文本框中输入用户信息,点击添加用户按钮即可将用户添加到sql数据库中,其中用户的初始密码和用户名相同。也可根据输入的用户信息删除此用户。删除的代码如下所示:for (int i=0;imyTable.Rows .Count ;i+)this.m
33、yRow = myTable.Rows i;if (myRow0.ToString ().Trim ()=this.textBox1 .Text .ToString ().Trim ()&myRow1.ToString ().Trim ()=this.textBox2.Text .ToString ().Trim ()&myRow3.ToString ().Trim ()=this.textBox2 .Text .ToString ().Trim ()string comm = delete from 用户信息 where 学号=+this.textBox1 .Text +;this.sqlC
34、ommand1 = new System.Data.SqlClient.SqlCommand ();this.sqlCommand1.CommandType = System.Data.CommandType.Text ;this.sqlCommand1.CommandText = comm;this.sqlCommand1.Connection = this.sqlConnection1 ;this.sqlConnection1.Open ();trythis.sqlCommand1 .ExecuteNonQuery ();MessageBox.Show (用户删除成功,提示);return
35、;catch(Exception exp)MessageBox.Show (exp.ToString ();MessageBox.Show (用户id或密码不存在!,提示);return;当然这种做法对于大量输入用户来说显得比较麻烦,所以也支持从Excel中导入数据,点击“从Excel导入”按钮,会出现如下窗体:图4-12点击“导入”按钮,会出现打开文件对话框,选择要导入的文件,就会全部导入到dataGrid,点击“保存”即可存入数据库。实现方式和成绩导入相同,在此不在重复。5 总 结回顾该系统从选题,到调研、需求分析、设计、编码实现、测试等,论文的撰写,这系列连贯的过程,感想颇多,收获也很多
36、。大致的总结几点,如下:1设计开发一个软件,首先要了解所涉及到行业的现状,一定要想办法进行行业调研,从不同途径获取该行业的专业知识。合理安排系统设计开发时间,进行实际开发会发现需求分析与系统设计占主要的时间,如果前面的工作做好了,编码实现占用的时间很短。所以我们要借助软件工程的思想-对软件开发过程进行控制。2. 在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。3.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而
37、获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试程序带来很大的方便。5. 懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。由于在外面工作以及其他原因,我无法借到专业书籍,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。由于本人是初次开发系统,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。谨请大家提出宝贵的意见。参考文献1 麦斯科.C#设计模式.中国电力出版社.2005年10月02日2 刘亚秋.C#程序设计与应用.电子工业出版社.2004年9月10日3 朱冰.C#语言实用教程.中国铁道出版社.2005年01月24日4 尹立宏.Visual C#.NET应用编程150例.电子工业出版社.2006年2月6日5 王华杰,李律松.精通C#数据库开发.清华大学出版社.2004年05月04日6 王晟.Visual C#.NET数据库开发经典案例解析.清华大学出版社.2005年03月04日
链接地址:https://www.31ppt.com/p-2384259.html