网站开发项目报告书

时间:2024.4.21

项目报告书

 

科目:web项目开发

         学号:          

         姓名:            

班级:软件10301班


一.项目概要

1.引言

现在网站功能越来越多,但很多的网站都需要用户是网站的会员,通过会员登录才能够使用网站中的一些功能。会员的登录与注册已成为众多网站的基本功能之一。

2.项目名称

《网站会员的注册与登录》

3.项目目的

Ø  掌握会员注册功能的实现

Ø  了解验证控件的使用

Ø  了解MD5加密技术

Ø  掌握会员登录功能的实现

Ø  了解验证码技术

Ø  培养网站开发技术,积累相关开发经验

4.项目背景

 现在网站的很多功能都是需要会员才能使用,例如在网站上下载一些资料,查看文章,留言等。这就需要开发人员给网站设计登录与注册的功能。这样使用户成为会员后能使用更多的功能。本学期初,在老师带领之下学生独立开发一个web项目,实现网站会员登录与注册功能。通过本项目熟悉网站开发的基本流程,掌握相关技术,积累开发经验。

5.项目开发人员

      软件10301班师生成员

6.项目开发时间

20##年2月~20##年3月

二.可行性研究报告

1.概论

网站会员注册与登录项目运用.NET、数据库、MD5加密和C#相关技术,有其相应的运行环境,本案通过对其相应的研究确定开发可行性及注意事项。

2.可行性研究的前提

2.1项目的基本功能要求

本项目实例主要包括三种操作,即用户登录、用户注册及用户密码的修改。

用户运行登录界面,如果用户没有注册会员可以单击“新会员注册”按钮跳转到会员注册页面,在此页面可以先判断用户输入的会员名是否存在,如果存在需要输入会员名,如果不存在用户可以继续输入个人资料来完成注册,完成注册后添加注册日志。如果用户名已经注册,则可以直接输入会员名、密码和验证码,单击“登录”按钮进行登录。在单击“登录”按钮时,系统首先判断用户输入的信息和验证码是否正确,如果正确,再判断用户输入的会员名和密码是否正确,都正确后登录成功,同时添加登录日志。在登录页面中,单击“修改密码”按钮,进入修改密码页面,在此页面用户可以修改原有密码。

2.2项目的实现目标

注册用户名并用该用户名登录进入首页,修改用户密码后重新登录。使用验证码技术提高网站安全性。

2.3决定可行性的主要因素

  技术、团队团结力、开发人员的意志和恒心

3.现有可行性分析

3.1现有知识内容

系统开发语言:ASP.NET、C#语言、HTML语言基础、CSS样式布局

数据库:SQL Server 2005

3.2现有开发工具

系统开发环境:Microsoft Visual Studio 2008

运行平台:Windows XP

Web服务器:IIS

3.3系统大体流程设计

程序业务流程图


4.技术可行性分析

4.1系统的简要概述

该系统主要分为三部分:登录部分、 注册部分和修改密码部分。为了方便用户者可以根据需求进行操作 ,本系统还可对用户的账号和密码进行进入管理。需要用户注册用户名和密码。

4.2需用技术

.NET网站开发技术,C#程序设计语言,数据库技术,MD5加密技术

4.3技术可行性评价

满足相关相关技术要求和设备需求,可以开发本项目

5.结论意见

通过研究具备相关的开发条件,可以开发本项目。

开发过程中仍需进一步钻研、进取,结合所学知识综合运用,在实践中加深对知识的理解。

三.需求规格说明书

1.概论

网站会员的注册与登录功能的实现需要相应的开发和运行环境,本案介绍该项目在开发和运行过程中所需的准备工作和相关规格需求,以规范该项目,保证功能的完整性和网站的安全性。

2.任务概述

2.1项目目标

1、现在网站的很多功能都需要是会员才能登录,例如在网站上下载一些资料,查看某些文件,留言等。这就需要开发人员给网站设计登陆和注册的功能。这样使用户成为会员后能事更多的功能。本项目的具体功能实现如下:

Ø  判断用户输入的会员名和密码是否正确;

Ø  利用验证码来防止用户的非法操作

Ø  用户登录成功添加登陆日志

Ø  注册新会员

Ø  判断注册新的会员是否被用过

Ø  判断用户输入的资料是否合法

Ø  用户注册成功添加注册日志

2.2开发运行环境

系统开发环境:Microsoft Visual Studio 2008

系统开发语言:ASP.net+C#

运行平台:Windows XP

数据库:SQL Server 2005

Web服务器: IIS

2.3系统规范要求

    登录与注册系统的规范有以下几个方面:

(1)界面设计友好、美观。

(2)数据存储安全、可靠。

(3)信息分类清晰、准确。

(4)提供灵活、方便的权限设置功能,使整个系统的管理分工明确。

(5)具有易维护性和易操作性。


四.概要设计说明书

该项目主要有三个功能模块:登录模块、注册模块和修改密码模块。三个模块对应三个页面,有相应的数据在三个页面间传递。本案主要介绍该项目的总体设计和对应的模块功能划分。

 


1.模块说明

  1.1登录模块:

(1)用户输入用户名、密码和验证码,如果正确点击登录跳转到主页面,同时向数据库添加登陆日志。若错误则不能跳转到主页面并给出相应提示。

(2)单击“新会员注册”按钮,跳转到注册页面;

(3)单击“修改密码”按钮,跳转到修改密码页面。

1.2注册模块:

(1)输入用户名,单击“检测而用户名”按钮,检测用户名是否存在。

(2)如存在则重新输入用户名用该用户登录。

(3)若不存在则输入其他信息,验证过通过后点击“注册用户”按钮,完成注册同时向数据库中添加注册日志。

1.3修改模块:

(1)填写用户名、旧密码和新密码,单击“确认修改”按钮。

(2)若输入用户名及密码一致,则修改成功并更改后台数据库。

(3)若输入用户名及密码不一致,则弹出“修改失败”对话框。

2.数据库设计

本系统采用SQL SERVER 2005数据库,主要有3个表:logininfo,loginlog,rntrylog.数据表logininfo用来存储后台会员名称,密码和基本资料

数据库设计结构实效:

2.1用户信息表:

表Logininfo的结构及实效

2.2注册日志表:

表Loginlog的结构及实效

2.3登录日志表:

表entrylog的结构及实效

3.安全性设计

输入密码时,使用MD5加密技术向后台数据库添加用户密码信息。

将信息保存到数据库前应考虑一下密码的安全性,MD5是单项加密,根据指定的密码和散列算法生成一个合适于存储在配置文件中的散列密码。

引用的命名空间为System.Web.Security;

语法:public static string  HashPasswordForStoringInConfigFile

  (string password, string passwordformat);

参数说明:

Password 要进行散列运算的密码;

Passwordformat 要使用的散列算法

五.详细设计说明书

本案主要介绍各个页面的主要控件及功能实现,通过实例展现出项目开发的详细过程。

网页设计结构图

1.登录页设计

1.1验证码技术

  验证码的作用是有效防止注册用户用特定程序集暴力破解方式进行不断的登录尝试来破解密码,不少网站为了防止用户利用机器人自动注册,登录,灌水,都采用了验证码技术。

下面详细介绍验证码技术的实现。

需要引用using System.Drawing ;

using System.IO;命名空间。

新建一个页面命名为yanzhengma.aspx页面

主要代码如下:

public partial class yanzhengma : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        string checkCode = CreateRandomCode(4);

        Session["CheckCode"] = checkCode;

        CreateImage(checkCode);

    }

        private string CreateRandomCode(int codeCount)

        {

          string allChar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,s,y,z,";

            string [] allCharArray =allChar .Split (',');

            string randomcode = "";

            int temp;

            Random rand=new Random ();

            for (int i=0;i<codeCount ;i++)

            {

             int t=rand .Next (35);

                temp =t ;

            randomcode  += allCharArray [t];

            }

            return randomcode ;

        }

        private void CreateImage(string checkCode)

        {

            int iwdth = (int)(checkCode.Length * 20.5);

            System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwdth, 30);

            Graphics g = Graphics.FromImage(image);

            Font f=new System .Drawing .Font ("宋体",20,System.Drawing .FontStyle .Bold );

            Brush b = new System.Drawing.SolidBrush(Color.White);

            g.Clear(Color.BurlyWood);

            g.DrawString(checkCode, f, b, 3, 3);

            Pen blackPen = new Pen(Color.Blue, 0);

            Random rand = new Random();

            for (int i = 0; i < 2; i++)

            {

                int y = rand.Next(image.Height);

                g.DrawLine(blackPen, 0, y, image.Width, y);

            }

            for (int i = 0; i < 150; i++)

            {

                int x = rand.Next(image.Width);

                int y = rand.Next(image.Height);

                image.SetPixel(x, y, Color.FromArgb(rand.Next()));

            }

          

            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            Response.ClearContent();

            Response.ContentType = "image/Jpeg";

            Response.BinaryWrite(ms.ToArray());

            g.Dispose();

            image.Dispose();

        }

    }

运行如图所示

图1-3

1.2页面设置:

运行实例如图:

1.3登录页面关键代码:

需要引用using System.Data.SqlClient;

using System.Drawing;命名空间;

       public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            this.Image1.ImageUrl = "~/ValidataCode.aspx";

        }

    }

    protected void LinkButton1_Click(object sender, EventArgs e)

    {

        this.Image1.ImageUrl = "~/ValidataCode.aspx";

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        string name = Textname.Text.Trim();

        string pwd = Textpwd.Text.Trim();

        string code = Textcode.Text.Trim();

        string str = "server=.;uid=sa;pwd=123;database=sss";

        SqlConnection con=new SqlConnection(str);

         try

        {

            con.Open();

            string str2 = "select count(*) from Logininfo where name=@name and pass=@pwd";

            SqlCommand cmd = new SqlCommand(str2, con);

            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);

            cmd.Parameters["@name"].Value = name;

            cmd.Parameters.Add("@pwd", SqlDbType.VarChar, 50);

            cmd.Parameters["@pwd"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Textpwd.Text, "MD5");

            int count = Convert.ToInt16(cmd.ExecuteScalar());

            if (count > 0 & Session["checkCode"].ToString() == code)

            {

                this.Textcode.Text = "";

                Session["login"] = "true";

                cmd = new SqlCommand("insert entrylog values('" + Textname.Text + "','" + DateTime.Now.ToString() + "')", con);

                cmd.ExecuteNonQuery();

                 //Response.Redirect("Sucess.aspx");

                 Response.Write("<script>alert('登录成功!')</script>");

             }

             else

             {

                 this.Textcode.Text="";

                 Response.Write("<script>alert('密码或用户名错误!')</script>");

             }

        }

        catch(Exception error)

        {

            Response.Write(error.ToString());

        }

    }

2.注册页面设计

会员注册主要将用户输入的信息存储到数据库中,这里使用到了数据库的技术,通过使用SQLConnection对象链接数据库,将数据库做成一个自定义方法reeateloginconn在需要用到数据库链接时调用此方法。

2.1页面设置:

运行实例如图

2.2关键代码:

protected SqlConnection createloginconn()

    {

        SqlConnection con = new SqlConnection("server=.;database=xsdl;Integrated security=SSPI;");

        return con;

}

注意:

此方法中应用了System.Data.SqlClicent命名空间中的Sqlconnection对象,需要引用System.Data.SqlClicent命名空间。

主要程序代码:

    protected void ButtonisName _Click(object sender, EventArgs e)

    {

        int i = isName();

        if (i > 0)

        {

            RegisterStartupScript("yes", "<script>alert('会员名已经存在!')</script>");

        }

        else

        {

            RegisterStartupScript("no", "<script>alert('可以注册!')</script>");

        }

    }

    protected int isName()

    {

        int i;

        string name = Textname.Text;

        if (name.Trim() != "")

        {

            SqlConnection con = createloginconn();

            con.Open();

            SqlCommand com = new SqlCommand("select count(*) from logininfo where Name='" + name + "'", con);

            return i = Convert.ToInt32(com.ExecuteScalar());

            con.Close();   

        }

        else

            return i = 1;

    }

   

    protected void ButtonLogin _Click(object sender, EventArgs e)

    {

        int i = isName();

        if (i <= 0)

        {

            if (add())

            {

                SqlConnection con = this.createloginconn();

                con.Open();

                SqlCommand com = new SqlCommand("insert loginlog(name,logindate) values('" + Textname.Text + "','" + DateTime.Now.ToString() + "')", con);

                com.ExecuteNonQuery();

                Response.Write("<script>alert('注册成功!单击确定返回登陆页面');location='landing.aspx';</script>");

                con.Close();

            }

            else

                Response.Write("<script>alert('注册失败')</script>");

        }

        else

            Response.Write("<script>alert('会员名已经存!')</script>");

    }

        public bool add()

    {

        string name = Textname.Text;

        string pass = FormsAuthentication.HashPasswordForStoringInConfigFile(Textpass.Text, "MD5");

     

        string email = TextEmail.Text;

        string address = Textaddress.Text;

        string sql = "insert into logininfo(name,pass,email,address) values('" + name + " ','" + pass+ "','" +email + "','" + address + "')";

        SqlConnection con = this.createloginconn();

        con.Open();

        SqlCommand com = new SqlCommand(sql, con);

        int i =Convert.ToInt32 (com.ExecuteNonQuery());

        if (i > 0)

        {

            return true;

        }

        else

        {

            return false;

        }

            con.Close();    

  }

3.修改密码页面设计

3.1界面设置:

单击“修改密码”超链接转到注册页面。

所有用户登录后都可以修改自己的密码,当输入的新密码两次一致是即可修改成功。

在窗体中添加控件,添加的主要控件及用途见下表1-5

3.2关键代码:

需要引用using System.Data.SqlClient;命名空间

public partial class xiugaimima : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (Session["login"] == "false")

            Response.Redirect("landing.aspx");

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        string name = this.TextBox1.Text.Trim();

        string oldpwd = this.TextBox2.Text.Trim();

        string newpwd = this.TextBox3.Text.Trim();

        try

        {

            SqlConnection con = new SqlConnection("server=.;database=xsdl;Integrated security=SSPI");

            con.Open();

            string str = "select count(*) from logininfo where name=@name and pass=@oldpwd";

            SqlCommand cmd = new SqlCommand(str, con);

            cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);

            cmd.Parameters["@name"].Value = name;

            cmd.Parameters.Add("@oldpwd", SqlDbType.VarChar, 50);

            cmd.Parameters["@oldpwd"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(oldpwd, "MD5");

            int count = Convert.ToInt16(cmd.ExecuteScalar());

            if (count > 0)

            {

                string str2 = "update logininfo set pass='" + FormsAuthentication.HashPasswordForStoringInConfigFile(newpwd, "MD5") + "' where name='" + name + "'";

                cmd.CommandText = str2;

                cmd.ExecuteNonQuery();

                Response.Write("<script>alert('注册成功!单击确定返回登陆页面');location='landing.aspx';</script>");

            }

            else

            {

                Response.Write("<script>alert('没有此用户')</script>");

                this.TextBox1.Text = "";

                TextBox1.Focus();

            }

        }

        catch

        {

            Response.Write("<script>alert('修改密码不成功')</script>");

        }

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        Response.Redirect("landing.aspx");

     }

}

六.项目测试报告

1. 目的

为了指导软件测试人员有效地设计测试用例,对所测试软件进行全面地测试,以尽可能发现最隐藏问题。

2.适用范围

适用于所有软件的测试。

3.测试要求在屏幕上的显示位置是否正确、美观

3.1窗口

l  窗口标题是否正确

l  窗口中各对象位置是否正确、美观

l  窗口的系统菜单及按钮操作是否正常

l  窗口在各种不同分辨率下是否能全部显示

3.2对话框(Dialog Box)

l  对话框弹出时机及位置是否正确 

l  对话框内各对象位置是否正确

l  对话框内各对象的文字标题意义是否明确

l  模式对话框和非模式对话框的属性是否正确

3.3消息框(Message Box)

l  弹出时机及位置是否正确

l  信息意义是否正确、意义是否明确

l  弹出时必须锁住Mouse消息和键盘输入

l  必须有正确的对象用于退出Message Box

3.4文字Label

l  显示位置要美观

l  文字意义要明确

l  同一界面上字体及字体大小应统一、美观

3.5文字Button

l  显示正确且意义明确

3.6图象Button

l  应相应的文字说明或意义明确

l  应有按下和抬起两种状态

l  在界面中所处位置要美观

3.7输入域

l  字符输入域

l  为空

l  任意字符串(中英文)

l  功能键及符号键

l  超界字符串的处理

3.8显示域

l  显示域中各对象显示位置正确、美观

l  显示域中文字Label信息正确

l  显示域中文字Label字体及字体大小应统一且美观

l  显示域中显示信息应与输入的信息一致

l  在屏幕显示不下时,应增加滚动条以确保信息显示的完整

4.测试结果

经检验,项目满足功能需求,界面布局、控件属性合格,通过测试。

七.项目总结

在此次项目中独自完成了项目的功能设计,结合所学知识综合运用,效果良好。在设计过程中学到了很多东西,同时也深感不足。现在此做一总结。

1.完成情况

Ø  数据库设计成功,数据传递良好;

Ø  界面简约,控件属性正确搭建得体;

Ø  功能实现正常,符合功能要求。

2.项目收获

本项目是独自创作的第一个项目,在制作过程中收获了很多,主要有如下几个方面

Ø  将所学知识用于实践,深入理解了所学知识,运用更加熟练。

Ø  自己查阅资料,扩展了知识面,对项目开发过程有了深入详细了解

Ø  与他人合作,团队协作能力提升

Ø  代码编写水平提高

3.存在不足

Ø  项目开发不是一帆风顺的,开发过程中也有些不足的地方

Ø  准备不充分,入手困难,导致开发周期长

Ø  开发环境运用不太熟练,编代码上有一定影响

Ø  代码书写格式不太规范,易出现语法错误,影响开发进度

4.改进意见

Ø  做任何事情都要认真对待、详细了解、充分准备

Ø  进一步熟悉开发环境,提高代码编写水平,代码书写规范化

Ø  在编写过程中尝试自己编写方法,改变方法,发散思维

Ø  有恒心毅力,刻苦进取

更多相关推荐:
项目开发总结报告

项目开发总结报告旅游自助系统项目开发总结报告项目负责人小菁小组成员小虹小军小骁小雷项目开发总结报告文档变更记录过程数据小结项目开发总结报告目录1引言错误未定义书签11编写目的错误未定义书签12背景错误未定义书签...

项目开发规范报告

项目开发报告一报告的目的通过反映此次项目开发中各层面存在的问题以及对项目开发中造成的影响来反映项目开发中规范化的必要性以及开发文档的重要性规范化软件开发流程控制是为了使整个软件产品在开发各个阶段清晰要求明确任务...

项目开发总结报告

山东师范大学梦想团队第七届齐鲁软件设计大赛网上淘宝网络资源检索项目开发总结报告参赛单位山东师范大学信息科学与工程学院作品名称网上淘宝团队名称梦想团队1山东师范大学梦想团队1引言311编写目的312背景313定义...

软件开发总结报告

目录一.引言...................................................................................................…

模板-项目开发总结报告

分类:模板项目编号:S×××-项目名称项目开发总结报告Version:项目承担部门:撰写人(签名):完成日期:本文档使用部门:■主管领导■项目组□客户(市场)□维护人员□用户评审负责人(签名):评审日期:目录1…

项目开发总结报告范文

大学生软件开发实习总结时间过得真快,转眼间,在山大实习生活就结束了四周的时间能够和山大的同学一起工作、学习、生活我感到非常的荣幸,同时也感觉到很大的压力,作为电子商务专业的学生从事软件开发感觉还是有一定的困难,…

项目开发总结报告(GB8567——88)

项目开发总结报告(GB8567——88)1引言1.1编写目的为了总结报告在工作过程中产生的问题、行到经验,并且总结报告设计和制作者过程中的逻辑和想法。1.2背景项目名称:学生成绩管理系统开发背景:通过开发此软件…

Android项目开发报告

目录1项目简介22开发环境221Android平台结构介绍222MVC框架33功能介绍331登录332注册333添加434查询535主页面64数据库结构741数据表设计75项目结构751src文件夹752gen...

旅游开发建设项目可行性研究报告

张掖市丹霞地貌和彩色丘陵旅游开发建设项目可行性研究报告甘肃地质工程勘察院二OO五年十月目录一项目名称及承办单位1二项目背景1三旅游资源类型与分布3四项目建设条件分析6五工程规划8六项目建设投资估算与开发建设顺序...

开发项目可行性分析报告

XX机械制造有限公司城市污水开发项目可行性分析报告课程名称专业班级姓名学号指导教师目录第一章公司介绍111公司概述112项目成立的背景1第二章市场分析121市场需求122市场供给123市场分析及发展趋势2第三章...

qq项目开发可行性分析报告

QQ系统开发与设计可行性研究报告1引言11编写目的经过对QQ系统项目进行详细调查研究初步拟定系统实现报告明确开发风险及其所带来的经济效益对软件开发中将要面临的问题及其解决方案进行可行性分析本报告经审核后交由软件...

蓝莓产业化开发建设项目可行性研究报告

蓝莓产业化开发项目可行性研究报告蓝莓产业化开发建设项目可行性研究报告1蓝莓产业化开发项目可行性研究报告第一章总论1项目概要11项目名称蓝莓产业化开发项目12建设单位武隆县林业局13建设性质新建14建设地址武隆县...

项目开发报告(44篇)