我的程序作品(ACM程序设计专题学习系统)

一、问题描述

建设一个网络课程学习网站,通过web页面成为教师的知识代理,师生之间不再是面对面的交流活动,师——生、生——生之间的交流都是通过网络这一媒体实现。网站提供学生注册、信息公告发布、课件资料下载、教师管理、专题课程知识添加、师生交流问答等功能来建立学习资源库,促进学生学习的发展。

二、需求分析

功能描述:

1)公告管理:由教师在后台管理中添加修改公告信息,前台显示最新的一条公告。

2)新闻信息发布管理:教师可以在后台管理中发布最新新闻信息,通过使用在线编辑器,可以进行可视化的文章编辑,并能够实现上传图片,以及插入视频声音等功能,前台主页显示最新的新闻信息,方便学生获取最新资讯。

3)专题知识管理:专题知识分为两部分,一为专题,二为专题章节,课程知识分为若干个专题学习板块,每个专题下有若干个专题章节,前台通过Tree树进行显示专题以及各个章节,教师要先建立专题后才能够添加章节,删除专题的同时将删除专题下所有章节,学生浏览专题知识需要登陆,若没有进行注册的就先要进行注册,否则将提示请先登陆,学生通过点击Tree树导航栏进行专题知识的浏览学习。

4)用户注册管理:学生通过注册成为网站用户,并能够获得所属教师的指导,只有通过注册后,才能够对专题知识进行浏览学习,并且在讨论主题中进行发言回复。教师在后台能够管理所属自己的注册用户,并添加修改注册用户。系统管理员能够对所有注册用户进行管理。

5)扩展知识管理:扩展知识开放给所有用户,能够匿名浏览,教师在后台添加修改删除文章,通过在线编辑器进行文章编辑,提供给学生更多的知识。

6)资料上传下载管理:管理员在后台添加修改资料信息,并且上传资料提供下载,学生能够任意下载这些资料。

7)讨论留言管理:学生注册或登陆后,能够发表讨论主题,对自己不懂的地方发问,以求教师或者其他同学的回复解答,或者回复其他同学发表的主题。教师在后台管理讨论主题,对恶意的主题进行删除,并对学生提问进行回复。

8)教师管理员管理:管理员分为两种,系统管理员和教师,系统管理员拥有所有权限,教师作为普通管理员,除不能够添加管理员以及修改别的管理员以外,其他权限都和系统管理员一样。系统管理员不能够成为注册用户所属教师。

9)课程基本信息管理:教师在后台可对课程的基本信息进行修改,以便完善课程的建设。(10)友情链接管理:教师可以在后台添加修改网站链接,前台滚动显示最新添加的网站链接

三、系统设计

系统运行环境:windows2003+IIS6.0+.net framework2.0

开发工具:visual studio 2005 +SQLserver2000sp4

专题学习网站主要采用asp.net 2.0编程技术,通过显示页面与代码分离两层结构实现, 用户注册修改采用存储过程实现,并采用数据库视图,实现文章信息的分页显示,以及使用HHFeditor在线编辑器ASP.net3.0免费版,实现文章的可视化编辑。

全站风格:采用Div+CSS控制页面显示,减少代码编写,方便修改。

管理后台:统一采用asp.net母版页,简化开发步骤。

前台显示:除专题知识外,都采用asp.net母版页,减少代码编写。

验证码机制:在用户注册登陆,讨论留言发表回复,后台管理登陆都采用验证码,防止恶意攻击。

TreeView控件:通过数据库层次结构,将TreeView绑定到SQLserver数据库,实现树形导航。

Iframe框架:首页用户登陆,专题知识模块采用Iframe框架,实现局部刷新。

加密机制:用户密码,管理员密码都采用MD5加密.

四、详细设计

数据库实现

公告信息表Notice

数据库字段

数据类型

字段描述

Notice_Id

Int(4)

编号

Notice_Content

text

公告内容

Notice_date

datetime

发布时间

Notice_Admin

Varchar(50)

发布者

 

新闻信息表 News

数据库字段

数据类型

字段描述

News_Id

Int(4)

编号

News_Name

Varchar(50)

新闻名称

News_Content

text

新闻内容

News_Admin

Varchar(50)

发布者

News_Date

datetime

新闻日期

 

用户信息表Users

数据库字段

数据类型

字段描述

Users_Id

Int4

编号

Users_Name

Varchar50

用户名

Users_Password

Varchar50

密码

Users_Realname

Varchar50

真实姓名

Users_own

Int4

所属教师编号

Users_Email

Varchar50

Email地址

 

教师管理员表Admin

数据库字段

数据类型

字段描述

Admin_Id

Int4

编号

Admin_name

Varchar50

用户名

Admin_password

Varchar50

用户密码

Admin_Realname

Varchar50

真实姓名

Admin_own

Int4

所属教师

Admin_Email

Varchar50

Email地址

 

课程信息表Subject

数据库字段

数据类型

字段描述

Subject_Id

Int(4)

编号

Subject_Name

Varchar(50)

课程名称

Subject_Review

Text

课程内容简介

Subject_Admin

Varchar(50)

课程管理员名称

 

专题信息表 Capters

数据库字段

数据类型

字段描述

Capters_id

Int4

编号

Capters_parent

Int4

父节点(0为专题,其他为章节)

Capters_Name

Varchr(50)

专题名称

Capters_content

Text

专题内容(章节内容

Capters_Own

Int

所属课程

 

扩展知识表 Article

数据库字段

数据类型

字段描述

Article_id

Int(4)

编号

Article_name

Varchar(50)

文章名称

Article_content

text

文章内容

Article_admin

Varchar(50)

作者

Article_date

datetime

添加日期

 

 

 

资料下载表 Download

数据库字段

数据类型

字段描述

Down_id

Int4

编号

Down_name

Varchar(50)

下载名称

Down_content

Text

资料简介

Down_admin

Varchar(50)

上传者

Down_link

Varchar(50)

文件地址

Down_date

datetime

上传时间

 

协作学习(讨论留言)BBS

数据库字段

数据类型

字段描述

BBS_id

Int4

编号

BBS_parent

Int4

父节点(0为主题,其他为主题回复)

BBS_user

Varchar(50)

发表者

BBS_title

Varchar(50)

主题名称

BBS_content

Text

内容

BBS_date

Datetime

发表时间

BBS_reply

Text

回复内容

BBS_admin

Varchar(50)

回复者

BBS_redate

Datetime

时间

 

友情链接表 Link

数据库字段

数据类型

字段描述

Link_id

Int

编号

Link_name

Varchar(50)

链接名称

Link_content

Text

链接简介

Link_url

Varchar(50)

链接URL

 

存储过程

用户注册

存储过程名称以及功能

输入参数

返回值

UserReg新用户注册

@usersname

@userspassword

@usersreal

@usersown

@usersemail

0 注册成功

1 注册失败

 

 

存储过程名称以及功能

输入参数

返回值

UserEdit修改用户信息

@usersid 

@userspassword

@usersreal

@usersname

@usersemail

0 更新成功

1 没有用户

 

                                                                                                                                                 

五、代码编写与调试

TreeView控件

绑定SQLserver数据库实现树形菜单

protected void Page_Load(object sender, EventArgs e)

    {

        SqlConnection conn =

New SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

        conn.Open();

        //获取树形目录节点

        SqlDataAdapter sqlDataAdapter_Tree =

new SqlDataAdapter("select capters_id,capters_name,Capters_parent from Capters", conn);

        DataSet DataSet_Tree = new DataSet();

        sqlDataAdapter_Tree.Fill(DataSet_Tree);

        this.ViewState["DataSet_Tree"] = DataSet_Tree;

 

        //调用递归函数,完成树形结构的生成

        AddTree(0, (TreeNode)null);

 

    }

    public void AddTree(int ParentID, TreeNode pNode)

    {

        DataSet DataSet_Tree = (DataSet)this.ViewState["DataSet_Tree"];

        DataView DataView_Tree = new DataView(DataSet_Tree.Tables[0]);

        //过滤ParentID,得到当前的所有子节点 ParentID为父节点ID

        DataView_Tree.RowFilter = "[Capters_parent] = " + ParentID;

 

        //循环递归

        foreach (DataRowView Row in DataView_Tree)

        {

            //声明节点

            TreeNode Node = new TreeNode();

            //绑定超级链接

            Node.NavigateUrl = "Part.aspx?capterid=" + Row["Capters_Id"].ToString();

            Node.Target = "index";

            //开始递归

            if (ParentID == 0)

            {

                //添加根节点

                Node.Text = Row["Capters_name"].ToString();

                TreeView_Tree.Nodes.Add(Node);

                Node.Expanded = true; //节点状态展开

                AddTree(Int32.Parse(Row["capters_id"].ToString()), Node); //再次递归

            }

            else

            {

                //添加当前节点的子节点

                Node.Text = Row["Capters_name"].ToString();

                pNode.ChildNodes.Add(Node);

                Node.Expanded = true; //节点状态展开

                AddTree(Int32.Parse(Row["Capters_id"].ToString()), Node); //再次递归

            }

        }

       //关闭连接

    }

MD5加密实现

public string md5(string str, int code) //md5加密函数

    {

        if (code == 16) //16MD5加密(取32位加密的9~25字符)

        {

            return

FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);

        }

 

        if (code == 32) //32位加密

        {

            return

FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();

        }

        return "";

}

用户注册存储过程实现

       string Str = "Select * from [Users] where Users_Name = '" + Usersname + "'";

            SqlConnection conn =

new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);//连接数据库

SqlCommand cmd = new SqlCommand(Str, conn);

try

{

conn.Open();                    //打开连接

SqlDataReader SQLread = cmd.ExecuteReader(); //执行查询

  if (SQLread.Read())                 //如果该用户存在

  {

   Messages.Text = "用户名已经存在!";

  Messages.Visible = true;

    return;

    }

  else{

     conn.Close();

     //UserReg存储过程,参数赋值,asp.net1.1使用的是Parameters.Add

     //asp.net2.0则放弃Add使用Parameters.AddWithValue

     SqlCommand command = new SqlCommand("UserReg", conn);

     command.CommandType = CommandType.StoredProcedure;

     command.Parameters.AddWithValue("@usersname",Usersname);

     command.Parameters.AddWithValue("@userspassword", md5(Userspassword, 32));

     command.Parameters.AddWithValue("@usersreal", Usersreal);

     command.Parameters.AddWithValue("@usersemail", Usersemail);

     command.Parameters.AddWithValue("@usersown", Usersown);

     //存储过程返回值

SqlParameter paramOut = command.Parameters.AddWithValue("@RETURN_VALUE", "");

paramOut.Direction = ParameterDirection.ReturnValue;

 try

  {

    //打开数据链接

   conn.Open();

  //执行存储过程

 command.ExecuteNonQuery();

  //返回值

   int Rvalue = (int)command.Parameters["@RETURN_VALUE"].Value;

    if (Rvalue == 0)

{

 Response.Write("<script>alert('添加成功!');location.href='Admin_Users.aspx'</script>");}

   else

    {Messages.Text = "错误,添加失败!";

    Messages.Visible = true;

     return;  }

   }

   catch (Exception ex) {

      Response.Write("<script language=javascript>alert('" + ex.Message.ToString() + "')</script>");  }

}  }

catch (Exception ee)

{  Response.Write("<script language=javascript>alert('" + ee.Message.ToString() + "')</script>");}

finally

  {  conn.Close();  }

}

六、系统维护

演示地址:http://202.116.24.89:1234 ACM程序设计专题学习网站

管理员登陆:帐号:admin 密码:admin

演示系统运行环境:window2000+IIS5.0 +.net framework 2.0

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值