毕业设计(论文) 第26页 共40页
图4.1 ASP.NET技术的工作原理
这样我们根据ASP.NET的特性,ASP.NET技术可以基于三层模型。可以分为数据存取层,应用逻辑层,和用户层。数据存取层是指数据库、预存程序以及提供数据库接口的组件。应用逻辑层是指ASP.NET的自身,或者是附加的组件,而用户层是指Web应用程序页面。该教学网站的建设在设计过程中,根据ASP.NET的工作原理来设计了如图4.2系统结构模型图:
图4.2系统结构模型
在此模型中,对数据层进行操作时候,可以直接编写代码来实现对数据层的操作。不过也可以利用ASP.NET的组件分别对文件系统和数据库系统进行操作,利用组件,大大节省了时间。这里可以看出,ASP.NET的移植性很好,而且这些组件与AS.NET连接时,兼容性很好。
5用户管理
毕业设计(论文) 第27页 共40页
用户注册登陆是访问网站时候,必须进行的操作。该部分主要分为:用户注册,用户登陆,和忘记密码。在用户注册时候,为了方便管理,用户的ID是由系统直接分配的。在这个系统中总共分为3个活动选项,由于用户进入各个活动选项时,对于登陆页面来说,如果没有帐号是无法进行登陆的,所以在登陆页面中,要对帐号密码进行身份验证,而注册页面可以说是对网站操作的第一步。而忘记密码也就是用户忘记了密码,通过忘记密码这个操作来找回密码,这个操作过程中,一定要记得在注册时候的问题,以及问题的答案。这几个操作中登陆操作需要判断,就是对帐号的验证,如果错误的话,就返回,正确进行下一步。活动关系图如图5.1所示。
访问网站,进入用户操作页面登陆页面注册页面忘记密码
图5.1用户注册登陆系统UML活动关系图
5.1用户注册
帐号是新用户对网站访问的钥匙,如果这个钥匙丢掉的话,影响用户对网站的访问。在系统注册的时候,帐号是由系统自动分配的。还有为了可以找回帐号密码,在用户注册的时候,必须要填写密码问题和问题答案。以方便用户可以找回密码。所以在这个注册当中设置了一些必须填写的项目,其具体代码如下:
这段代码是系统自动生成用户帐号的程序,系统按照注册时候年月日来注册的。 对于必须填写的属性,如果不填写就不能注册成功则是用一个JAVASCRIPT函数来实现的:
public partial class FrontDesk_Login_UserRegister : System.Web.UI.Page {
DataCon myCon = new DataCon();
DataOperate sqlBind = new DataOperate(); md5 md = new md5();
protected void Page_Load(object sender, EventArgs e) { }
protected void btnRegister_Click(object sender, EventArgs e) {
string sqltest = \ + this.txtLoginName.Text + \; SqlConnection sqlconn = myCon.getCon(); sqlconn.Open();
SqlCommand sqlcom = new SqlCommand(sqltest, sqlconn);
毕业设计(论文) 第28页 共40页
SqlDataReader read = sqlcom.ExecuteReader(); read.Read();
if (read.HasRows) {
if (this.txtLoginName.Text.Trim() == read[\].ToString().Trim()) {
Response.Write(\该用户名已经注册过');localtion='UserRegister.aspx'\); return; } }
string pwd = md5.EncryptPassword(txtPwd.Text.ToString(), md5.PasswordType.MD5.ToString()); string sqlstr = \
+ \
+ \ + \ + txtLoginName.Text + \ + ddlSex.Text
+ \ + pwd + \ + txtTName.Text + \ + txtQuePwd.Text
+ \ + txtAnsPwd.Text + \ + txtTel.Text + \ + txtEmail.Text
+ \ + txtAddress.Text + \ + txtPostCode.Text + \ + txtQQ.Text + \; sqlBind.DataCom(sqlstr);
Response.Redirect(\); }
protected void btnCancel_Click(object sender, EventArgs e) {
txtLoginName.Text = \; txtPwd.Text = \; txtSecPwd.Text = \; txtTName.Text = \; txtQuePwd.Text = \; txtAnsPwd.Text = \; txtTel.Text = \; txtEmail.Text = \; txtAddress.Text = \; txtPostCode.Text = \; txtQQ.Text = \; }
protected void btnTest_Click(object sender, EventArgs e) {
string sqlstr = \ + this.txtLoginName.Text + \; SqlConnection sqlconn = myCon.getCon(); sqlconn.Open();
SqlCommand sqlcom = new SqlCommand(sqlstr, sqlconn); SqlDataReader read = sqlcom.ExecuteReader(); read.Read();
if (read.HasRows) {
if (this.txtLoginName.Text.Trim() == read[\].ToString().Trim()) {
Response.Write(\该用户名已经注册过');localtion='UserRegister.aspx'\); return; } } else {
Response.Write(\您可以进行正常注册');localtion='UserRegister.aspx'\); }
read.Close(); sqlconn.Close(); }
毕业设计(论文) 第29页 共40页
}
用户注册功能实现的效果如图5.2,5.3所示:
图5.2 图5.3
5.2用户登陆
从网络安全性方面考虑无论是在动态网站中,还是在WEB管理系统中,为不同用户分配不同的权限,并指定其可以访问和管理的页面都是非常重要的。本教学网站将用户名和密码分别保存到Session变量中,然后判断该用户名是否存在,如果不存在,则弹出提示对话框,并应用Session的Abandon方法清除Session变量。就保证不会留下记录了其中关键的代码如下:
以上的这些代码主要是用户登陆过程中的一些关键性的代码,而完成登陆功能所实现的效果如图5.4,5.5所示:(因为登陆是在首页上面的,所以就选取一段来看效果)
毕业设计(论文) 第30页 共40页
5.3找回密码
用户在密码丢失以后,可以通过找回密码功能来找回其密码,这时注册时候的问题回答就显得比较重要了。只要记得问题的回答答案,就可以找回来。以下是实现该功能的主要程序:
public partial class FrontDesk_FindPwd_FillUserID : System.Web.UI.Page
{
DataCon myCon = new DataCon();
protected void btnSure_Click(object sender, EventArgs e) {
SqlConnection sqlconn = myCon.getCon(); sqlconn.Open();
SqlCommand sqlcom = new SqlCommand(\ + txtUserID.Text + \, sqlconn);
int count = Convert.ToInt32(sqlcom.ExecuteScalar()); if (count > 0) {
Session[\] = txtUserID.Text;//给FillQuePwd.aspx和FindPwd.aspx页传值 Response.Redirect(\); } else {
Response.Write(\没有该用户ID');location='javascript:history.go(-1)'\); return;