网站程序设计报告
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 了。再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。
在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。还有就是起初我设计的程序总是有错误,我细心的修改,不断的改进,最终我做出了自己非常理想的程序!
一设计内容与设计要求1课程设计目的全面熟悉掌握信息资源管理基本知识把信息资源管理的概念理论知识与技术融入到实践当中从而加深对该课程…
长江师范学院数学与计算机学院网页制作课程设计报告1设计目的12设计思想121网站整体结构规划思想122主页设计思想123子页的设计…
怀化学院计算机工程系《网页设计》课程设计报告书设计题目:中国传统文化节日学生姓名:***学号:***专业:软件工程课程名称:网页设…
《网页设计》课程报告学号:专业:姓名:题目:设计时间:电子信息与计算机工程系20##年11月目录一、设计目的...2二、课程设计题…
网页设计课程设计报告系别:计算机科学系班级:09级计师二班学号:***成绩:日期:20xx年5月网页设计课程设计报告一、网站设计目…
C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之…
湖北文理学院VB程序设计课程实验报告学院物电学院专业自动化班级1211学号20xx118064姓名王亮任课教师王福林1实验一VB控…
程序设计实践设计报告课题名称:_简单通讯录的实现学生姓名:班级:班内序号:学号:日期:_20XX年5月8日1.课题概述1.1课题目…
《程序设计实习报告》学年:20xx20143实习课题:学生信息管理系统班级:计算机科学与技术1302班学号:***日期:20xx年…
课程设计报告课程名称C语言程序设计课题名称运动会分数统计系统专业机械设计及其自动化班级1185班学号***姓名**指导教师**20…