B08050423陈志福WEB学生成绩管理.docx
- 文档编号:10960477
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:20
- 大小:449.08KB
B08050423陈志福WEB学生成绩管理.docx
《B08050423陈志福WEB学生成绩管理.docx》由会员分享,可在线阅读,更多相关《B08050423陈志福WEB学生成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- B08050423 陈志福 WEB 学生 成绩 管理