《WEB应用系统开发》专业实习报告
姓 名 许丽娟 学 号 411240202 系 别 信息工程系 专 业 计算机科学与技术 班 级 2班 指导老师 许丽娟
广东财经大学华商学院
二O一四 年 十二月 十五日
全民反腐实名举报信息网的设计与实现
1. 引言
1.1 ASP.NET技术简介
ASP.NET 4.0 (ASP:Active Server Page) 是微软的。NET框架更新版本。NET4.0中的一部分,是一种重要的,流行的动态WEB开发技术。ASP.NET是Microsoft.NET的一部分,是Active Server Page(简称ASP)的另一个版本;ASP.NET提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括Visual Basic.NET、C#和JScript .NET)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全和继承等。
Microsoft公司为ASP.NET设计了功能强大的代码、代码易于重用和共享,可用编译类语言编写策略,从而使程序员更易开发Web应用程序,满足不同客户的需求。
1.2 ASP.NET的优点
ASP.NET是Microsoft .NET Framework的一部分,是一种可以在高度分布的Internet环境中简化应用程序开发的环境。.NET Framework包含公共语言运行库,它提供了各种核心服务,如内存管理、线程管理和代码安全,同时也包含.NET Framework类库。.NET Framework是一个开发人员用于创建应用程序的综合的、面向对象的类型集合。ASP.NET的优点主要表现在以下几个方面。
(1)可管理性
ASP.NET使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和Web应用程序的工作。因为配置信息是被存储为纯文本格式的,因此可以在没有本地管理工具的帮助下应用新的设置。
(2)安全性高
ASP.NET为Web应用程序提供了默认的授权和身份验证方案。开发人员可以根
共18页 第1页
据应用程序的需要很容易地添加、删除或替换这些方案。
(3)易于部署
ASP.NET应用程序可以部署到服务器上,并且不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。
(4)增强的性能
ASP.NET是运行在服务器上的已编译代码。与传统的ASP不同,ASP.NET能利用早期绑定、实时(JIT)编译、本机优化和全新的缓存服务来提高性能。
(5)灵活的输出缓存
根据应用程序的需要,ASP.NET可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。
(6)移动设备支持
ASP.NET支持任何设备上的任何浏览器。开发人员使用与传统的桌面浏览器相同的编程技术,来处理新的移动设备。
(7)扩展性和可用性
ASP.NET具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet信息服务(IIS)和ASP.NET运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。
(8)跟踪和调试
ASP.NET提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发或应用程序处于生产状态时,ASP.NET支持使用.NET Framework调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能。
(9)与.NET Framework集成
ASP.NET是.NET Framework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的,因此可从Web上流畅地访问.NET类库及消息和数据访问解决方案。ASP.NET是独立于语言之外的,所以开发人员能选择最适合应用程序的语言。另外,公共语言运行库的互用性还保存了基于COM开发的现有投资。
(10)与现有ASP应用程序的兼容性
ASP和ASP.NET可并行运行在IIS Web服务器上而互不冲突;不会发生因安装
共18页 第2页
ASP.NET 而导致现有ASP应用程序崩溃的可能。 1.3 ADO.NET
ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。ADO.NET的架构如图1-1所示。
图1-1 ADO.NET架构
1.4 项目团队组织及分工 为了完成网站的项目开发,组建一个临时的项目团队,分配虚拟角色,主要有项目经理、系统分析员、软件工程师3人,每个人担任的角色及工作任务分配如表1-1所示。
表1-1 项目人员分工 姓名 许丽娟 角色 项目经理 工作描述 负责项目的审批、决策、实施;项目进度跟踪、质量检查
及验收。
系统分析员 负责系统的功能分析、系统框架设计、系统界面设计。 软件工程师 负责软件设计、编码及测试。
2. 基本功能描述
根据网站设计需求,可以将该信息网分为前台和后台两部分进行设计。
2.1前台设计
(1)网民在前台可以浏览并查询到经相关部门查证核实后,腐败人员名单名单,名单信息包括腐败人员姓名、性别、出生日期、籍贯、单位、职务、照片、腐败事实
共18页 第3页
描述、查证机关、查处结果。
(2)网民在前台可以举报腐败人员名单名单,名单信息包括腐败人员姓名、性别、出生日期、籍贯、单位、职务、腐败事实描述、证据材料(上传)、举报人姓名、举报人联系电话。
2.2后台设计
(1)数据添加功能:管理人员可以通过后台页面添加由官方查处的腐败人员名单记录,包括腐败人员姓名、性别、出生日期、籍贯、单位、职务、腐败事实描述、查证机关、查处结果。
(2)数据修改功能:管理人员可以通过后台页面修改由官方查处的腐败人员名单记录,包括腐败人员姓名、性别、出生日期、籍贯、单位、职务、腐败事实描述、查证机关、查处结果。
(3)数据删除功能:管理人员可以通过后台页面删除登记出错的腐败人员名单记录。
详细规划网站的功能,给出系统前后台总体功能结构图如图1-2所示。
3. 系统流程图 普通用户进入网站后可以浏览基本网页信息,包括反腐新闻、腐败官员记录等,也可以举报腐败官员;管理员登陆后台后可以对腐败官员记录、网站新闻进行维护
4. 开发环境简介
4.1网站开发环境
(1)网站开发环境:Microsoft Visual Studio 2010集成开发环境
(2)网站开发语言:ASP.NET+C#
(3)网站后台数据库:SQL server 2005
(4)开发环境运行平台:Windows XP(SP2)/ Windows 2000(SP4)/ Windows 2003(SP1)
4.2服务器
(1)数据库服务器:Windows 2003(SP1)
(2)浏览器:IIS5.0
(3)网站服务器运行环境:Microsoft.NET Framework SDKv2.0
4.3客户端
共18页 第4页
(1)浏览器:IE6.0
(2)分辨率:最佳效果1024*768像素
5. 数据库设计
5.1数据库概念设计
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建议中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。根据对本系统所做的分析、系统设计,规划出本系统中使用的数据库实体。。
全名反腐网最重要的一个问题就是网民可以通过网站前台举报腐败官员信息,因此需要规划腐败官员信息实体。该实体包括姓名、性别、出生日期、籍贯、单位、职务、照片等。关键实体的E-R图如图 所示。
5.2数据库逻辑设计
根据概念模型,利用实体E-R图信息设计数据表结构。系统中关键的数据表如表5-1和5-2所示。
6. 功能实现
共18页 第5页
6.1前台页面设计
6.1.1 首页面设计
首页面index.aspx的设计采用模板技术,主要显示关于反腐的简要新闻信息。首页面设计效果如图 所示。
6.1.2反腐文化宣传页面设计
6.1.3 反腐举报页面设计
(1) 界面设计效果图如图 所示。
共18页 第6页
(2)Report.aspx页面关键代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
using ESCM.DataAccess;
public partial class Report : System.Web.UI.Page
{
SqlConnection sqlconn = new
SqlConnection(ConfigurationManager.ConnectionStrings["Corruptionmag"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand insertCmd = new SqlCommand("insert into
bf(name,sex,birthday,originplace,workunit,post,corrdescription,informant,reportphone) values(@n,@s,@b,@p,@w,@pos,@co,@in,@re)", sqlconn);
insertCmd.Parameters.Add("@n", SqlDbType.VarChar, 16);//设?¨¨置?参?数?y insertCmd.Parameters.Add("@s", SqlDbType.VarChar, 2);
insertCmd.Parameters.Add("@b", SqlDbType.Date);//设?¨¨置?参?数?y
共18页 第7页
insertCmd.Parameters.Add("@p", SqlDbType.VarChar, 50);
insertCmd.Parameters.Add("@w", SqlDbType.NVarChar,200);
insertCmd.Parameters.Add("@pos", SqlDbType.NVarChar,50);
insertCmd.Parameters.Add("@co", SqlDbType.NVarChar,200);
insertCmd.Parameters.Add("@in", SqlDbType.NVarChar,50);
insertCmd.Parameters.Add("@re", SqlDbType.NVarChar,50);
insertCmd.Parameters["@n"].Value =txtname.Text;
insertCmd.Parameters["@s"].Value = dpsex.SelectedItem.Text;
insertCmd.Parameters["@b"].Value = txtbirthday.Text;
insertCmd.Parameters["@p"].Value = txtoriginplace.Text;
insertCmd.Parameters["@w"].Value = txtworkunit.Text;
insertCmd.Parameters["@pos"].Value = txtpost.Text;
insertCmd.Parameters["@co"].Value = txtcorrdescription.Text;
insertCmd.Parameters["@in"].Value = txtinformant.Text;
insertCmd.Parameters["@re"].Value = txtreportphone.Text;
try
{
sqlconn.Open();
int flag = insertCmd.ExecuteNonQuery(); //执??行D添?¨?加¨?
if (flag > 0) //如¨?果?添?¨?加¨?成¨?功|
{
ScriptManager.RegisterStartupScript(this.UpdatePanel2,
this.GetType(), "success", "alert('举¨?报??§成¨?功|!')", true);
}
else //如¨?果?添?¨?加¨?失??ì败?¨?
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "failed",
"alert('举¨?报??§失??ì败?¨?,请?重?新?填??写??数?y据Y!ê?')", true);
}
}
catch (System.Exception ee)
{
Response.Write("<script language=javascript>alert('" +
ee.Message.ToString() + "')</script>");
}
finally
{
sqlconn.Close();
}
}
protected void Button2_Click(object sender, EventArgs e)
{
txtname.Text=" ";
txtbirthday.Text=" ";
txtoriginplace.Text=" ";
共18页 第8页
txtworkunit.Text=" "; txtpost.Text=" ";
txtcorrdescription.Text=" "; txtinformant.Text=" "; txtreportphone.Text=" ";
}
}
6.1.4 贪官档案资料浏览
(1)
(2)
6.1.5 管理员登陆页面设计
共18页 第9页
(1)
(2)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
public partial class login : System.Web.UI.Page
{
SqlConnection sqlconn = new
SqlConnection(ConfigurationManager.ConnectionStrings["Corruptionmag"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string str = "select * from Admin where adminname='" + txtname.Text.Trim() + "' and password='" + txtpass.Text.Trim() + "'"; SqlCommand comd = new SqlCommand(str, sqlconn);
共18页 第10页
sqlconn.Open();
SqlDataReader dr = comd.ExecuteReader();
if (dr.Read() == true)
{
Response.Redirect("~/management/Corruptionmag.aspx"); sqlconn.Close();
}
else
{
sqlconn.Close();
ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "success", "alert('请?重?新?输??入¨?账?号?和¨?密¨?码?!')", true);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
txtname.Text = "";
txtpass.Text = "";
} }
6.2 网站后台设计
6.2.1
共18页 第11页
()
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
public partial class management_Corruptionmag : System.Web.UI.Page {
共18页 第12页
SqlConnection sqlconn = new
SqlConnection(ConfigurationManager.ConnectionStrings["Corruptionmag"].ConnectionString);
public void ddlDefault(DropDownList ddl)
{
ddl.Items.Add("==请?选?择?==");
ddl.Items[ddl.Items.Count - 1].Value = "";
ddl.SelectedIndex = ddl.Items.Count - 1;
}
public void BindNoRecords(GridView GridView, DataSet ds)
{
if (ds.Tables[0].Rows.Count == 0)
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
GridView.DataSource = ds;
GridView.DataBind();
GridView.Rows[0].Cells[1].Text = "没?有?D记?录?!";
GridView.RowStyle.HorizontalAlign =
System.Web.UI.WebControls.HorizontalAlign.Left;//设?¨¨置?对?齐?方¤?式??
}
}
public DataSet Drop1()
{
SqlCommand cmd1 = sqlconn.CreateCommand();
cmd1.CommandText = "select id,name from bf";
SqlDataAdapter adapter1 = new SqlDataAdapter(cmd1);
DataSet ds0 = new DataSet();
adapter1.Fill(ds0);
return ds0;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
for (int i = 0; i < this.GridView1.Columns.Count; i++) {
this.GridView1.Columns[i].ItemStyle.Wrap = false; this.GridView1.Columns[i].HeaderStyle.Wrap = false;
共18页 第13页
}
string str = "select
id,name,sex,birthday,originplace,workunit,corrdescription,rt from bf"; SqlCommand comm = new SqlCommand(str, sqlconn);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet DBSet = new DataSet();
adapter.Fill(DBSet);
GridView1.DataSource = DBSet;
GridView1.DataBind();
ddlDefault(dpname);
dpname.DataSource = Drop1();
dpname.DataTextField =
Drop1().Tables[0].Columns["name"].ColumnName;
dpname.DataValueField =
Drop1().Tables[0].Columns["id"].ColumnName;
dpname.SelectedIndex = -1;
dpname.DataBind();
}
del.Attributes.Add("onclick", "return confirm('您¨?确¨?¤定?§要?a删??除y吗e?');");
}
protected void query_Click(object sender, ImageClickEventArgs e) {
string n = dpname.SelectedValue.ToString().Trim();
string str = "select
id,name,sex,birthday,originplace,workunit,corrdescription,rt from bf where id='" + n + "'";
SqlCommand comm = new SqlCommand(str, sqlconn);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
adapter.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
public void Binding()
{
string str = "select
id,name,sex,birthday,originplace,workunit,corrdescription,rt from bf"; SqlCommand comm = new SqlCommand(str, sqlconn);
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
adapter.Fill(ds);
共18页 第14页
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void rt_Click(object sender, ImageClickEventArgs e)
{
Binding();
}
protected void GridView1_RowDatabound(object sender,
GridViewRowEventArgs e)
{
if (this.GridView1.Rows.Count > 0) //如¨?果?有?D记?录?
{
int intCurrentPageNum = GridView1.PageIndex + 1;
lblTotalPage.Text = "第?¨? " + intCurrentPageNum.ToString() + "页?3 / 共2 " + GridView1.PageCount.ToString() + " 页?3 ";
}
else //没?记?录?
{
lblTotalPage.Text = "第?¨? 0 页?3 / 共2 0 页?3";
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.ID = e.Row.Cells[1].Text;
e.Row.Attributes.Add("onclick", "GridView_selectRow(this,'" + e.Row.Cells[1].Text + "')");
}
}
protected void GridView1_SelectedIndexChangeing(object sender,
GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
Binding();
}
protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='lightblue';this.style.cursor='hand';"); e.Row.Attributes.Add("onmouseout",
"this.style.backgroundColor=currentcolor");
}
共18页 第15页
}
protected void del_Click(object sender, ImageClickEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cbox =
(CheckBox)(GridView1.Rows[i].Cells[1].FindControl("cb1"));
if (cbox.Checked == true)
{
string st =
((Label)GridView1.Rows[i].Cells[0].FindControl("OrderID")).Text;
string str1 = "delete from bf where id='" + st + "'"; SqlCommand cmd3 = new SqlCommand(str1, sqlconn);
sqlconn.Open();
try
{
cmd3.ExecuteNonQuery();
ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "delScript", "alert('删??除y完?¨?毕??!ê?')", true); }
catch
{
ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "delScript", "alert('删??除y失??ì败?¨?!ê?')", true);
}
sqlconn.Close();
}
}
SqlDataAdapter adapter4 = new SqlDataAdapter("select
id,name,sex,birthday,originplace,workunit,corrdescription,rtfrom bf", sqlconn);
DataSet ds = new DataSet();
adapter4.Fill(ds);
if (ds.Tables[0].Rows.Count >= 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
共18页 第16页
}
else
{
BindNoRecords(GridView1, ds);
}
}
protected void cbSelectAll_CheckedChanged(object sender, EventArgs e) {
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cbox =
(CheckBox)(GridView1.Rows[i].Cells[1].FindControl("cb1"));
if (cbSelectAll.Checked == true)
{
cbox.Checked = true;
}
else
{
cbox.Checked = false;
}
}
}
protected void cbConvert_CheckedChanged(object sender, EventArgs e) {
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cbox =
(CheckBox)(GridView1.Rows[i].Cells[1].FindControl("cb1"));
if (cbConvert.Checked == true)
{
if (cbox.Checked == true)
{
cbox.Checked = false;
}
else
{
cbox.Checked = true;
}
}
else
{
cbox.Checked = false;
}
共18页 第17页
} } }
7. 总结:
参考文献
[1]
共18页 第18页
共18页 第19页