《WEB技术》实训报告
题目: IT企业实践服务系统
专 业: 软件工程 班 级: 学 号: 姓 名: 小组成员:
2013年 01月 01日
北京联合大学实训报告
摘 要
在计算机技术快速发展的今天,internet网络这个现代信息高速公路也流行发展起来,已经成为人们生活、工作、学习越来越离不开的平台。基于.NET技术的应用大量出现。为了让用户浏览到美观的,个性化的页面和丰富的内容。因此,基于B/S体系架构创建的这个学籍管理系统,紧跟行业发展,满足各大高校学习、管理的需要。由于各大高校在进行学籍管理时,需要管理大量的学生信息、教师信息以及课程信息等。传统的手动操作方式易发生数据丢失和统计错误,劳动强度大,且速度慢。在计算机上可以高速、快捷地完成这些工作。计算机联网后,数据在网上传递可以实现数据共享,避免重复劳动,规范教学管理行为,从而可提高管理效率和水平。
关键词:internet网络 B/S体系架构 学籍管理
第一章 系统概述
1.1引言
建立一个基于B/S架构的学籍管理系统,实现信息网络化。通过较丰富的功能将 .NET技术特点体现出来。该系统可供包括管理员登录和学生登录使用。登录者可以查询信息或者发布信息。系统中管理员模块为必不可少的模块项,该模块主要包括3个模块:管理员模块、学生模块、公用模块。为了安全有效地存储和管理登录网站的用户的信息,赋予管理员特定的权限,可以对用户进行添加,删除,修改和学生的查询等。方便网站的管理与维护。
要实现这样的功能,离不开后台数据库的支持。用户验证信息,收集到的用户点击信息,分析得出的关联规则表等大量的数据都由数据库管理系统管理。本文中数据库服务器端采用了SQL Server 2005作为后台数据库,结合SQL语句处理对用户添加,删除,修改等操作,使.NET与数据库紧密联系起来。
1.2背景
1.2.1 B/S结构相关开发技术简介
从Web数据库的发展过程来看,实现B/S结构下Web数据库的应用通常有两种方法:一种是Web服务器端提供中间件连接Web服务器和数据库服务器;一种是把应用程序下载到客户端直接访问数据库。其中第二种方法在程序的编写、调试上显得较为繁琐,网络安全也较难保证。在第一种方法中较常用的中间件技术有通用网关接口(CGI)和应用程序编程接口(API)两种,而API有两种版本,ISAPI和NSAPI。CGI的最大不足在于对每个访问都会在服务器端产生一个应用程序副本,占用系统资源。API以动态连接库的形式出现虽然克服了CGI的这一缺点,却带来了另一个问题,即当需要修改或更新服务程序时必须重起系统,而这在许多事实性较强的应用服务器上是不允许的。同时,无论是CGI还是API它们共同的缺点是程序和HTML
-1-
北京联合大学实训报告
文本分离,编写和调试很不灵活。第一种方法即是Web服务器端提供中间件连接Web服务器和数据库服务器。我们常常称它为Web数据库系统,它实质上是一种动态网页技术与数据库系统的结合。利用数据库系统来存储和管理不断变化的数据信息,并通过动态网页技术实现利用Web页面来访问、存储数据和管理数据库。所谓的动态,主要是具有以下几个方面的特点:交互性:即网页会根据用户的需求和选择而动态改变和响应;自动更新:不需要手动更新HTML文档,就会自动生成新的页面,可以大大节省工作量;自动适应性:即当不同的时间、不同的人访问同一网址时会产生不同的页面。现在,主流的B/S结构下的动态网页技术有JSP,PHP,ASP等。它们都可以提供Web数据库开发的全套解决方案下面将会对这三种技术进行一个简要的介绍,并比较各自的优点和缺点。 1.2.2 B/S模型的优点
几乎没有限制的客户端访问和极其简单化的应用程序部署和管理是B/S模型的优势所在。它和C/S模型比较优点极为突出。
两层技术模型(Two-Tier Architecture)是指客户机直接与服务器交流,没有其他服务介入的技术模型。对用户量在12—100的局域网环境中,两层模型的确是个不错的方案。由于该模型中,所有的用户连接都是被保持的,也就是说即使在空闲状态,连接依然存在。所以,用户的并发请求数量有限的。为了解决这个限制,使得成千上万的用户可以被无顾虑地添加,我们最好选用三层模型。
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者说是改进的结构。用户界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成三层结构,是一种全新的软件系统构造技术。B/S模型结构图如下所示:
图1-1 B/S模型图
从上图可见 这种结构的一个重要的特点是,用户可以完全不需要安装客户端软件,当然
也不需要担心任何软件升级和不兼容等任何客户端所遇到的问题。
-2-
北京联合大学实训报告
相比之下,B/S模型的优点显而易见,更适合这个网站的构建,有利于网站的维护和扩充。 1.2.3 .NET技术发展背景
随着网络经济时代的到来,网络用户希望能够在任何时候、任何地方、利用任何工具都可以获得网络上所需的信息、文件和程序,并享受网络通信所带来的快乐。用户不需要知道这些文件放在什么地方,只需要发出请求,然后进行接收就可以了;而所有后台的复杂性是完全屏蔽起来的。微软公司就是为了这个目标而设立了.NET战略。
微软公司公开宣布,今后将着重于网络服务和网络资源共享的开发工作,并将为公众提供更加丰富,有用的网络资源与服务。微软公司新一代平台的正式名称为“新一代Windows服务”(NGWS),并给这个平台注册了正式的商标——Microsoft.NET。
.NET作为新一代互联软件和服务战略,将使现有微软的软件在网络时代不仅用于传统的个人计算机,而且能够满足呈快速增长的新设备的需要。到底什么是.NET?微软公司总裁兼首席执行官Steve Ballmer把它定义为:.NET代表一个集合、一个环境、一个可以作为平台支持下一代Internet的可编程结构。微软公司官方定义为:Microsoft.NET是Microsoft XML Web Services平台。.NET方法可以使编写能够在任意时间、任意地点和任意设备上安全地彼此连接和互操作的系统变得非常简单。实现这一目标的核心技术是XML Web Service,这项技术允许应用程序通过Internet进行通信和共享数据,而不管所采用的是哪种操作系统。设备或编程语言。从开发人员的角度看,.NET使用Microsoft Visual Studio.NET、NET Framework 以及XML Web Service编写彼此连接的系统变得非常简单。
第二章 系统设计
2.1模块划分
学籍管理系统可实现学籍管理的所有基本功能,根据系统用户的不同,可以划分为3个模块:管理员模块、学生模块和公用模块。下面介绍各个模块的基本功能。
2.1.1 管理员模块
该模块是本系统的核心模块,其中包括5个子模块,分别是学生信息管理、教师信息管理、班级信息管理、课程信息管理、学生选课信息管理。
a.
基本信息管理子模块:实现对学生信息的添加、修改、删除操作,还可输入查询条
件对学生信息进行查询。
b. 学生人数统计模块:实现对不同年份入学的学生人数进行统计。
2.1.2 学生模块
实现学生个人资料功能,查看自己的个人信息。
2.1.3 公用模块
实现管理员用户和学生用户的身份验证、密码修改、退出系统等功能。
-3-
北京联合大学实训报告
2.2操作流程
用户登录系统后首先进入用户登录界面,可以选择自己的用户角色,如以管理员用户权限进入。输入管理员用户名和密码后进入系统的欢迎界面,利用系统左侧的导航栏可实现不同管理页面的切换。对信息进行增加、删除、修改和查看操作后,单击“退出系统”超链接实现退出系统。
2.3页面设计
2.3.1用户登录
在进入学籍管理系统之前,需要经过登录页面。在此页面中用户首先选择自己的用户类型,然后输入用户名和密码进行登录验证。
2.3.4 管理学生信息
管理员对学生的管理包括对学生信息的添加、修改、删除和查询等操作。
2.3.8 修改密码和退出系统
修改密码和退出系统是系统的公用模块,学生和管理员都可以使用该功能进行密码修改和退出系统,在每个用户的操作页面中均有相应的超链接到此页面。
用户需要输入旧密码、新密码并对新密码确认,当用户输入旧密码有误时会显示警告信息“您输入的密码错误,检查后重新输入”,提示用户必须输入正确的旧密码之后才能修改密码。 单击用户操作页面左侧导航栏中的“退出系统”超链接,会显示退出系统的提示,单击【是】按钮后即可退出系统。
dboXS 学生表
dbo.ADMIN 管理员表
-4-
北京联合大学实训报告
第四章 系统设计实现
4.1配置数据库连接
在Web.config文件中指定数据库连接字符串的配置信息。在Web.config文件中添加如下代码:
在Web.config文件中添加以上的代码之后,在需要数据库连接字符串的地方用如下的代码替换,表示使用的是Web.config文件中配置的数据库连接字符串信息。
ConfigurationManager.ConnectionStrings[“ConnectionString”].ConnectionString
4.2用户登录
本节参考文件StudentControl/Login.aspx
用户登录页面Login.aspx的主要功能是根据用户选择的身份对用户输入的用户名和密码的合法性进行验证,如果不合法,则提示用户重新登录,如果合法,则进入相应的的操作页面。
参考代码如下(每行前面的数字为代码行号,不是代码内容)。
protected void btnSubmit_Click(object sender, EventArgs e) {
string userName = txtName.Text.ToString().Trim(); string userPwd = txtPwd.Text.ToString().Trim(); string userrole = radRole.SelectedValue.Trim(); string sql = \"\"; switch (userrole) {
case \"0\":
sql = \"select * from StudentTable where StudentID = '\" + userName + \"'\"; break; case \"1\":
sql = \"select * from AdminTable where AdminName = '\" + userName + \"'\"; break; }
SqlConnection conn = new SqlConnection(DBconn.GetConnString()); //conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn); // SqlDataReader dr = cmd.ExecuteReader(); try {
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
-5-
北京联合大学实训报告
if (sdr.Read()) {
if (sdr.GetString(0) == userPwd) {
Session[\"UserRole\"] = userrole; switch (userrole) {
case \"0\":
Session[\"StudentID\"] = userName; Session[\"AdminName\"] = \"\";
Response.Redirect(\"StudentCourseElect.aspx\"); break; case \"1\":
Session[\"StudentID\"] = \"\";
Session[\"AdminName\"] = userName;
Response.Redirect(\"WelcomeTeacher.aspx\"); break; } } else {
lblMess.Text = \"您输入的密码错误,请检查后重新输入!!!\"; } } else {
lblMess.Text = \"该用户不存在或用户名错误,请检查后重新输入!!!\"; } }
catch (Exception ee) {
Response.Write(\"\"); }
finally {
conn.Close(); }
}
-6-
北京联合大学实训报告
4.3修改密码
【正文部分】
本节参考文件StudentControl/ModifyPwd.aspx
用户修改密码ModifyPwd.aspx页面的主要功能是实现用户对个人密码的修改操作,是一个公用模块。
参考代码如下:
protected void btnSubmit_Click(object sender, EventArgs e) {
string StudentID = Session[\"StudentID\"].ToString();
string AdminName = Session[\"AdminName\"].ToString(); string oldPwd = txtOldPwd.Text.Trim(); string newPwd = txtNewPwd.Text.Trim();
string selectStr = \"\"; string updateStr = \"\";
switch(Session[\"UserRole\"].ToString()) {
case \"0\":
selectStr = \"select * from StudentTable where StudentID = '\"+StudentID +\"' and StudentPassword = '\"+oldPwd+\"'\";
updateStr = \"update StudentTable set StudentPassword = '\"+newPwd+\"' where StudentID ='\"+StudentID+\"'\"; break; case \"1\":
selectStr = \"select * from AdminTable where AdminName = '\" + AdminName + \"' and AdminPassword = '\" + oldPwd + \"'\";
updateStr = \"update AdminTable set AdminPassword = '\" + newPwd + \"' where AdminName ='\" + AdminName + \"'\"; break; }
SqlConnection conn = new SqlConnection(\"Data Source =.;Initial Catalog =
-7-
北京联合大学实训报告
Student;Integrated Security=True\"); //conn.Open();
SqlCommand selectCmd = new SqlCommand(selectStr,conn); try {
conn.Open();
SqlDataReader dr = selectCmd.ExecuteReader(); if(dr.Read()) {
dr.Close();
SqlCommand updateCmd = new SqlCommand(updateStr,conn); int i = updateCmd.ExecuteNonQuery(); if(i>0) {
Response.Write(\"成功修改密码!!!\"); } else{
Response.Write(\"密码修改失败!!!\"); } } else {
Response.Write(\"您输入的密码错误,检查后请重新输入!!!\"); } }
catch(Exception ee) {
Response.Write(\"系统出错,错误原因:\" + ee.Message.ToString()); }
finally {
conn.Close(); }
}
-8-
北京联合大学实训报告
4.4添加学生信息
本节参考文件StudentControl/ StudentAdd.aspx
管理员登陆系统后,可以添加学生信息,添加【增加】按钮的Click事件代码,实现学生信息的添加。具体代码如下:
protected void btnAdd_Click(object sender, EventArgs e) {
string connStr =
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString; string SqlInsert = \"insert into
StudentTable(StudentID,StudentName,StudentPassword,DutyID,StudentClassID,StudentPhone,StudentHomeAddr) values('\"+
this.txtStudentID.Text+\"','\"+this.txtStudentName.Text +\"','\"+txtPassword.Text+\"',\"+
Convert.ToInt32(this.DropDownList6.SelectedValue.ToString())+\+Convert.ToInt32(this.DropDownList5.SelectedValue.ToString())+\+
this.txtTel.Text +\"','\"+this.txtAddress.Text +\"')\";
string SqlSelect = \"select * from StudentTable where StudentID='\"+ this.txtStudentID.Text +\"'\";
SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(SqlSelect,conn);
SqlCommand cmdInsert = new SqlCommand(SqlInsert,conn); try {
conn.Open();
SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) {
lblMess.Text = \"您输入的学号已经存在,请输入其他学号\"; dr.Close(); } else
-9-
北京联合大学实训报告
{
dr.Close(); try {
if(conn.State.ToString() == \"Closed\") conn.Open();
cmdInsert.ExecuteNonQuery(); }
catch (Exception ex) {
Response.Write(\"数据库错误,错误原因:\" + ex.Message); Response.End(); }
lblMess.Text = \"数据增加成功\"; } }
catch (Exception ex) {
Response.Write(\"\"); }
finally {
cmd.Dispose();
cmdInsert.Dispose();
if (conn.State.ToString() == \"Open\") conn.Close(); }
}
-10-
北京联合大学实训报告
4.5访问统计
本节参考文件Global.asax
登陆界面后,可显示是第几位访问者。具体代码如下:
protected void Application_Start(Object sender, EventArgs e) {
SqlConnection con = new
SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[\"GradeSys\"]); con.Open();
SqlCommand cmd=new SqlCommand(\"select * from countnum\",con); int count=Convert.ToInt32(cmd.ExecuteScalar ()); con.Close();
Application[\"total\"]=count; Application[\"online\"]=0; }
protected void Session_Start(Object sender, EventArgs e) {
Session.Timeout = 10; Application.Lock();
Application[\"total\"] = (int)Application[\"total\"] + 1; Application[\"online\"] = (int)Application[\"online\"] + 1; Application.UnLock(); }
protected void Session_End(Object sender, EventArgs e) {
Application.Lock();
Application[\"online\"]=(int)Application[\"online\"]-1; Application.UnLock(); }
protected void Application_End(Object sender, EventArgs e) {
SqlConnection con = new
SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[\"GradeSys\"]); con.Open();
SqlCommand cmd=new SqlCommand (\"updata countnum set num=\"+Application[\"total\"].ToString(),con); cmd.ExecuteNonQuery(); con.Close(); }
-11-
北京联合大学实训报告
void Application_Error(object sender, EventArgs e) {
// 在出现未处理的错误时运行的代码
}
第五章 总结报告
踉踉跄跄地忙碌了一周,我的毕业设计课题也小有眉目。经过一段时间的积极准备和在老师不厌其烦的指导下,终于完成了毕设题目中的部分模块。从中我再次熟悉了SQL Server 2005和Visual Sutdio 2008的使用方法。从页面设计,素材寻找功能实现,系统测试,都需要一步一个脚印踏踏实实的完成的,不能有半点马虎。同时也学会了访问计数的用法。这周可谓是受益匪浅。
-12-
因篇幅问题不能全部显示,请点此查看更多更全内容