您的当前位置:首页正文

学生信息管理系统论文

2024-03-06 来源:易榕旅网


信息技术系2009-2010第一学期

课程论文

题目 学生信息管理系统

姓 名: 学 号: 班 级: 负责模块: 学生管理,课程管理模块 小组成员: 成 绩: 评阅教师:

2009年 12月9日

1

学生信息管理系统 摘要

学生管理系统用于对学生信息管理,教师信息管理,班级管理,成绩管理,学生所在院系,专业管理等。

目录:

系统功能分析………………………………………………………………2

数据库设计…………………………………………………………………2

各个数据表创建……………………………………………………………3

存储过程创建………………………………………………………………5

学生信息管理系统总括……………………………………………………6

登录模块……………………………………………………………………7

教师管理模块………………………………………………………………8

学生管理模块………………………………………………………………10

课程管理模块………………………………………………………………18

成绩管理模块………………………………………………………………20

班级管理模块………………………………………………………………22

退出管理……………………………………………………………………24

2009-12-9

2

正文

正文内容如下: 一、系统功能分析

功能分析:学生信息管理系统属应用系统。系统是一个集成多功能的信息管理系统,有教师资料管理、学生管理、班级管理、专业管理、课程管理、成绩管理和院系管理功能模块。本系统将大大提高学生信息的管理效率,带来数据共享、网络查询和网络管理等便利,实现学生信息管理的数字化和智能化。

1. 模块划分(整个系统功能结构图)

2. 各模块功能简介

登录模块:本模块主要为用户登录,权限验证,管理员添加,实现系统的多用户管理功能,不同权限的用户,可对其进行不同功能的管理。

教师管理模块:本模块主要对教师的资料信息进行查询,删除,修改和添加。

学生管理模块:本模块主要对学生资料信息进行相应的查询,删除,修改和添加。添加了学生所在院系资料与学生所在专业资料,同时可对院系资料与专业资料进行相应的添加,修改,查询。

课程管理模块:本模块主要对课程资料进行管理,对其进行查询,添加,修改和删除。又详细划分了课程类别资料,对其进行如上操作。

成绩管理模块:本模块对学生成绩进行查询操作,如发现成绩有输入错误,可对其进行相应的修改,还可对学生的成绩进行录入‘

班级管理模块:本模块班级资料信息进行管理,对其进行相应的查询,修改,删除和添加。 二、数据库设计

根据学生管理系统所要求的数据信息,创建数据库SMSStudent ,根据各模块可创建如下10

3

个数据表,其字段名,数据类型等内容如下:

1. 各表及字段 Class 表:

Course 表:

Coursetype 表:

Department 表:

Grade 表:

4

Speciality 表:

Speciality_course 表:

Student 表:

Teacher 表:

5

Users 表:

添加:class_stu_view 视图表。 2. 系统中模块使用的存储过程

本数据库共创建3处存储过程,其存储过程为: 教师资料查询(teacher.aspx页面) Employess_Sel 存储过程:

CREATE PROCEDURE [dbo].[Employess_Sel] @lastname nvarchar (20), @department varchar (30) AS select

teacherid,teachername,department.departmentid,department.departmentname,sex,telephone

from

teacher,department

where

teacher.departmentid=department.departmentid and ( teachername like '%' + @lastname + '%' and department.departmentname=@department)

学生资料查询(student.aspx页面) Student_Sel 存储过程:

CREATE PROCEDURE [dbo].[Student_Sel] @lastname nvarchar (20), @department varchar (30), @studentid varchar(10) AS

select * from [student],[class] where student.classid=class.classid and (( studentname like '%' + @lastname + '%' or studentid=@studentid ) and

6

class.classname=@department)

管理员添加(register.aspx页面) procAdmin 存储过程:

CREATE procedure [dbo].[procAdmin] @Auser char(10), @Apwd varchar(50), @Atype varchar(20) AS insert

into

users(username,mypassword,usertype)

values(@Auser,@Apwd,@Atype)

三、各模块页面设计,具体功能实现 1. 学生信息管理系统总括:

开发环境:Microsoft Visual Studio 2005 开发语言:C#,JavaScript

数据库: Microsoft SQL Server 2005

辅助工具:Adobe Photoshop CS2,Dreamweaver MX 2004 整体页面架构: 框架集(crm_admin_main.htm)(Width=763)

如上图所示

四个框架内容文件:(top.htm, left.htm, switch.htm, body.htm)

1. top.htm页面:JavaScript 特效rain.js(详细代码见项目);

2. left.htm页面:JavaScript 级联菜单,全部由JavaScript生成,通过数组定义子菜单,

可任意添加目录项与级联子项,程序可扩展性良好。

3. switch .htm页面:JavaScript 作开关按钮,实现框架的展开与合并功能。 4. body.htm页面:定位框架的主内容文件。(主要是aspx文件的定位:后面加xxx.aspx

target=’mainFrame’。例如:item_link[2][0]=\"student.aspx target='mainFrame'\";) 注:本页面由Dreamweaver MX 2004实现,经JavaScript代码进行修改而成。

7

2. 全局配置文件:

数据库访问类connDB.cs

public static SqlConnection createConn() {

string sms_connstr =

System.Configuration.ConfigurationManager.ConnectionStrings[\"con\"].ToString();

SqlConnection conn = new SqlConnection(sms_connstr); return conn; }

3. Web.Config文件

配置信息:数据库连接字符串

4. Web.sitemap文件

配置整个站点的层次结构

以学生管理为例,站点地图代码如下:

5. SiteMapPath控件

SiteMapPath控件数据内容由Web.sitemap文件自动导航 一、登录模块:

1. 用户注册页面(register.aspx) 如下图:

本页面可向系统注册管理员,通过身份验证获得整个系统的管理权限。注册是同过MD5加密算法对密码框(txtpwd.Text)进行加密。

8

调用加密算法:String str_pwd =

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.mypassword.Text, \"md5\").ToString();

实现方法:首先定义 ExecuteInsert() 方法(代码详见项目),在点击添加按钮时调用,但在调用前必

须判断该注册用户是否已存在或注册的用户和密码不能为空,代码如下;

string str_user = txtuser.Text;

string str_sel = \"select count(username) from users where username='\" + str_user + \"'\"; int count = data.ExecuteSel(str_sel); if (count > 0)//用户已存在 {

Page.ClientScript.RegisterStartupScript(this.GetType(), \"show_message\", \"\"); } else {

if (this.txtuser.Text == \"\" || this.txtpwd.Text == \"\")

{

Page.ClientScript.RegisterStartupScript(this.GetType(), \"show_message\", \"\"); } else {

this.ExecuteInsert(); } }

2. 用户登录页面(logoin.aspx) 如下图:

本页面主要实现用户登录,通过MD5加密算法,确保数据库访问安全性。 三、教师管理模块:

1. 教师资料管理页面 (teacher.aspx)

9

本页面主要对教师资料管理,查询和删除。

2. 教师资料添加页面(addteacher.aspx)

本页面主要对教师资料进行添加功能,对应 teacher 表。

3. 教师信息修改页面(Editteacher.aspx)

10

此页面通过 teacher.aspx 页面传值,来对教师详细资料信息进行数据绑定。保存按钮主要代码:

string sms_sqlstr = \"update teacher set Teachername='\" + TextBox2.Text + \"',sex='\" + RadioButtonList1.SelectedItem.Text + \"',technicalpost='\" + DropDownList2.SelectedItem.Text + \"',telephone='\" + TextBox8.Text + \"',homeaddr='\" + TextBox7.Text + \"',pwd='\" + TextBox9.Text + \"',remark='\" + TextBox6.Text + \"',departmentid='\" + DropDownList3.SelectedValue.ToString() + \"' where Teacherid='\" + TextBox1.Text + \"'\";

SqlCommand sms_comm = new SqlCommand(sms_sqlstr, sms_conn); sms_comm.Connection.Open();

四、学生管理模块:

1. 学生资料管理页面(student.aspx) 如下图所示:

数据绑定控件GridView ,掌握该控件的灵活用法,掌握常用属性设置,主要实现其数据绑定功能与分页功能。数据绑定的实现方式很多,可选用直接绑定 BoundField ,或选用 TemplateField等,如学号,姓名,选择删除字段用的是 TemplateField ,在 TemplateField 区域中放入相应的控件,作成如图效果,掌握数据集对控件数据的填充方法,代码如下:

sms_conn.Open();

sms_sqlstr = \"select * from [student],[class] where student.classid=class.classid\"; SqlDataAdapter sms_adp = new SqlDataAdapter(sms_sqlstr,sms_conn); DataSet sms_ds = new DataSet(); sms_adp.Fill(sms_ds); sms_conn.Close();

sms_stutent.DataSource = sms_ds; sms_stutent.DataBind(); sms_ds.Clear();

sms_ds.Dispose();

实现选择删除列的方法:全选、反选

11

全选代码:

for (int i = 0; i < sms_stutent.Rows.Count; i++)

{

CheckBox chkSelect = (CheckBox)sms_stutent.Rows[i].FindControl(\"chkSelect\"); chkSelect.Checked = true;

}

反选代码:

for (int i = 0; i < sms_stutent.Rows.Count; i++)

{

CheckBox chkSelect = (CheckBox)sms_stutent.Rows[i].FindControl(\"chkSelect\"); chkSelect.Checked = !chkSelect.Checked; }

重点难点为:删除按钮的事件,如何取 studentid 的键值,实现方法的代码为: for (int i = 0; i < sms_stutent.Rows.Count; i++) {

CheckBox chkSelect = (CheckBox)sms_stutent.Rows[i].FindControl(\"chkSelect\"); if (chkSelect.Checked) {

//如何选中ID列?str

string str = ((Label)sms_stutent.Rows[i].FindControl(\"Label3\")).Text; string sms_sqlstr = \"delete from student where studentid='\" + str + \"'\"; SqlCommand sms_comm = new SqlCommand(sms_sqlstr, sms_conn); sms_comm.Connection.Open(); try {

sms_comm.ExecuteNonQuery(); sms_lbl_note.Text = \"删除成功\"; }

catch (SqlException) {

sms_lbl_note.Text = \"删除失败\"; sms_lbl_note.Style[\"color\"] = \"red\"; }

sms_comm.Connection.Close(); } }

SMS_BindGrid();

分页中用到(其它分页均用该方式):

Font-Size=\"Small\" >当前页:<%#

((GridView)Container.NamingContainer).PageIndex+1 %>

12

Font-Size=\"Small\">总页数:

<%#((GridView)Container.NamingContainer).PageCount %>

runat=\"server\" CommandArgument=\"First\" CommandName=\"Page\"

Enable=\"<%#

((GridView)Container.NamingContainer).PageIndex != 0 %>\" Font-Size=\"Small\">首页

runat=\"server\" CommandArgument=\"Prev\"

CommandName=\"Page\"

Enable=\"<%#((GridView)Container.NamingContainer).PageIndex!=0 %>\" Font-Size=\"Small\">上一页

runat=\"server\" CommandArgument=\"Next\" CommandName=\"Page\"

Enable=\"<%#((GridView)Container.NamingContainer).PageIndex!=0 %>\" Font-Size=\"Small\">下一页

runat=\"server\" CommandArgument=\"Last\" CommandName=\"Page\"

Enable=\"<%#((GridView)Container.NamingContainer).PageIndex!=0 %>\"

Font-Size=\"Small\" >尾页

实现分页的事件:

protected void sms_stutent_PageIndexChanging(object sender, GridViewPageEventArgs e) { try {

sms_stutent.PageIndex = e.NewPageIndex; SMS_BindGrid(); } catch { } }

本页面的查询按钮运用的是存储过程进行查询(存储过程见数据库设计),调用存储过程的代码如下:

sms_conn.Open();

SqlCommand sms_comm = new SqlCommand(\"Student_Sel\",sms_conn); sms_comm.CommandType = CommandType.StoredProcedure; sms_comm.CommandText = \"Student_Sel\"; sms_comm.Connection =sms_conn;

SqlDataAdapter sms_da = new SqlDataAdapter(sms_comm);

13

sms_da.SelectCommand.Parameters.Add(\"@lastname\",SqlDbType.NVarChar); sms_da.SelectCommand.Parameters.Add(\"@department\", SqlDbType.VarChar,30); sms_da.SelectCommand.Parameters.Add(\"@studentid\", SqlDbType.VarChar,10); sms_da.SelectCommand.Parameters[\"@lastname\"].Value =

this.txtStuName.Text.Trim().Replace(\"'\",\"'\");

sms_da.SelectCommand.Parameters[\"@department\"].Value =

this.DropDownList1.SelectedValue.ToString();

sms_da.SelectCommand.Parameters[\"@studentid\"].Value =

this.txtStuID.Text.Trim().Replace(\"'\",\"'\");

DataSet sms_ds = new DataSet(); sms_da.Fill(sms_ds); sms_conn.Close();

sms_stutent.DataSource = sms_ds; sms_stutent.DataBind();

GridView控件中RowDataBound 事件,可对其样式进行设置。鼠标经过行时颜色的变化。其代码

如下:

if (e.Row.RowType == DataControlRowType.DataRow) {

//鼠标经过时,行背景色变

e.Row.Attributes.Add(\"onmouseover\", \"this.style.backgroundColor='#E6F5FA'\"); //鼠标移出时,行背景色变

e.Row.Attributes.Add(\"onmouseout\", \"this.style.backgroundColor='#FFFFFF'\"); //如果是绑定数据行 }

注:其他也面凡是用到GridView 控件均用到该事件。

2. 学生资料编辑页面(Editstu.aspx)

主要对所对应得学生信息进行编辑修改,本页面的重点为页面之间的传值,在 student.aspx 页面中设置学号列中HyperLink 控件的属性:

NavigateUrl='<%# Eval(\"studentid\'

在该页面中获取其id 并对其他控件进行数据绑定,其方法为:

string id = Request.QueryString[\"id\"];

14

string sqlstr = \"select * from class_stu_view where studentid='\" + id + \"' \"; SqlCommand cmd = new SqlCommand(sqlstr, conn); SqlDataAdapter ads = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); ads.Fill(ds, \"s\");

this.txtStudentID.Text = ds.Tables[\"s\"].Rows[0][0].ToString();

this.txtStudentName.Text = ds.Tables[\"s\"].Rows[0][1].ToString(); this.rbtnlSex.SelectedValue = ds.Tables[\"s\"].Rows[0][2].ToString(); this.ddlClass.DataSource = ds.Tables[\"s\"];

this.ddlClass.SelectedItem.Text = ds.Tables[\"s\"].Rows[0][12].ToString(); this.txtBirthdate.Text = ds.Tables[\"s\"].Rows[0][3].ToString(); this.txtTelephone.Text = ds.Tables[\"s\"].Rows[0][5].ToString(); this.txtCredithour.Text = ds.Tables[\"s\"].Rows[0][6].ToString(); this.ddlRu_date.DataSource = ds.Tables[\"s\"];

this.ddlRu_date.SelectedItem.Text = ds.Tables[\"s\"].Rows[0][7].ToString(); this.txtPwd.Text = ds.Tables[\"s\"].Rows[0][9].ToString(); this.txtAddr.Text = ds.Tables[\"s\"].Rows[0][8].ToString(); this.txtRemark.Text = ds.Tables[\"s\"].Rows[0][10].ToString(); 数据绑定之后,可对其相应的信息进行修改、更新,其代码为:

string sms_sqlstr = \"update student set studentname='\" + txtStudentName.Text + \"',sex='\"

+ rbtnlSex.SelectedItem.Text + \"',telephone='\" + txtTelephone.Text + \"',address='\" + txtAddr.Text + \"',credithour='\" + txtCredithour.Text + \"',pwd='\" + txtPwd.Text + \"',remark='\" + txtRemark.Text + \"',ru_date='\" + ddlRu_date.SelectedValue.ToString() + \"',birthday='\" + txtBirthdate.Text + \"' where studentid='\" + txtStudentID.Text + \"'\";

SqlCommand sms_comm = new SqlCommand(sms_sqlstr, conn); sms_comm.Connection.Open(); try {

sms_comm.ExecuteNonQuery(); sms_lbl_note.Text = \"编辑成功\"; }

catch (SqlException) {

sms_lbl_note.Text = \"编辑失败\"; sms_lbl_note.Style[\"color\"] = \"red\"; }

sms_comm.Connection.Close(); sms_DataBind();

3. 学生资料添加页面(addstu.aspx)

15

本页面主要对学生的信息进行相应的添加功能,主要运用了 insert SQL语句:

sms_sqlstr = \"insert into

student(studentname,sex,classid,telephone,address,pwd,remark,ru_date,studentid,birthday,credithour)

values('\"+txtStudentName.Text+\"','\"+rbtnlSex.SelectedItem.Text+\"','\"+ddlClass.SelectedValue.ToString()+\"','\"+txtTelephone.Text+\"','\"+txtAddr.Text+\"','\"+txtPwd.Text+\"','\"+txtRemark.Text+\"','\"+ddlRu_date.Text+\"','\"+txtStudentID.Text+\"','\"+txtBirthdate.Text+\"','\"+txtCredithour.Text+\"')\";

SqlCommand sms_comm=new SqlCommand(sms_sqlstr,sms_conn); sms_comm.Connection.Open(); try {

sms_comm.ExecuteNonQuery(); sms_lbl_note.Text = \"编辑成功\"; }

catch (SqlException){

sms_lbl_note.Text = \"编辑失败\"; sms_lbl_note.Style[\"color\"] = \"red\"; }

sms_comm.Connection.Close();

4. 学生所在院系资料页面(Department.aspx)

16

本页面采用Repeater控件实现数据绑定:具体实现方法为首先创建3行5列的表格进行布局,在其对应的单元格填充相关内容和控件,然后切换到源代码文件中在其Repeater控件代码处添加 , 在将表格代码剪切到其标记内部即可。Repeater控件的 ItemCommand 事件,内部控件的事件均发生在其内部。其功能主要是对该控件内部的控件(LinkButton控件)进行事件的编辑,其代码如下:

public void RepeaterIC(object sender,RepeaterCommandEventArgs e) {

System.Web.UI.WebControls.LinkButton update =

(LinkButton)e.Item.FindControl(\"LinkButton2\");

System.Web.UI.WebControls.LinkButton cancel =

(LinkButton)e.Item.FindControl(\"LinkButton1\");

System.Web.UI.WebControls.LinkButton edit =

(LinkButton)e.Item.FindControl(\"LinkButton3\");

System.Web.UI.WebControls.LinkButton delete =

(LinkButton)e.Item.FindControl(\"LinkButton4\");

System.Web.UI.WebControls.Label LabDepid = (Label)e.Item.FindControl(\"LabDepid\"); System.Web.UI.WebControls.Label LabDepname =

(Label)e.Item.FindControl(\"LabDepname\");

System.Web.UI.WebControls.Label LabDephead =

(Label)e.Item.FindControl(\"LabDephead\");

System.Web.UI.WebControls.TextBox TetDepid =

(TextBox)e.Item.FindControl(\"TxtDepid\");

System.Web.UI.WebControls.TextBox TetDepname =

(TextBox)e.Item.FindControl(\"TxtDepname\");

System.Web.UI.WebControls.TextBox TetDephead =

(TextBox)e.Item.FindControl(\"TxtDephead\");

if (e.CommandName == \"edit\") {

update.Visible = true; cancel.Visible = true; edit.Visible = false;

LabDepname.Visible = false; LabDephead.Visible = false;

TetDepname.Visible = true; TetDephead.Visible = true; }

if (e.CommandName == \"cancel\") {

SMS_BindRepeater(); }

if (e.CommandName == \"update\") {

sqlstr = \"update Department set departmentname='\" + TetDepname.Text +

\"',departmenthead='\" + TetDephead.Text + \"'where departmentid='\" + LabDepid.Text + \"'\";

17

SqlCommand sqlcom = new SqlCommand(sqlstr, sms_conn); sms_conn.Open();

sqlcom.ExecuteNonQuery(); SMS_BindRepeater(); sms_conn.Close(); }

if (e.CommandName == \"delete\") {

sqlstr = \"delete Department where departmentid='\" + LabDepid.Text + \"'\"; SqlCommand sqlcom = new SqlCommand(sqlstr, sms_conn); sms_conn.Open();

sqlcom.ExecuteNonQuery(); SMS_BindRepeater(); sms_conn.Close(); }

}

系部查询按钮事件直接用SQL语句实现

5. 系部资料添加页面(addDepartment.aspx)

该页面主要实现系部资料的添加功能,其内容对应数据库 Department 表。

6. 学生所在专业资料页面(speciality.aspx)

本页面主要对学生所在专业资料进行管理,并可对专业名称进行修改。其主要代码为GridView 事件代码,有RowCancelingEdit,RowEditing,RowUpdating等事件。其主要代码为SQL语句 ,利用数据集对数据进行填充绑定。

18

其中,分页,删除,反选,全选,取消事件同student.aspx页面。

7. 专业资料添加页面(addspeciality.aspx)

本页面主要实现专业信息的添加,对应 speciality 表。 五、课程管理模块:

1. 课程资料管理页面(course.aspx)

本页面对课程进行系统管理,功能的实现主要为GridView 控件的使用。其课程查

询按钮的代码为:

sms_sqlstr = \"select * from [course],[coursetype] where

course.coursetypeid=coursetype.coursetypeid and (coursename='\" + TextBox1.Text + \"' or courseid='\" + TextBox2.Text + \"' or coursetype.typename='\" + DropDownList1.SelectedItem.Text + \"')\";

sms_conn.Open();

SqlDataAdapter sms_da = new SqlDataAdapter(sms_sqlstr, sms_conn); DataSet sms_ds = new DataSet(); sms_da.Fill(sms_ds); sms_conn.Close();

sms_course.DataSource = sms_ds; sms_course.DataBind();

2. 课程资料添加页面(addcourse.aspx)

19

该页面对学生所修课程进行相应的添加,对应 Course 表。添加代码:

sms_sqlstr = \"insert into

course(courseid,coursename,coursetypeid,credithour,totalperiod,weekperiod,remark) values('\"+txtCourseID.Text+\"','\"+txtCourseName.Text+\"','\"+ddlCourseType.SelectedValue.ToString()+\"','\"+ddlCredithour.SelectedValue.ToString()+\"','\"+txtTotalperiod.Text+\"','\"+ddlWeekperiod.SelectedValue.ToString()+\"','\"+txtRemark.Text+\"')\";

SqlCommand sms_comm = new SqlCommand(sms_sqlstr,sms_conn); sms_comm.Connection.Open(); try {

sms_comm.ExecuteNonQuery(); Response.Redirect(\"course.aspx\"); sms_lbl_note.Text = \"添加成功\"; } catch{

sms_lbl_note.Text = \"添加失败\"; sms_lbl_note.Style[\"color\"] = \"red\"; }

sms_comm.Connection.Close();

3. 课程类别资料页面(coursetype.aspx)

本页面对课程进行分类管理,可对课程名进行相应修改操作,用Repeater 控件实现,

20

具体做法为,在控件中布局1行7列的表格,并对相应字段进行数据绑定。 该页面的查询按钮事件代码:

sqlstr = \"select * from coursetype where

coursetypeid='\"+DropDownList1.SelectedValue.ToString() +\"'\";

SqlDataAdapter cmd = new SqlDataAdapter(sqlstr, sms_conn);

DataSet ds = new DataSet(); cmd.Fill(ds, \"T\");

RepeaterD.DataSource = ds.Tables[\"T\"]; RepeaterD.DataBind();

4. 课程类别资料添加页面(addcoursetype.aspx)

本页面主要对课程的类别添加,对应 coursetype 表。 六、成绩管理模块:

1. 学生成绩查询页面(grade.aspx)

本页面实现了对学生成绩查询管理,以课程名为导航,使用DataList 控件对课程号

进行传值绑定,实现课程所对应学生成绩查询功能,其DataList主属性代码为:

NavigateUrl='<%#Eval(\"courseid\'><%#Eval(\"coursename\")%>

使用GridView 对其成绩进行相应的绑定,如若发现其成绩有输入错误,经获权限后方可对其进行修改(权限用户方面作的不好,有待实现),其中编辑实现为GridView 事 件代码,有RowCancelingEdit,RowEditing,RowUpdating等事件。其主要代码为SQL语句 ,利用数据集对数据进行填充绑定。

21

该页面的查询按钮事件代码:

if (txtStudentName.Text == \"\" && txtStudentID.Text != \"\")

{

sms_sqlstr = \"select * from [student],[grade],[course] where

grade.studentid=student.studentid and grade.courseid=course.courseid and (student.studentid='\" +txtStudentID.Text+ \"')\";

}

else if (txtStudentID.Text == \"\" && (txtStudentName.Text!= \"\")) {

sms_sqlstr = \"select * from [student],[grade],[course] where

grade.studentid=student.studentid and grade.courseid=course.courseid and (student.studentname='\" +txtStudentName.Text + \"')\";

}

else if ((txtStudentName.Text== \"\") && (txtStudentID.Text== \"\")) {

sms_sqlstr = \"select * from [student],[grade],[course] where

grade.studentid=student.studentid and grade.courseid=course.courseid and (student.studentname='\" +txtStudentName.Text+ \"' or student.studentid='\"

+txtStudentID.Text+ \"' or course.coursename='\" + DropDownList1.SelectedItem.Text + \"')\";

} else {

sms_sqlstr = \"select * from [student],[grade],[course] where

grade.studentid=student.studentid and grade.courseid=course.courseid and (student.studentname='\" +txtStudentName.Text+ \"' or student.studentid='\"

+txtStudentID.Text+ \"' or course.coursename='\" + DropDownList1.SelectedItem.Text + \"')\";

}

sms_conn.Open();

SqlDataAdapter sms_da = new SqlDataAdapter(sms_sqlstr, sms_conn); DataSet sms_ds = new DataSet(); sms_da.Fill(sms_ds); sms_conn.Close();

sms_grade.DataSource = sms_ds; sms_grade.DataBind(); txtStudentName.Text= \"\";

txtStudentID.EnableViewState = false;

其中,分页,删除,反选,全选,取消事件同student.aspx页面。

2. 学生成绩录入页面(addgrade.aspx)

22

本页面主要对学生的成绩进行录入,其缺点为只能同时对1个同学,进行数据输入,如若人数较多时,效率很低,可对其进行改进,利用通过鼠标点击某个班级,直接跳转到全班学生,可对其进行一一录入,可用GridView 等数据绑定控件实现。

本页面得功能是利用回传页面,通过输入学号,对学生姓名,所修学分,进行数据刷新,从而确定其成绩,其回传代码为:

if (IsPostBack) { try {

string sqlstr = \"select studentname,credithour from student where

studentid='\" + txtStudentID.Text + \"'\";

SqlCommand cmd = new SqlCommand(sqlstr, sms_conn); sms_conn.Open(); cmd.ExecuteScalar();

SqlDataAdapter adp = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds, \"T\");

Label2.Text = ds.Tables[\"T\"].Rows[0][0].ToString(); Label1.Text = ds.Tables[\"T\"].Rows[0][1].ToString(); }

catch (Exception) {

sms_lbl_note.Text = \"输入的学号不存在,核对后请重新输入!\"; sms_lbl_note.Style[\"color\"] = \"red\"; } } else {

ddlBind();

}

对学生成绩录入时首先判断学生成绩是否已存在,若存在,录入失败!!,否则,成绩录入成功!

七、班级管理模块:

1. 班级资料管理页面(calss.aspx)

23

本页面对班级资料管理,通过查询按钮可对班级信息查询,同样用到 GridView 控件对其数据进行绑定,该页面的查询按钮事件代码:、

string sms_sqlstr = \"select * from [class],[speciality],[student] where

speciality.specialityid=class.specialityid and student.studentid=class.monitorid and (classname='\" +txtClassName.Text+ \"' or speciality.specialityname='\" + DropDownList1.SelectedItem.Text + \"')\";

sms_conn.Open();

SqlDataAdapter sms_da = new SqlDataAdapter(sms_sqlstr, sms_conn); DataSet sms_ds = new DataSet(); sms_da.Fill(sms_ds); sms_conn.Close();

sms_class.DataSource = sms_ds; sms_class.DataBind();

注:该处所遇到的问题:该班级有多少名学生,就对应几条同样班级信息的资料。问题已解决:

关联表的条件不正确, 条件语句是where student.studentid=class.monitorid,并非是student.classid=class.classid!!

GridView中编辑列有RowCancelingEdit,RowEditing,RowUpdating,RowDeleting等事

件,通过权限可对详细资料(班级名),入学日期和班长姓名进行修改编辑,实现班级资料的准确性。

删除事件代码:

string str = ((Label)sms_class.Rows[e.RowIndex].Cells[1].Controls[1]).Text; string sms_sqlstr = \"delete from class where classid='\" +str+ \"'\"; SqlCommand sms_comm = new SqlCommand(sms_sqlstr, sms_conn); sms_conn.Open(); try {

sms_comm.ExecuteNonQuery(); sms_lbl_note.Text = \"删除成功\"; }

catch (SqlException) {

24

sms_lbl_note.Text = \"删除失败\"; sms_lbl_note.Style[\"color\"] = \"red\"; }

sms_comm.Connection.Close(); Bind();

重点为键值的获取:

string str = ((Label)sms_class.Rows[e.RowIndex].Cells[1].Controls[1]).Text

2. 班级资料添加(addclass.aspx)

本页面主要对学生所在班级的资料进行添加功能,对应 class 表。 八、退出管理:

JavaScript 脚本语言实现,首先定义 logout() 方法,在鼠标单击时调用该方法即可。具体代码如下:

document.writeln(\" class=parentlink

href=javascript:

onclick=javascript:logout();this.blur();>src=images/left/left.gif>\");

学生信息管理系统总结:

本学生信息管理系统基本功能已实现,有些功能存在一些局限性,编程代码的复用性不太完善,页面设计比较简单,缺乏修饰效果,欠缺CSS样式,功能模块的实现需要进一步完善。

25

26

因篇幅问题不能全部显示,请点此查看更多更全内容