B08050423陈志福WEB学生成绩管理.docx

上传人:b****8 文档编号:10960477 上传时间:2023-02-24 格式:DOCX 页数:20 大小:449.08KB
下载 相关 举报
B08050423陈志福WEB学生成绩管理.docx_第1页
第1页 / 共20页
B08050423陈志福WEB学生成绩管理.docx_第2页
第2页 / 共20页
B08050423陈志福WEB学生成绩管理.docx_第3页
第3页 / 共20页
B08050423陈志福WEB学生成绩管理.docx_第4页
第4页 / 共20页
B08050423陈志福WEB学生成绩管理.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

B08050423陈志福WEB学生成绩管理.docx

《B08050423陈志福WEB学生成绩管理.docx》由会员分享,可在线阅读,更多相关《B08050423陈志福WEB学生成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。

B08050423陈志福WEB学生成绩管理.docx

B08050423陈志福WEB学生成绩管理

 

bs架构应用软件设计

 

题目:

学生成绩管理

 

学号:

B08050423

姓名:

陈志福

专业:

计算机科学与技术

指导教师:

石念峰

 

2011年10月8日

一、设计目的

《B/S架构应用软件设计》是《WEB程序设计》课程之后进行的实践环节。

通过该课程设计,使学生进一步加深对Web程序设计基本概念、B/S架构及开发流程和动态网站设计方法等知识的理解,提高Web技术编程能力和调试能力,牢固掌握ASP.NETWeb程序设计技术,培养学生综合运用面向对象程序设计、数据库原理、web程序设计和软件工程等相关课程知识独立解决实际问题的能力。

通过该课程设计,应达到下列基本要求:

1.熟练掌握C#和Web程序设计的基本知识和技能;

2.基本掌握web程序开发的基本思路和方法,熟悉web程序开发过程,并初步具备利用面向对象的编程思想和web程序设计技术等综合知识完成网站开发的能力;

3.初步具备学生自学参考书籍及查阅手册、图表和文献资料的能力;

4.初步养成重视软件测试、重视文档写作、重视界面设计的程序开发习惯;

5.初步养成学生团队协作能力。

2、设计题目及要求

2.1设计题目

B/S模式的学生成绩管理系统。

2.2基本要求

(1)数据库设计要符合范式要求。

(2)需至少包含以下功能或页面:

①提供学生成绩的查询功能,输入学生的学号或姓名,能查找出该生各学期的成绩;

②能对成绩数据进行添加、删除、修改等基本操作,并能进行必要的统计计算,如计算不及格人数、给予警告名单等;

③用户权限控制,一般用户只能查询,管理员用户可以输入和修改数据。

 

3、总体设计

3.1、系统设计分析

本系统功能主要分为六大类:

登录管理:

一般用户或管理员用户权限管理。

成绩查询:

以学号,姓名,学期为关键字查询等。

成绩编辑:

管理员查询后可以直接编辑成绩。

成绩删除:

根据学号查询后可删除成绩,仅限管理员。

成绩添加:

添加学生成绩信息。

统计成绩:

统计每门课每学期不及格人数等。

本系统性能力求易于使用,具体有较高的扩展性和可维护性。

3.2、系统模块设计

该学生成绩管理系统是用ASP.NET+SQLServer2005数据库作为后台,系统是基于Web的学生成绩管理系统,在系统中分为两种用户类型:

学生、管理员。

主要有用户登录模块、成绩查询模块、成绩管理模块构成。

用户登录模块功能:

管理员和一般用户通过用户名和密码登录。

成绩查询模块功能:

能够按学号、姓名查询某个学生成绩,管理员能够查询所有学生的所有成绩,能够统计某班某科学生的平均成绩。

成绩管理模块功能:

能够录入成绩、编辑和删除成绩。

3.3、数据库设计

数据库设计是对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能有效地存取数据,满足用户的信息要求和处理要求。

数据库设计包括数据库的结构设计和数据库的行为设计,数据库的结构设计是根据给定的应用环境,进行数据库的模式或子模式的设计。

本系统的数据库设计采用基于E-R模型的数据库设计方法。

首先,根据调研结果分析系统中存在哪些实体,并确定各实体的属性,再找出各实体间的联系,确定各联系的派生属性,最后按照数据库设计原则产生本系统的所有数据库结构并优化。

本系统中存在的实体有:

学生、课程各实体都有自己相应的属性,其中“学生”实体和“课程”之间存在着多对多的联系,其派生属性为成绩。

(2)为数据E-R图。

 

 

图3-2E-R图

4、详细设计

详细设计即界面设计和代码编写

4.1、界面分析与规范。

在人机界面设计中,首先应进行界面设计分析,进行用户特性分析,用户任务分析,记录用户有关系统的概念、术语,这项工作可与多媒体应用系统分析结合进行,囊括于用户分析报告里。

考虑到用户操作方便、直观。

主要用一个页面为框架,用div布局,先用一个div1,作为整个框架,调好尺寸,然后找个图片作为背景,再用五个div放在div1里面,一个用个页头,一个页尾,一个用来导航,一个用来显示操作页面,一个用来显示当前登陆的用户。

导航块是用几个按钮做的。

界面主要使用了一个母板页,其他页面都调用母板页,从而在外观上保持一致。

图4-1母板页

4.2、用户登录模块

1、界面设计:

如图4-2所示。

文本框(User_Name):

输入用户名

文本框(User_Pass):

输入用户密码

按钮(UserLogin):

登录按钮

按钮(User_reset):

重置按钮

复选框(checkBoxAmdin):

选择用户类型。

图4-2登录页面

2、代码设计:

在Default.aspx的设计里,双击“登录”按钮,开发环境会自动为该按钮的click事件建立事件处理函数,并与“登录”按钮关联。

也就是说,只要用户单击“登录”按钮,系统就自动执行该按钮的click事件处理函数。

该函数的代码如下:

protectedvoidbtnOK_Click(objectsender,EventArgse)

{

if(txtName.Text==String.Empty||txtPwd.Text==String.Empty)

{

labelRed1.Visible=labelRed2.Visible=true;

return;

}

Session["username"]=txtName.Text.Trim();

Session["password"]=txtPwd.Text.Trim();

Session["admin"]=checkBoxAdmin.Checked.ToString();

Server.Transfer("~/Search.aspx");

3、在Default.aspx的设计里,双击“重置”按钮,进入该按钮的事件处理函数。

代码如下。

protectedvoidbtnReset_Click(objectsender,EventArgse)

{

txtName.Text=txtPwd.Text=String.Empty;

checkBoxAdmin.Checked=false;

}

4、在此需要指出的时,为防止用户非法直接通过路径去访问其他页面而掉过登录页面,检测用户合法性的代码,安排到模板页的Loading函数中了。

该方法代码如下:

protectedvoidPage_Load(objectsender,EventArgse)

{

Page.Title="欢迎登录成绩管理系统!

";

if(IsPostBack)

return;

StringstrAdmin=Session["admin"]asString;

StringstrName=Session["username"]asString;

StringstrPwd=Session["password"]asString;

labelN.Visible=labelName.Visible=btnLogOut.Visible=false;

btnAddScore.Visible=btnSearch.Visible=btnUserMan.Visible=false;

btnCountNum.Visible=false;

//panelSearch.Visible=false;

if(Session["reLogin"]asString=="true")

{

Session["reLogin"]="false";

return;

}

if(strAdmin==String.Empty||strName==String.Empty||strPwd==String.Empty||

strAdmin==null||strName==null||strPwd==null)

{

Session["reLogin"]="true";

Server.Transfer("~/Default.aspx");

return;

}

StringconStr=ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnectionsqlconn=newSqlConnection(conStr);

SqlCommandsqlcommand=newSqlCommand();

sqlcommand.Connection=sqlconn;

sqlconn.Open();

sqlcommand.CommandText=String.Format("selectadminfromuserTablewhereusername='{0}'andpassword='{1}'",strName,strPwd);

SqlDataReaderreader=sqlcommand.ExecuteReader();

boolredirect=true;

while(reader.Read())

{

if(strAdmin==reader.GetBoolean(0).ToString())

redirect=false;

}

sqlcommand=null;

sqlconn.Close();

sqlconn=null;

if(redirect)

{

Session["reLogin"]="true";

Server.Transfer("~/Default.aspx");

}

else

{

labelN.Visible=labelName.Visible=btnLogOut.Visible=true;

btnSearch.Visible=true;

if(strAdmin=="True")

{

btnAddScore.Visible=btnUserMan.Visible=true;

btnCountNum.Visible=true;

}

labelName.Text=strName;

}

}

5、双击模板页的退出登录按钮,添加退出登录代码:

protectedvoidbtnLogOut_Click(objectsender,EventArgse)

{

Session["admin"]=String.Empty;

Session["username"]=String.Empty;

Session["password"]=String.Empty;

labelN.Visible=labelName.Visible=btnLogOut.Visible=false;

panelControl.Visible=false;

Session["reLogin"]=String.Empty;

Session["reLogin"]="true";

Server.Transfer("~/Default.aspx");

}

4.3、成绩查询模块

1、界面设计:

如图4-3所示。

图4-3成绩查询模块

2、代码设计:

protectedvoidbtnSearchScore_Click(objectsender,EventArgse)

{

gvTerm1.Visible=gvTerm2.Visible=false;

StringsNumber=String.Empty;

StringcomText=String.Empty;

if(!

checkAdmin()&&txtInput.Text.Trim()==String.Empty)

return;

if(rbtnNo.Checked)

sNumber=txtInput.Text.Trim();

elseif(rbtnName.Checked)

{

comText="selectsnofromstudentwheresname='"+txtInput.Text.Trim()+"'";

StringsnoTemp=BaseClass.ExecuteOne(comText);

if(snoTemp!

=null&&snoTemp!

=String.Empty)

sNumber=snoTemp;

else

return;

}

DataSetds=newDataSet();

StringconStr=ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnectionsqlconn=newSqlConnection(conStr);

sqlconn.Open();

if(ddlTerm.SelectedIndex==0||ddlTerm.SelectedIndex==2)

{

gvTerm1.Visible=true;

if(checkAdmin()&&txtInput.Text==String.Empty)

{

comText="selectstudent.sno,sname,vb,c,cpp,csharpfromterm1,studentwherestudent.sno=term1.sno";

}

else

{

comText="selectstudent.sno,sname,vb,c,cpp,csharpfromterm1,student"

+"wherestudent.sno=term1.snoandstudent.sno='"+sNumber+"'";

}

SqlDataAdapterreader=newSqlDataAdapter(comText,sqlconn);

reader.Fill(ds,"stuScore");

gvTerm1.DataSource=ds.Tables["stuScore"].DefaultView;

gvTerm1.DataBind();

}

if(ddlTerm.SelectedIndex==1||ddlTerm.SelectedIndex==2)

{

gvTerm2.Visible=true;

if(checkAdmin()&&txtInput.Text==String.Empty)

{

comText="selectstudent.sno,sname,yuwen,shuxue,yingyu,tiyufromterm2,studentwherestudent.sno=term2.sno";

}

else

{

comText="selectstudent.sno,sname,yuwen,shuxue,yingyu,tiyufromterm2,student"

+"wherestudent.sno=term2.snoandstudent.sno='"+sNumber+"'";

}

SqlDataAdapterreader=newSqlDataAdapter(comText,sqlconn);

reader.Fill(ds,"stuScore2");

gvTerm2.DataSource=ds.Tables["stuScore2"].DefaultView;

gvTerm2.DataBind();

}

sqlconn.Close();

sqlconn=null;

}

4.4成绩添加模块

1.界面设计

图4-4成绩添加模块

2、代码设计

添加数据时可以选择添加的学期,然后可以输入学号,和各门课的成绩,若学号在学生数据库中,则允许添加。

单击添加后将执行以下代码:

protectedvoidbtnAddGrade_Click(objectsender,EventArgse)

{

if(txtC.Text==String.Empty||

this.txtCsharp.Text==String.Empty||

this.txtCPP.Text==String.Empty||

this.txtSno.Text==String.Empty||

this.txtVb.Text==String.Empty)

{

return;

}

try

{

StringconStr=ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnectionsqlconn=newSqlConnection(conStr);

sqlconn.Open();

SqlCommandcomm=newSqlCommand();

comm.Connection=sqlconn;

comm.CommandText="insertintoterm1(sno,c,cpp,csharp,vb)values(@sno,@c,@cpp,@csharp,@vb)";

comm.Parameters.AddWithValue("@sno",this.txtSno.Text);

comm.Parameters.AddWithValue("@c",this.txtC.Text);

comm.Parameters.AddWithValue("@cpp",this.txtCPP.Text);

comm.Parameters.AddWithValue("@vb",this.txtVb.Text);

comm.Parameters.AddWithValue("@csharp",

this.txtCsharp.Text);

comm.ExecuteNonQuery();

sqlconn.Close();

sqlconn=null;

comm=null;

}

catch(SystemExceptionexp)

{

Stringstr=exp.Message;

}

}

4.5成绩编辑模

1.界面设计

图4-5查询后可编辑或删除成绩

图4-6点击编辑后可更新成绩

2.代码设计

编辑时,更新函数代码如下:

protectedvoidgvTerm1_RowUpdating(objectsender,GridViewUpdateEventArgse)

{

try

{

StringconStr=ConfigurationManager.

ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnectionsqlconn=newSqlConnection(conStr);

sqlconn.Open();

SqlCommandcomm=newSqlCommand();

comm.Connection=sqlconn;

comm.CommandText="updateterm1setc=@c,vb=@vb,

cpp=@cpp,csharp=@csharp

wheresno=@sno";

comm.Parameters.AddWithValue("@sno",gvTerm1.DataKeys[e.RowIndex].Value.ToString());

comm.Parameters.AddWithValue("@c",((TextBox)gvTerm1.Rows[e.RowIndex].Cells[2].Controls[0]).Text);

comm.Parameters.AddWithValue("@cpp",((TextBox)gvTerm1.Rows[e.RowIndex].Cells[3].Controls[0]).Text);

comm.Parameters.AddWithValue("@vb",((TextBox)gvTerm1.Rows[e.RowIndex].Cells[4].Controls[0]).Text);

comm.Parameters.AddWithValue("@csharp",((TextBox)gvTerm1.Rows[e.RowIndex].Cells[5].Controls[0]).Text);

comm.ExecuteNonQuery();

sqlconn.Close();

sqlconn=null;

comm=null;

gvTerm1.EditIndex=-1;

this.databind();

}

catch(SystemExceptionex)

{

Stringstr=ex.Message;

}

}

删除一行数据时执行的函数如下:

protectedvoidgvTerm1_RowDeleting(objectsender,GridViewDeleteEventArgse)

{

StringconStr=ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnectionsqlconn=newSqlConnection(conStr);

sqlconn.Open();

SqlCommandcomm=newSqlCommand();

comm.Connection=sqlconn;

comm.CommandText="deletefromterm1wheresno='"+gvTerm1.DataKeys[e.RowIndex].Value.ToString()+"'";

comm.ExecuteNonQuery();

sqlconn.Close();

sqlconn=null;

comm=null;

gvTerm1.EditIndex=-1;

this.databind();

}

4.6成绩统计模块

1.

界面设计

图4-7成绩信息统计截图

2.代码设计

<1>、统计之前首先将一个学期的所有成绩绑定到da

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1