下面是小编为大家整理的ASP期末大作业(精选文档),供大家参考。
《 《 ASP.NET 编 程 》
课 程 考 核 大 作 业
专 业
计算机科学与技术
学 生 姓 名
夏星竹
班 级
学 号
信息工程学院
1 一、设计并实现问卷调查与统计的 Web Form 形式的 ASP.NET 网站。要求包含用户注册、用户登录、登录用户的问卷调查( 调查内容与形式自由设计,可单选、多选或问答) 、管理员对问卷调查的数据统计( 具体统计项目自由设计,可引入统计图的形式以提高你的设计层次) 这四方面主要功能。请详细说明你的设计与实现。
1、系统的总体结构 通用网络问卷调查系统分为二大模块:调查者维护信息模块和被调查者回答问卷信息模块。二大模块又包含各自的子模块。调查者维护信息模块包括调查人列表、试卷管理、题目信息管理和测试结果统计;被调查者信息模块包括参与调查、您参与的调查问卷列表和您的信息。此外,还有被调查者注册模块。
(1)调查者维护模块应实现的功能 调查人列表:显示被调查者注册后的信息列表和删除的操作。
问卷管理:对问卷名称的管理,添加、编辑和删除操作。
题目信息管理:对问卷题目信息的管理,添加、编辑和删除操作。
测试结果统计:对被调查者回答问卷信息后信息的统计。
(2)被调查者信息模块 参与调查:通过选择问卷,回答该问卷问题后提交。
您参与的调查问卷:显示该被调查者参与的调查问卷列表。
(3)注册模块 被调查者通过注册信息后进入被调查者模块。
2、数据库概要设计 概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与 DBMS 无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。
概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称 E-R 模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R 模型是建立概念性数据模型的有力工具。
3、系统设计 (1)系统流程设计 通用问卷调查系统通过管理员后台维护信息,首先维护问卷名称,然后通过选择问卷名称维护该问卷下的题目信息,最后通过被调查者回答的调查信息进行统计;被调查者通过注册后,在被调查者页面中可以通过选择问卷名称显示该问卷下的题目后回答提交信息,并可以在“您参与的调查问卷”中看到自己参与的问卷信息列表。
4、数据库的具体配置 ASP. NET 与数据库的连接字符串配置可在 web. config 里面。数据库与本地计算机建立连接代码如下:
2 <configuration> <appSettings/> <connectionStrings> <add name="String" connectionString="server=. ; database=Net05_WJDC; uid = sa; pwd =sa; "/> </connectionStrings> <system. web> 其中,Net05_WJDC 为建立的虚拟目录数据库名,帐户为 sa,密码为 sa。
数据库中记录与数据表相关联,定义一个命名空间 using System. Data. SqlClient;代码如下:
public static SqlConnection createConnection() {//从 webconfig 中取得字符串连接方式 SqlConnection cnn = new SqlConnection(System. Configuration. ConfigurationManager. ConnectionStrings["String"]. ConnectionStr ing) ; return cnn;} public static DataTable GetData(string SetStr) {//定义数据库连接 查询并填充 DataSet SqlConnection tmpCnn = Database. createConnection() ; if (tmpCnn. State != 0) {tmpCnn. Close() ;} tmpCnn. Open() ; SqlDataAdapter cmd = new SqlDataAdapter(SetStr, tmpCnn) ; DataSet tmpDataSet = new DataSet() ; cmd. Fill(tmpDataSet) ; tmpCnn. Close() ; return tmpDataSet. Tables[0];} public static void Execute(string sqlStr){ //定义数据库连接 执行数据库的增加 修改和删除数据的功能 SqlConnection tmpCnn = Database. createConnection() ; if (tmpCnn. State != 0){ tmpCnn. Close() ;} tmpCnn. Open() ; SqlCommand cmd = new SqlCommand() ; cmd. CommandText = sqlStr; cmd. Connection = tmpCnn; cmd. ExecuteNonQuery() ; tmpCnn. Close() ;} public static int GetIndex(DropDownList dr, string value) {//返回指定的编号
3 for (int i = 0; i < dr. Items. Count; i++){ if (dr. Items[i]. Text == value){ return i;}} return 0;} 5、系统实现 (1)系统主界面 在浏览器里运行本系统,出现系统的主界面,包括系统登陆、注册。
其代码实现如下:
protected void Button1_Click(object sender, EventArgs e) {// 判断管理员密码是否正确 if (this. TextBox1. Text == "admin"){ if (Database. GetData("select * from 管理员 where 帐号=" " + TextBox1. Text + "" and 密码=" " + TextBox2. Text + "" ") . Rows. Count > 0){ Response. Redirect("Admin/Index. aspx") ;} else {ClientScript. RegisterClientScriptBlock(this. GetType() , "js1", "<script>alert(" 密码错误" ) ; </script>") ; return;}} else {// 判断调查人密码是否正确 if (Database. GetData("select * from 调查人 where 帐号=" " + TextBox1. Text + "" and 密码=" " + TextBox2. Text + "" ") . Rows. Count > 0) {Session["User"] = TextBox1. Text; Response. Redirect("bdcr/Index. aspx") ;} else {ClientScript. RegisterClientScriptBlock(this. GetType() , "js1", "<script>alert(" 密码错误" ) ; </script>") ; return;}}}} (2)注册页面 此页面用于被调查者登陆被调查页面的身份注册,包括帐号、密码、确认密码、姓名、联系方式、工作种类、年龄、月收入和备注,以及注册和返回按钮。
其代码实现如下:
protected void Page_Load(object sender, EventArgs e) {if (!Page. IsPostBack){ //显示调查人信息 DataTable dt = new DataTable() ; dt = Database. GetData("select * from 调查人 where 帐号=" " + Session["User"] + "" ") ; if (dt. Rows. Count > 0){ this. TextBox1. Text = dt. Rows[0]["帐号"]. ToString() ; this. TextBox3. Text = dt. Rows[0]["姓名"]. ToString() ;
4 this. TextBox4. Text = dt. Rows[0]["联系方式"]. ToString() ; this. TextBox5. Text = dt. Rows[0]["工作种类"]. ToString() ; this. TextBox6. Text = dt. Rows[0]["年龄"]. ToString() ; this. TextBox7. Text = dt. Rows[0]["月 收入"]. ToString() ; this. TextBox8. Text = dt. Rows[0]["备注"]. ToString() ;}}} protected void Button1_Click(object sender, EventArgs e){ //更新调查人信息 if (this. TextBox2. Text != this. TextBox9. Text){ ClientScript. RegisterClientScriptBlock(this. GetType() , "js1", "<script>alert(" 密码输入不相同" ) ; </script>") ; return;} Database. Execute("update 调查人 set 密码=" " + this. TextBox2. Text + "" , 联系方式=" " +TextBox4. Text + "" , 工作种类=" " + TextBox5. Text + "" " + " , 年龄=" " + TextBox6. Text + "" , 月 收入=" " + TextBox7. Text + "" , 备注=" " + TextBox8. Text+ "" where 帐号=" " + Session["user"]. ToString() + "" ") ; ClientScript. RegisterClientScriptBlock(this. GetType() , "js1", "<script>alert(" 保存完成" ) ; </script>") ;} (3)问卷名称列表 此页面显示问卷名称的详细列表,包括卷子题目、调查内容、开始时间和结束时间以及添加、编辑、删除按钮。
其代码实现如下:
protected void Page_Load(object sender, EventArgs e) {if (!Page. IsPostBack){ //显示问卷信息列表 this. GridView1. DataSource = Database. GetData("select * from 问卷名称") ; this. GridView1. DataBind() ;}} protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {string idKey = this. GridView1. DataKeys[Convert. ToInt32(e. CommandArgument) ]["名称编号 "]. ToString() ; if (e. CommandName == "Mod"){ //传递修改的标志跳转页面 Response. Redirect("WjmcEdit. aspx?ID=" + idKey) ;} else if (e. CommandName == "Del"){ if (Database. GetData("select * from 题目信息 where 名称编号=" + idKey + "") . Rows. Count > 0){ Response. Write("<script>alert(" 当前问卷信息正在使用中" ) ; </script>") ; return;} //删除当前的问卷信息 刷新列表 Database. Execute("delete from 问卷名称 where 名称编号=" + idKey + "") ; this. GridView1. DataSource = Database. GetData("select * from 问卷名称") ;
5 this. GridView1. DataBind() ;}} protected void Button1_Click(object sender, EventArgs e) {//跳转页面 Response. Redirect("WjmcEdit. aspx") ;}} (4)问卷名称编辑页面 在该页面可以添加、修改问卷名称,包括卷子题目、调查内容、开始时间和结束时间,以及保存和返回按钮。
其代码实现如下: protected void Page_Load(object sender, EventArgs e) {if (!Page. IsPostBack) {//显示当前的卷子信息 DataTable dt = new DataTable() ; this. SDate. Value = DateTime. Now. Date. ToShortDateString() ; this. EDate. Value = DateTime. Now. Date. ToShortDateString() ; if (Request. QueryString["ID"] != null) {dt = Database. GetData("select * from 问卷名称 where 名称编号=" +Request. QueryString["ID"] + "") ; if (dt. Rows. Count > 0) {this. TextBox1. Text = dt. Rows[0]["卷子题目"]. ToString() ; this. TextBox2. Text = dt. Rows[0]["调查内容"]. ToString() ; this. SDate. Value = Convert. ToDateTime(dt. Rows[0]["开始时间"]. ToString() ) . Date. ToShortDateString() ; this. EDate. Value = Convert. ToDateTime(dt. Rows[0][" 结束时间"]. ToString() ) . Date. ToShortDateString() ;}}}} protected void Button1_Click(object sender, EventArgs e) {//根据标志添加或修改卷子信息 if(Request.QueryString["ID"]!=null) {Database.Execute("update 问 卷 名 称 set 卷 子 题 目 =""+TextBox1.Text+"", 调 查 内 容=""+TextBox2.Text+"","+"开始时间=""+this.SDate.Value+"",结束时间=""+this.EDate.Value+""where名称编号=""+Request.QueryString["ID"]+""");} else {Database.Execute("insertinto 问 卷 名 称 ( 卷 子 题 目 , 调 查 内 容 , 开 始 时 间 , 结 束 时间 )values"+"(""+this.TextBox1.Text+"",""+TextBox2.Text+"",""+this.SDate.Value+"",""+this.EDate.Value+"")");} Response. Redirect("WjmcList. aspx") ;} protected void Button2_Click(object sender, EventArgs e) {//转到页面 Response. Redirect("WjmcList. aspx") ;}} (5)题目信息列表 该页面显示题目信息详细列表,包括题目内容、卷子题目、A 项内容、B 项内容、C 项内
6 容和 D 项内容,并可以通过题目内容检索、过滤题目信息。以及添加、编辑和删除按钮。
其代码实现如下:
protected void Page_Load(object sender, EventArgs e) {if (!Page. IsPostBack) {//调用函数 Button2_Click(sender, e) ;}} protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {if (e. CommandName == "Mod") {string idKey = this. GridView1. DataKeys[Convert. ToInt32(e. CommandArgument) ]["题目编号"]. ToString() ; //传递修改的标志 跳转页面 Response.Redirect("TmxxEdit.aspx?ID="+idKey);} else if (e. CommandName == "Del") {string idKey = this. GridView1. DataKeys[Convert. ToInt32(e. CommandArgument) ]["题目编号"]. ToString() ; if (Database. GetData("select * from 测试结果 where 题目编号=" + idKey + "") . Rows. Count > 0) {Response. Write("<script>alert(" 当前题目信息正在使用中" ) ; </script>") ; return;} //删除当前的题目信息 刷新列表 Database.Execute("deletefrom 题目信息 where 题目编号="+idKey+""); this.GridView1.DataSource=Database.GetData("select*from 题目信息,问卷名称 where 题 目信息.名称编号=问卷名称.名称编号"); this. GridView1. DataBind() ;}} protected void Button1_Click(object sender, EventArgs e) {//跳转页面 Response. Redirect("TmxxEdit. aspx") ;} protected void Button2_Click(object sender, EventArgs e) {//绑定显示题目列表 this.GridView1.DataSource=Database.GetDa...