网站程序设计报告

网站程序设计报告

                                 

                                      20##-6-1

一、开发过程

1)数据库设计

本网站程序才用的是SQL Server 2005数据库系统,在该系统中新建立1个数据库名为db_Student。创建用户信息表(tb_User)和成员信息表(people)。
下面是截图:

tb_User表

People表

创建工程截图:

2)配置Web.Config

    由于Web.Config文件对于访问站点的用户来说是不可见的,也是不可以访问的,所以为了系统数据的安全操作,可以再配置文件中(Web.Config)配置一些参数。本里将在Web.Config

文件中配置数据库连接字符串。代码如下

<appSettings>

          <add key="ConnectionString" value="Server=.;Uid=sa;pwd=;database=db_Student;"/>

   </appSettings>

3)公共类得编写

      为了加强代码的重用性和一卫户型,在这里建立一个公共类DB.cs,它里面包含4个方法,分别是GetCon方法、sqlEx方法、reDt方法、reDr方法。

(1)GetCon()方法

该方法主要是用来连接数据库,使用ConfigurationManager对象的AppSettings属性值获取配置节中连接数据库的字符串实例化SqlConnection对象,并返回对象,其代码如下:

             Public SqlConnection GetCon()

              {

   return new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());

  }

(2)sqlEx方法

        sqlEx方法主要使用SqlCommcand对象执行数据库操作,包括一个string字符型参数,是用来接受具体执行的SQL语句。执行成功返回1;失败则返回0.代码如下

         public int sqlEx(string cmdstr)

    {

        SqlConnection con = GetCon();

        con.Open();

        SqlCommand cmd = new SqlCommand(cmdstr, con);

        try

        {

            cmd.ExecuteNonQuery();

            return 1;

        }

        catch (Exception ee)

        {

            return 0;

        }

        finally

        {

            con.Dispose();

        }

}

(3)reDt方法

该方法通过SQL语句查询数据库中的数据,并查询结果存储在Data数据集中,最终将该数据集中存储查询记过的数据返回,详细代码如下:

public DataTable reDT(string cmdstr)

           {

        SqlConnection con = GetCon();

        con.Open();

        SqlDataAdapter da = new SqlDataAdapter(cmdstr,con);

        DataSet ds = new DataSet();

        da.Fill(ds);

       return (ds.Tables[0]);

   

 }

(4)reDr(string str)方法

该方法将执行语句的结果存储在一个SqlDataReader对象中,最后将这个SqlDataReader对象返回到调用处理。代码如下:

{

        SqlConnection conn = GetCon();

        conn.Open();

        SqlCommand com = new SqlCommand(str,conn);

        SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);

        return dr;

}

二、模块设计说明

  1)登录页实现过程

该页面实现了用户的登录功能,是整个Web应用程序的起始页,对于未注册的用户还提供了注册功能。该页面运行结果如图所示:

(1)界面设计

  在该页面添加3个TextBox控件、2个Button控件和一个Image控件,它们的ID属性分别为txtUserName、txtPwd、btnLogin、btnRegister.

(2)登录功能的实现

   用户单击“登录”按钮,将触发btnLogin_Click事件。通过数据库验证输入的用户名和密码是否正确。验证时待用DB类的reDr方法获取用户的信息。验证成功,则使用Session对象保存用户的登录信息,然后跳转到Home.aspx个人信息界面;验证失败,将给出登录失败的提示信息并刷新页面。代码如下:

protected void btnLogin_Click(object sender, EventArgs e)

    {

        DB db = new DB();

        string userName = this.txtUserName.Text.Trim();

        string passWord = this.txtPwd.Text.Trim();

       SqlDataReader dr=db.reDR("select * from tb_User where UserName='"+userName+"'and PassWord='"+passWord+"'");

       dr.Read();

       if (dr.HasRows)

       {

           Session["UserName"] = dr.GetValue(0);

           Session["Role"] = dr.GetValue(3);

           Response.Redirect("~/Home.aspx");

       }

       else {

           Response.Write("<script>alert('登录失败!请返回查找原因');location='Login.aspx'</script>");

      

       }

       dr.Close();

}

登录失败截图:

(3)注册新用户

单击“注册”按钮,将跳转到Register.aspx页面进行注册。

代码如下:

protected void btnRegister_Click(object sender, EventArgs e)

    {

        Response.Redirect("~/Register.aspx");

}

运行后截图:

用户注册页面

2)注册页面实现过程

  (1)界面设计

       在该页中添加4个TextBox控件,2个Button控件、一个LinkButton控件、4个RequiredFieldValidator控件,一个CompareValidator控件和一个RegularExpressionValidator控件。它们的ID属性分别为txtUserName、txtPwd、txtRepwd、txtEmail、brnOK、btnBack、RequiredFieldValidator1、RequiredFieldValidator2、RequiredFieldValidator3、RequiredFieldValidator4、CompareValidator1、RegularExpressionValidator1.

    (2)检测用户名是否存在

在注册新用户前,提供了一个对新用户希望注册的用户名进行检查的功能,通过单击“检测用户名是否存在”按钮来实现这一功能,此时触发了按钮的lnkbtnCheck_Click事件。代码如下:

protected void lnkbtnCheck_Click(object sender, EventArgs e)

    {

        reValue = CheckName();

        if (reValue == -1)

        {

            Response.Write("<script>alert('用户名存在!');</script>");

            this.txtUserName.Focus();

        }

        else if (reValue == 2)

        {

            Response.Write("<script>alert('恭喜您!该用户名尚未注册!');</script>");

            this.txtUserName.Focus();

        }

      

   在该事件中,主要通过调用CheckName()方法来判断用户名是否存在,将CheckName()方法返回值存在int型全局变量reValue中。如果存在就返回-1;如果不存在则返回2.CheckName()代码如下:

public int CheckName()

    {

        DB db = new DB();

        string str = "select * from tb_User where UserName='" + this.txtUserName.Text + "'";

        try

        {

            DataTable dt = db.reDT(str);

            if (dt.Rows[0][0].ToString() != "0")

            { return -1; }

            else { return 2; }

        }

        catch

        { return 0; }

    }

运行结果截图:

这是用户名已存在的情况

这是用户名可以用的情况。

(2)注册新用户

单击注册按钮可以完成注册功能。在触发btnOK_Click事件中首先调用CheckName()方法检验用户名是否已存在。存在的话就提示用户名已存在,不存在就把信息添加到数据库里面。代码如下:

protected void btnOK_Click(object sender, EventArgs e)

    {

      

        reValue = CheckName();

        if (reValue == -1)

        {

            Response.Write("<script>alert('用户名存在!');</script>");

        }

        else

        {

            DB db = new DB();

            string UserName = this.txtUserName.Text;

            string PassWord = this.txtPwd.Text.ToString();

            string Email = this.txtEmail.Text;

            string cmdstr = "insert into  tb_User(UserName,PassWord,Email) values ('" + UserName + "','" + PassWord + "','" + Email + "')";

            try

            {

                reValue = db.sqlEx(cmdstr);

                if (reValue == 1)

                {

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

                    Clear();

                }

                else if (reValue == 0)

                {

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

                }

            }

            catch (Exception ee)

            {

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

            }

        }

}

 注册成功截图:

注册成功后把编辑框里面的信息清楚用Clear()方法,代码如下:

public void Clear()

    {

        this.txtUserName.Text = "";

        this.txtPwd.Text = "";

        this.txtRepwd.Text = "";

        this.txtEmail.Text = "";

   

}

返回按钮就返回了,代码如下:

protected void btnBack_Click(object sender, EventArgs e)

    {

        Response.Redirect("Login.aspx");

    }

登录成功后截图:

三、实验总结

  这次给的时间匆忙,只写了一些最基本的功能,有很多东西都没实现,比如登陆界面的美化、实现一记录对应一张图片、添加、删除、修改、登录权限等。做完后感觉离我想象的网站的差距很大,上了3年学,我感觉这门课是我最喜欢的。我会课后再买一些这方面的书,争取在找工作时能把自己做的比较好的作品交上去。

 

第二篇:程序设计报告文件

课程设计报告

课程设计报告

一 C语言课程设计的目的

设计一职工信息管理系统,使之能提供以下功能:

(1) 系统以菜单方式工作

(2) 职工信息录入功能(职工信息用文件保存)

(3) 职工信息浏览功能

(4) 职工信息查询功能,查询方式可按学历查询或按职工号查询

(5) 职工信息删除修改功能(可选项)

二 课程设计报告正文

1题目要求

设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一职工信息管理系统,使之能提供以下功能:

(6) 系统以菜单方式工作

(7) 职工信息录入功能(职工信息用文件保存)

(8) 职工信息浏览功能

(9) 职工信息查询功能,查询方式可按学历查询或按职工号查询

(10) 职工信息删除修改功能(可选项)

2需求分析

根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。

3总体设计

根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出。系统功能模块如下: 职工信息管理系统

数据添加

数据查找

数据修改

数据删除

数据输出

4详细设计

1 主函数

主函数设计要简洁,只提供部分函数的调用。其中各功能模块用菜单方式选择。

【程序】

void main()

{

int m;

while(1)

{ printf("\n\n\n\t\t ______________________________________\n"); printf("\t\t 欢迎进入中国地质大学(武汉)员工信息系统\n"); printf("\t\t 设计者: 学号\n");

printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\n\t\t\t\t添加,请按1");

printf("\n\t\t\t\t查找,请按2");

printf("\n\t\t\t\t修改,请按3"); printf("\n\t\t\t\t删除,请按4"); printf("\n\t\t\t\t浏览,请按5");

printf("\n\t\t\t\t退出,请按0\n"); scanf("%d",&m);

if(m>=0&&m<=5)

{

switch(m)

{

case 1: append();

break;

case 2: search();

break;

case 3: modify();

break;

case 4: delete();

break;

case 5: output();

break;

case 0: exit();

}

printf("\n\n操作完毕,请再次选择!"); }

else

printf("\n\n选择错误,请再次选择!");

}

}

2 数据添加

【程序】

void append()

{

if((fp=fopen("worker.xls","a"))==NULL)

{

printf("\n不能打开该文件!");

exit();

}

printf("\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n");

scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

fclose(fp);

}

3 数据查找 数据查找共分为职工号、姓名等方式查找

【程序】

void search()

{

int l;

printf("\t\t\t\t*姓名查找按:1*\n"); printf("\t\t\t\t*学历查找按:2*\n"); printf("\t\t\t\t*职工号查按:3*\n"); scanf("%d",&l);

if(l>0&&l<4)

{switch(l)

{

case 1:nameway();

break;

case 2:xueliway();

break;

case 3:numway();

break;

}

printf("\n\n操作完毕!!!"); }

else printf("\t\t\t\t输入有误!!!"); }

void nameway()

{

int k=0;

char nam[8];

printf("\n请输入您要查找的职工姓名:");

scanf("%s",nam);

if((fp=fopen("worker.xls","rb"))==NULL)

{

printf("\n不能打开文件!");

exit();

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

if(strcmp(nam,one.name)==0)

{

printf("\n\n已查到,记录为:");

printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

k=1;

}

}

if(k==0)

printf("\n\n对不起,查无此人!。");

fclose(fp);

}

void xueliway()

{int j=0;

char xueli[10];

printf("\t\t\t\t输入你要查询的学历\n");

scanf("%s",xueli);

if((fp=fopen("worker.xls","rb"))==NULL)

{

printf("\n不能打开文件!");

exit();

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

if(strcmp(xueli,one.record)==0)

{

printf("\n\n已查到,记录为:");

printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

j=1;

}

}

if(j==0)

printf("\n\n对不起,查无此人!。");

fclose(fp);

}

void numway()

{

int i=0;

char numb[10];

printf("\t\t\t\t输入你要查询的职工号\n");

scanf("%s",numb);

if((fp=fopen("worker.xls","rb"))==NULL)

{

printf("\n不能打开文件!");

exit();

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

if(!strcmp(numb,one.num))

{

printf("\n\n已查到,记录为:");

printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

i=1;

}

}

if(!i)

printf("\n\n对不起,查无此人!。"); fclose(fp);

}

4 数据修改

【程序】

void modify()

{

int m,k=0;

long a;

char namekey[8];

printf("\n请输入您要修改的职工的姓名:"); scanf("%s",namekey);

if((fp=fopen("worker.xls","r+"))==NULL) {

printf("\n不能打开该文件!");

exit();

}

while(!feof(fp))

{

a=ftell(fp);

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

k=1;

break;

}

}

if(k)

{

printf("\n已查到,记录为:");

printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

printf("\n请输入信息(按照姓名、工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):");

scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

fseek(fp,a,0);

fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

}

else

printf("\n对不起,查无此人,无法进行修改。");

fclose(fp);

}

5 数据删除

【程序】

void delete()

{

int m,k=0;

long a,b;

char namekey[8], valid[4];

printf("\n请输入您要删除的职工姓名:");

scanf("%s",namekey);

if((fp=fopen("worker.xls","r+"))==NULL)

{

printf("\n不能打开该文件!");

exit();

}

while(!feof(fp))

{

a=ftell(fp);

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

if(strcmp(namekey,one.name)==0)

{

k=1;

break;

}

}

if(k==1)

{

printf("\n已查到,记录为");

printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

printf("\n确实要删除,按1;不删除,按0:");

scanf("%d",&m);

if(m==1)

{

fseek(fp,a,0);

fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n"

"","","","","","","","","");

}

}

else

printf("\n对不起,查无此人。");

fclose(fp);

}

6 数据输出

【程序】

void output()

{

if((fp=fopen("worker.xls","r"))==NULL)

{

printf("\n不能打开该文件!");

exit();

}

printf("\n\n%20s\n","职工信息管理系统");

while(!feof(fp))

{

fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

printf("%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);

}

fclose(fp);

}

5运行与测试报告:

三 后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。 这次课程设计让我掌握了许多的有用知识。首先我能够熟练的应用软件Microsoft Visual C++ 6.0 了。再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。

在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。还有就是起初我设计的程序总是有错误,我细心的修改,不断的改进,最终我做出了自己非常理想的程序!

相关推荐