《网络程序设计》实验
综合报告
设计题目:AOD.Net 用户登录认证
学生姓名:
学
号:
专业班级:13 计科 02 班
2017 年 10 月
一、 实验目的
1. 熟悉 VS 2010 开发环境,学会使用 VS 创建网站基本结构;
2. 熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置;
3. 掌握在 MSSQL 2008 创建数据库、数据表,并能使用 SQL 语句进行表操作(SELECT、
4. INSERT、UPDATE、DELETE);
5. 掌握 Web.config 文件中变量的创建与读写;
6. 掌握 ADO.NET 提供的连接式数据访问方式,了解非连接式数据访问方式;
二、实验环境
WINDOWS OS 、VS 2015 、SQL SERVER 2017
三、 实验内容
实验二部分:
1. 通过 VS2010 创建空 ASP.NET 网站。添加 2 个 WEB 窗体:login.aspx,myhome.aspx;
2. 添加新项 Visual C# Web 窗体:login.aspx;
3. 添加新项 Visual C# Web 窗体:myhome.aspx;
实验三部分:
1、熟悉 SQL Server DBMS 系统的使用,登录 DBMS 系统后,创建库、表,并对表中
的记录进行 DLL 操作。
2、完善实验二.pdf 对应的系统,将原先的简单的用户名/密码验证方式,变更为从
数据库相应的表中,查询是否有该记录作为是否为合法用户的准则。
四、 原理实验步骤
实验三原理:通过服务器控件获取用户输入后,合法用户则创建相应的 Session 变量,并进行合
适的网页重定向,并在 myHome.aspx 网页中显示相应的个人相关记录,如显示当前登录用户的选
修课程。利用相关控件,也可使用数据服务器控件,显示并编辑等等。
步骤:1、使用 SQL SERVER 软件,建立自己的数据库,并填充数据。
2
2、变更实验二中登录验证方式为数据库检索验证方式;
2.1、连接式访问数据库程序框架;
2.2、添加数据库托管程序支持:using System.Data.SqlClient;
2.3、重新撰写 protected void btnLogin_Click(object sender, EventArgs e) { }响应函数。
2.4、判定是否有该登录用户名/密码,利用 DataReader 对象的 READ 方法或者 HasRows 属
性,作为判断依据;
3、连接所建数据库。
4、使用相关控件,增强数据的显示与编辑。
5、调试运行并截图。
注 1:由于实验二指导书过于详细,相关原理与步骤在此略去。
注 2:本次实验使用控件如下:GridView、DetailsView
五、 关键问题及解决方法
Q1:无法连接到数据库。
A1:检查后发现为 SQL SERVER 版本较高(未激活),故自己建立了数据库文件。
Q2:在“最近文件”中添加数据库失败,下拉框中空白无选项。
A2:之前自动连接过数据库,导致本次连接导向错误,手动输入服务器名称后,连接成功。
Q3:调试运行时,无法找到相关数据,报错。
A3:在重写 protected void btnLogin_Click(object sender, EventArgs e) { }响应函数时,为 string str 赋值
时未修改成数据库内对应的 USERNAME,修正后,顺利运行。
六、 实验结果
1.运行后,转至登陆页。
3
(图 1 登陆页)
2.1、输入错误的用户名和密码后会出现相应提示。
(图 2 错误示例)
2.2、输入表中已有用户名和密码后,跳转至主页,同时因为添加了 GridView 控件,整个表单以竖
列显示。
4
(图 3 正确示例)
3、新添加 DetailsView 控件后,重新运行,表单将以横版再次显示。
5
(图 4 新控件)
4、点击 退出 , 即可回到登陆页面。
(图 5 返回)
七、 实验体会
三次实验,分别指导静、动态网页的制作和动态网页的登陆方式变更与高级控件的实现,
一 一完成后,自我感觉在“网页”的入门方向上可以说是小有收获了。然而,越是接触网页的
制作越是发现自己所掌握相关知识的缺失,导致代码成品在 IE 上的实现可以用简陋来形容。再
与平时接触到的形形色色功能丰富的高级网页对比起来,只能说实验的结束什么也无法代表,
它仅仅意味着一次新的起步。
6
附录:源代码(仅仅附上核心代码)
1.1 网页 login.aspx.cs 或其他
//login.aspx.cs
protected void btnLogin_Click(object sender, EventArgs e)
{
string t1 = txtUserName.Text;
string t2 = txtPwd.Text;
SqlConnection conn;
SqlCommand cmd;
SqlDataReader rd;
conn = new SqlConnection("Data Source=DESKTOP-9EBN08U;Initial Catalog=jzc;Integrated Security=True");
conn.Open();
string str = @"
USE [jzc]
SELECT *
FROM [dbo].[USER]
WHERE
UserName = '" + t1 + @"'
AND
Password = '" + t2 + "'";
cmd = new SqlCommand(str, conn);
rd = cmd.ExecuteReader();
if (rd.HasRows)
{
Session["UserName"] = t1;
Session["PassWord"] = t2;
rd.Close();
conn.Close();
Response.Redirect("myhome.aspx");
1
}
else
{
Label3.Text = "请输入正确的用户名、密码";
}
}
2.1 网页 myhome.aspx.cs 或其他
//myhome.aspx.cs
if (Session["UserName"]==null&Session["PassWord"]==null)
{
Response.Redirect("http://localhost:50056/login.aspx");
}
Label2.Text = "用户名:" + Session["UserName"]+"密码:"+Session["PassWord"];
Label3.Text = System.DateTime.Now.ToString();
2.3 数据库生成 SQL 语句[包括建库、建表语句;记录不需要]
//建库
CREATE DATABASE [jzc]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'jzc', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\jzc.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED,
FILEGROWTH = 65536KB )
LOG ON
( NAME = N'jzc_log', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\jzc_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB ,
FILEGROWTH = 65536KB )
//建表
CREATE TABLE [dbo].[USER](
[UserID] [nchar](10) NOT NULL,
[UserName] [nchar](10) NOT NULL,
[Password] [nchar](10) NOT NULL
) ON [PRIMARY]
2