博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
系统需求分析
网站的工作流程主要分为两部分:后台管理员对系统数据维护,前台会员对新闻信息浏览;后台管理员与前台会员针对申请表的交互操作。
后台数据库主要对数据信息进行管理,包括添加,修改,删除等…用户在前台可以浏览系统中的的新闻信息;其次是会员提交申请表,后台管理员查看审核,未通过审核则反馈给前台会员未通过的原因,当审核通过,申请表状态则改变。网站详细工作流程如下图2.1所示:
图2.1 网站工作流程图
Fig.2.1 work flow chart
根据业务分析系统的主要的功能包括新闻管理,留言管理,用户管理,相册管理,新闻用户评论管理,数据备份管理等主要功能,新闻管理包括系统的新闻进行管理,以及相关增加删除,对新闻信息进行基本维护,用户可以对新闻信息进行评论,实现了普通用户可以对系统的新闻发表自己的看法,在系统内通过留言的方式留下痕迹,并且可以对已经有的留言进行回复。系统过图片管理功能展现台湾的风貌,让那个系统使用者更多的了解台湾,而对系统管理员来说需要对着图片进行有效的管理,同时对图片和相册管理。系统主要的服务对象是系统的普通用户,使用者通过注册成为系统普通用户,普通用户可以进行注册和登录基本功能,也可以在系统内进行系统留言,同事填写赴台申请表,通过附件的形式把申请提交给管理员,等待审核等基本功能。系统管理员,可以已经注册的系统内的会员进行管理员。对系统内的数据库安全性,及备份达到实时在线维护的功能,根据这些功能分析得出系统分析图,如图2.2所示。
图2.2 系统分析图
Fig.2.2 System Analysis chart
2.3 系统ER图分析
通过系统的er图分析得出,系统的基本模型,方便分析系统数据库模型,通过系统的业务分析及系统分析。新闻类别实体和新闻实体是一对多的关系即1:M,一个新闻类别可以有多个新闻信息。一个新闻信息可以有多个评论,所以关系是1:M。系统管理员用户信息实体,主要包括管理员的编号,用户名,和密码等主要信息。系统针对的普通用户建有用户信息实体表,和申请表是一对多的关系即1:M,通过这些实体ER图形成整体赴台系统ER图
图2.3 ER图
Fig.2.3 ER chart
功能模型流程图可以形象的展现出程序的运行工作流程,对程序的开发起引导性作用,在软件工程中是必不可少的步骤。通过功能模型的分析,更加清晰分析出来赴台系统的具体功能未后续的开发提供更清晰的开发思路与设计思路。
图2.4 注册流程图
Fig.2.4 Register flow chart
说明:用户注册模块,账户、密码为必填项,其中两次输入密码必须相同,采用JS在客户端进行用户输入判断,当为空或者两次密码输入不相同时,阻止向服务器端提交数据,并通过javascript方式alert提示用户密码输入不正确 。当输入正确时,以POST方式提交数据,在服务器端,先检测当前用户名是否已经存在,若存在通过javascritp中alert形式给出提示,不让用户继续提交注册信息;如果用户不存在,则可以注册,将数据信息插入数据库,并且把登录人员的信息封装到session中方便系统其它的功能模块随时提取。通过此功能的分析更加清晰分析得出注册功能流程图,在开发过程中更加清晰注册的流程
图2.4 用户登录流程图
Fig.2.4 Login flow chart
说明:用户登录模块从客户端获取用户名和密码,然后,系统以post方式提交,在验证asp页面进行SQL查询与数据库会员表进行匹配,如果查询结果大于0,则表示有匹配记录,从而登录成功。同时在页面跳转前保存session(“username”)和session(“userid”)的值等用户的相关信息,方便系统其它功能随时取用。
图2.5 留言板流程图
Fig.2.5 Message Board Flow Chart
说明:留言板模块,从数据表中查询出数据,并分页列表显示。在循环输出每条留言的时候,判断该条记录的回复项是否为空,如果不为空,则显示出管理员回复。在留言功能,判断非登录用户无法留言,判断方法为检测session(“username”)是否为空,如果为空,则表示用户没有登录,给出提示,终止程序运行。在客户端同时检测留言内容是否为空,否则无法提交数据。如果用户正常登录,输入留言,向服务区提交数据,在留言表中,保存留言信息外,还保存用户ID值,标识此留言为该用户。
图2.6 新闻评论流程图
Fig.2.6 Comment Flow Chart
说明:新闻评论模块。该模块功能内容与留言板相似,区别在于,评论模块在客户端就可以检测用户是否登录。在评论出放一个隐藏域,其值为session(“username”),当用户正常登录,访问此页面时,该隐藏域的值就保存了用户的登录名。在提交表单时,客户端检测该隐藏域是否为空,为空,则表示没有登录;不为空,则表示用户已登录,提交数据,想数据表插入评论内容以及用户ID。
图2.7 申请表状态流程图
Fig.2.7 Application Table Status Flow Chart
说明:此模块分类三个阶段。(1)新注册用户,在数据库的申请表,没有数据信息,此时查看申请表状态时,显示,你还未申请表格。(2)用户提交表格申请,此时在数据表中就有此用户的表格数据,申请表状态改变为管理员审核状态,用户可以更新表格并提交,管理员查看后,如果拒绝审核通过,则可以反馈拒绝信息,用户在会员中心可以查看详细,并且更新表格信息,直到信息审核通过为止。(3)表格审核通过,生成对应用户的word表格下载地址,用户可以根据这个地址下载表格,并且填写信息,然后上传至服务器,提交给管理员,管理员可以在后台查看并且下载表格。
图2.8 搜索流程图
Fig.2.8 Search Flow Chart
说明:搜索模块分为多条件搜索,查询关键字的同事,可以按照不通新闻类别进行搜索。当选择全部新闻时,SQL查询语句为全查询,其他按相关条件进行classid的匹配。系统以列表的形式展现新闻信息
图2.9 前台风景相册流程图
Fig.2.9 Album Flow Chart
说明:相册模块分为相册类目和子图片。相册和图片都为同一个数据表,标识其区别为PID的值为0时,代表相册,其他值时为PID等于0的ID号。首先从数据表中查询PID=0的记录,即相册,通过相册传递其ID参数,然后通过此ID查询PID=ID的数据,即为该相册下的图片数据。
图2.10 密码修改流程图
Fig.2.10 Password modify Flow Chart
说明:与传统的密码修改方式一样,通过旧密码匹配,两次输入新密码,进行密码修改。首页,在客户端检测是否输入了旧密码,以及两次输入的新密码是否一致。然后,查询旧密码是否正确,匹配的条件为where admin_name=session(“admin”),即管理员登陆时保存的session变量。匹配正确,则进行密码的更新。
图2.11 留言管理流程图
Fig.2.11 Message Manage Flow Chart
说明:后台管理留言中,首页列表显示所有留言,并且标识是否回复以及是否审核。进入详细留言页面,管理员可以在此页面进行留言回复和审核操作。如果管理员输入了回复内容,则该条记录被认定为已回复,输入内容为空,则代表未回复。
图2.12 用户管理流程图
Fig.2.12 User Manage Flow Chart
说明:用户管理直接与用户申请表相联系。新注册用户,尤其没有对表格提出申请,所以显示未申请表格,对申请表格的用户,可以查看表格并且进行审核。管理员可以查看申请表的所有信息,如果拒绝通过审核,那么要标注拒绝的理由,方便用户修改不恰当的内容。用户在前端就可以查看并修改。如果执行审核通过操作,那么,系统按该用户身份自动生成一个URL地址,即为WORD表格的下载地址,会员在前端就可以按此地址下载表格。如果用户提交了WORD表格,管理员在后台可以查看,并且下载表格。
图2.13 友情链接管理流程图
Fig.2.13 Links Manage Flow Chart
说明:友情链接分为文字链接和图片链接。在后台添加的友情链接不需要审核,而前台用户申请的友情链接需要审核。文字链接不包含图片上传,所以采用JS判断选择的文字链接还是图片,则自动隐藏图片上传。
图2.14 新闻内容管理流程图
Fig.2.14 News Flow Chart
说明:后台新闻管理,对新闻进行添加,采用ewebeditor编辑器,可以自由上传图片,对内容尽心自由排版。新闻列表可以分类查看新闻,并对新闻进行删除,批量删除,置顶以及修改新闻。置顶操作就是将新闻的更新时间设为最新。修改新闻可以更改其任何内容,包括分类信息。
针对会员登录进行系统模型分析,操作行为起始,是普通用户访问系统首页,如果不是系统会员,则需要注册会员,输入用户基本信息。注册完系统,可以查看系统内的新闻信息,可以搜索新闻信息,图片浏览以及,直接进行申请表格功能,如果是会员登录到系统中,可以在系统中的留言板进行留言,也可以浏览系统的新闻,并可以对新闻发表评论并且可以查看其他人对新闻的评论,会员进行操作这些功能之后,退出系统,操作结束功能如图2.15所示
0
图2.15 行为模型分析图
Fig.2.15 Behavior Model Analysis Chart
通过网络结构分析,系统的主要的功能包括注册登录功能、新闻列表功能、相册功能、留言板功能、以及后台管理功能,其中后台管理功能包括基本管理功能、用户管理功能、留言管理功能、评论管理功能、相册管理功能、新闻管理功能、友情连接管理功能、数据备份功能,注册功能主要包括,会员中心功能,用户通过登录后,可以修改的自己的个人信息,系统并实时保存,并可以填写赴台申请表,提交给系统管理,系统管理员,会员可以随时查看申请状态信息。给用户使用的功能为了简化操作,系统独立组注册系统用户,系统使用系统自带的登录功能,查看系统新闻并可以对新闻内容进行评论和查看其他人对新闻的评论看法,以及查看相册功能,以上是普通用户操作功能。系统管理员通过主要对系统的内部基本信息进行管理,主要包括对系统会员进行管理,按照新闻类别发布新闻信息,可以回复系统会员对新闻的信息,对系统内的相册图片信息进行管理,会员可以在系统使用过程中,可以进行留言和查看其他留言功能。管理员也通过通过友情链接功能和其他网站进行友情链接交换,方便用户访问。系统还提供数据备份功能,通过备份功能,备份系统内同内的access数据库信息,以防系统被黑客攻击等防范措施。管理员对以上网站基本信息维护以达到维护系统正常运行的作用,主要对系统用户的管理功能如图2.16所示。
图2.16 网络结构分析图
Fig.2.16 Network Structure Analysis Chart
产品安全性对每个项目来说都是至关重要的,安全性直接影响到产品的自身价值和商业价值,所以,产品的安全性分析是整个软件工程中极其重要的环节。本课题参考传统的安全技术防范措施,结合直接所学的只是,对本课题的安全性进行如下分析:
1.数据库是整个网站的核心,是最重要的一个环节,防止数据库被破坏是网站安全性中最重要的任务。首先要防止数据库被下载,这个环节是必须的,数据库包含了网站的所有,所以,我们需要数据库后缀名进行更改,不能用.MDB,需要改成.ASP,其次,数据库文件也需要更改为特殊名字,比如特殊符号的组合,中间加上”#”,这样就能有效得防止数据库被下载,从而维护了网站的关键。
2.防止非法用户通过SQL注入行为获取数据库信息,这也是必须防止的。传统的SQL注入有GET和POST两种方式,其实还有一种COOKIES注入方式。过滤一些非法SQL关键字,比如“select , insert , delete…”等能够有效的防止非法用户进行SQL注入,从来保护数据信息部被泄露。
3.后台系统是网站对网站数据库操作,非法进入网站后台,就好比非法用户得到了数据库,可以进行任意操作,所以,防止非法用户进入网站后台是极为重要的。首先防止暴力破解获取登录密码,所以后台登录加上验证码能够有效防止暴力破解。其次,在后台每个页面中加入权限检查,不允许用户直接在地址栏输入后台管理页面进入,一但发现是外部链接立刻返回登录页。在后检测管理员登录的session变量值是否为空,为空则表示未登录系统,立刻跳转到登录页。
4.MD5密码加密,这几乎是所有网站都采用的密码加密方式,最直接,最有效得防止黑客获取数据库信息后,得到的会员密码不是真正的密码,而且加密后的字符串,有效率的保存了网站用户的利益。
5.数据备份。由于系统因素以及人为因素,不可预测会发生系统崩溃,黑客攻击,挂马等…所以定期备份数据库,能够避免在意外发生后减少损失。
快捷、真实、共享,这就是本课题的设计原则。我们的目的在于为即将赴台的用户提供一个完善、专业的信息交流平台,让用户能够在我们的平台上获取他们想要的信息,第一时间能够了解当地的最新动态,帮助用户策划赴台行程及注意事项。除此之外,我们还帮助用户进行赴台申请,用户可以在线提交申请单,由我们代为申请赴台,最大话的方便了客户,体现出我们平台真正的意义所在。用户通过注册成为系统会员,然后提交赴台申请给系统管理员,系统管理员处理申请,然后会员可以查看申请提交后的审批状态。如图:
系统从用户使用的角度来区分为两部分,一部分是普通用户使用功能,包括新闻列表功能,会员中心功能,留言板功能,网站相册功能。这部分功能主要是针对普通用户浏览所需要的新闻信息,达到基本在线功能交互的功能。而另一部分的是管理员用户使用的功能,主要功能包括新闻管理功能、用户管理功能、留言管理功能、相册管理功能、相册管理功能、数据备份功能,等对系统内数据维护的基本功能对系统保障运行的功能,这些功能是为了管理员能够保证系统正常运行的基本功能,对系统数据进行有效的管理,确保网站能够正常运行,方便系统管理员对系统进行管理,也方便用户方便的提交赴台申请,充分利用的意义所在。
图3.1 体系结构分析图
Fig.3.1 Architecture Structure Analysis Chart
系统的主要的功能结构包括两部分,即系统前台应用和系统后台管理。系统前台应用包括会员注册、会员登录、新闻列表、新闻搜索、会员中心、留言板、填写申请表、查看申请表的提交的审核状态、网站相册等主要功能,用户通过这些功能进行网站信息浏览,以及进行赴台申请的审核状态的查看。系统后台管理主要功能包括用户管理、留言管理、公告管理、评论管理、相册管理、文章管理、数据管理,系统过管理员通过这些功能对信息进行维护,使网站能够正常的运行。
图3.2 功能结构分析图
Fig.3.2 Function Structure Analysis Chart
数据库设计直接引导程序的开发流程。良好的数据库设计能够减少程序设计工作量,最大化提高工作效率,以下我本课题的数据库设计信息。
这一设计阶段是在需求分析的基础上,分析各数据存储之间的关系,然后得出系统的关系模式。本系统采用实体-联系图(简称E-R图)来描述系统的概念模型。E-R图由实体、属性、联系三部分组成,其符号如图:
本系统主要规划的主要信息实体有用户信息实体、申请表信息实体、评论信息实体、留言信息实体、新闻信息实体、以及新闻类型信息实体,数据库的整体ER模型如下图:
图3.3 数据库整体ER模型图
Fig.3.3 Database ER Model Chart
图3.4 分类表、新闻表、评论表关系图
Fig.3.4 the relationship of class table,news table and comment table
图3.5 用户表与申请表关系图
Fig.3.5 the relationship between user table and application table
图3.6 用户表与留言表关系图
Fig.3.6 the relationship between user table and message table
表3.1 admin 管理员表的数据结构
Tab3.1 administrator table
字段名称 | 数据类型 | 说 明 |
id | 自动编号(int) | 自动编号 |
admin | 文本 | 管理员帐号 |
password | 文本 | 管理员密码 |
表3.2 class 新闻类别表的数据结构
Tab3.2 News Class table
字段名称 | 数据类型 | 说 明 |
ClassId | 数字 | 类别编号 |
ClassName | 文本 | 类别名称 |
表3.3 Feedback 留言表的数据结构
Tab3.3 Message table
字段名称 | 数据类型 | 说 明 |
id | 自动编号(int) | 自动编号 |
UserName | 文本 | 留言用户 |
UserMail | 文本 | 留言邮箱 |
Comments | 备注 | 留言内容 |
Postdata | 日期/时间 | 留言时间 |
Replay | 备注 | 回复内容 |
ReplayDate | 日期/时间 | 回复时间 |
Online | 文本 | 是否显示:1显示,0隐藏 |
IP | 文本 | 留言者IP地址 |
表3.4 gonggao 公告表的数据结构
Tab3.5 notice table
字段名称 | 数据类型 | 说 明 |
D_id | 自动编号 | 主键 |
title | 文本 | 公告标题 |
D_bz | 备注 | 公告内容 |
D_date | 日期/时间 | 默认系统时间now() |
Click_num | 数字 | 浏览量 |
表3.5 News 新闻表的数据结构
Tab3.5 News table
字段名称 | 数据类型 | 说 明 |
id | 自动编号(int) | 自动编号 |
Title | 文本 | 新闻标题 |
Content | 备注 | 新闻内容 |
Classid | 数字 | 新闻类别 |
oColor | 文本 | 标题颜色 |
picUrl | 文本 | 新闻图片地址 |
Come | 文本 | 新闻来源 |
Addtime | 日期/时间 | 添加时间 |
updatetime | 日期/时间 | 更新时间 |
Hits | 数字 | 点击量 |
表3.6 Pic 相册表的数据结构
Tab3.6 album table
字段名称 | 数据类型 | 说 明 |
id | 自动编号 | 主键 |
Pic | 文本 | 图片地址 |
Title | 文本 | 标题 |
content | 备注 | 描述 |
pid | 数字 | 0为相册,其他为相册ID号 |
addtime | 日期/时间 | 添加时间 |
表3.7 评论表的数据结构
Tab3.7 comments table
字段名称 | 数据类型 | 说 明 |
pinglunid | 自动编号 | 主键 |
Id | 数字 | 新闻ID |
Pinglunname | 文本 | 评论用户 |
Pinglundate | 日期/时间 | 评论时间 |
pingluncontent | 备注 | 评论内容 |
表3.8 sogo_link 友情链接表的数据结构
Tab3.8 links table
字段名称 | 数据类型 | 说 明 |
id | 自动编号(int) | 自动编号 |
sogo_link_url | 备注 | 链接地址URL |
sogo_link_font | 备注 | 链接文字 |
sogo_link_login | 备注 | LOGO链接地址 |
sogo_link_alt | 备注 | ALT文字提示 |
sogo_link_logo_or_txt | 数字 | 文字连接或图片链接 |
sogo_link_yes_no | 数字 | 是否审核通过 |
link_paixu | 数字 | 排序编号 |
表3.9 Stable 申请表的数据结构
Tab3.9 Application Table
字段名称 | 数据类型 | 说 明 |
id | 自动编号(int) | 自动编号 |
userid | 数字 | 用户ID |
username | 文本 | 用户姓名 |
sex | 数字 | 性别,1为男,2为女 |
sr | 文本 | 生日 |
height | 文本 | 身高 |
jg | 文本 | 籍贯 |
pic | 文本 | 头像 |
mz | 文本 | 民族 |
zz | 文本 | 政治面貌 |
school | 文本 | 毕业学校 |
xueli | 文本 | 学历 |
work | 文本 | 工作 |
job | 文本 | 职位 |
phone | 文本 | 联系电话 |
| 文本 | 邮箱 |
yb | 文本 | 邮编 |
address | 文本 | 地址 |
jianjie | 备注 | 个人简介 |
bljl | 备注 | 不良记录 |
ftll | 备注 | 赴台理由 |
liyou | 备注 | 申请理由 |
beizhu | 备注 | 备注 |
updatetime | 日期/时间 | 更新时间 |
S_tatu | 数字 | 状态 |
S_why | 备注 | 拒绝理由 |
filepath | 备注 | 文件地址 |
表3.10 User 用户表的数据结构
Tab3.10 users table
字段名称 | 数据类型 | 说 明 |
id | 自动编号 | 主键 |
UserName | 文本 | 用户名 |
Password1 | 文本 | 用户密码 |
Realname | 文本 | 真实姓名 |
sex | 数字 | 性别 |
| 文本 | 邮箱 |
jieshao | 备注 | 个人介绍 |
表3.11 webBasicInfo 网站基本信息表的数据结构
Tab3.11 website information table
字段名称 | 数据类型 | 说 明 |
id | 自动编号 | 主键 |
Sitename | 文本 | 网站名称 |
Keywords | 文本 | 关键字 |
LOGO | 文本 | 网站LOGO地址 |
| 文本 | 联系QQ |
Skype | 文本 | 在线skype |
msn | 文本 | MSN联系 |
Ad1 | 文本 | 顶部广告 |
Ad2 | 文本 | 中部左侧广告 |
Ad3 | 文本 | 中部右侧广告 |
about | 备注 | 关于我们介绍 |
Dreamweaver的可视化编辑环境能够很直观的帮助我们进行页面布局设置,设计出漂亮的界面来。首页,在Photoshop里面设计出效果,然后在PS里面进行相应的切片操作,将文件和图片都保存到本地,在dreamweaver中,去掉填充部分,最后进行程序编写,输出数据。考虑到网站的性质和规模,本站大多采用table方式布局,在兼容性有足够的优势。首页效果图如下所示。
图3.7页面显示图(Fig3.7 Page Show )
首页布局采用服务器端文件包括的方式进行网站的统计风格,顶部top.asp和顶部foot.asp包含在前台的每个页面中,这样统一了网站的风格。
后台布局采用框架集,即左侧导航不刷新,右侧框架内显示操作内容,代码如下:
<frameset rows="94,*" cols="*" framespacing="0" frameborder="NO" border="0">
<frame src="admin_top.asp" name="top" scrolling="NO" noresize>
<frameset rows="*" cols="198,*" framespacing="0" frameborder="NO" border="0">
<frame src="admin_left.asp" name="left" noresize>
<frame src="admin_main.asp" name="main" noresize>
</frameset>
</frameset>
函数的编写设计在程序开发中直接影响到开发的效率和周期,优秀的函数设计可以大幅度减少代码量和工作量,提高工作效率。因为,程序设计尽量使用函数模块进行调用操作,同一个函数,通过不同的参数传递,可以实现许多类似的功能,很大程度上降低了代码的重用,优化了程序,使用程序更专业,运行效率更高!
分析本课题,发现运行模块化函数的地方比较广。前台新闻列表较多,可以用写一个过程函数,通过传递不通的新闻分类ID值,可以输出不通类别的新闻;前台多处用到分页,也可以将分页功能模块化,直接调用…..类似的地方很广,经过总结,分析出以下重要的过程函数。
- 新闻列表显示模块
'过程名:show
'作 用:以列表方式显示指定条数的新闻
'参 数:table ----表名
' url ----链接URL地址
' num ----查询记录条数
' conclution ----查询条件,不包含where
' by ---排序列
' h ----输出行高
’ leftnum -----截取字符个数
‘说明:此模块用户首页各个部分的新闻列表显示,通过传递不通的conclution值来查询不通的记录。本站所有的新闻都放在同一个表,唯一的分类标识为classid,通过传递不通的classid值,获得不同分类的数据信息。
sub show(table,url,num,conclution,by,h,leftnum)
if trim(num)="*" then
sql="select * from"
else
sql="select top "&num&" * from "
end if
sql=sql&table
if conclution<>"" then
sql=sql&" where "&conclution
end if
sql=sql&" order by "&by&" desc"
rs.open sql,conn,1,1
if rs.bof and rs.eof then
response.Write("暂无内容...")
else
if rs.recordcount>num then
num=num
else
num=rs.recordcount
end if
response.Write("<table width='100%' border='0' cellspacing='0' cellpadding='0'>")
for i=1 to num
response.Write("<tr height="&h&">")
response.Write("<td width='83%' align=left>")
response.Write(" <font style='color:#4B4B4B;'>·</font><a href='"&url&"?ID="&rs("ID")&"' target='_blank' title='"&rs("Title")&"'>"&newleft(rs("Title"),leftnum)&"</a>")
response.Write("</td>")
response.Write("<td align=left> <font style='color:#FF0000;'>["&month(rs("updatetime"))&"-"&day(rs("updatetime"))&"]</td>")
response.Write("</tr>")
rs.movenext
next
response.Write("</table>")
end if
rs.close
end sub
- 分页模块
'过程名:showpage
'作 用:显示“上一页 下一页”等信息
'参 数:sfilename ----链接地址
' totalnumber ----总数量
' maxperpage ----每页数量
' ShowTotal ----是否显示总数量
' ShowAllPages ---是否用下拉列表显示所有页面以供跳转
' strUnit ----计数单位
'***********************************************
Sub ShowPage(sfilename,totalnumber,maxperpage,ShowTotal,ShowAllPages,strUnit)
Dim n, i,strTemp,strUrl
If totalnumber mod maxperpage=0 Then
n= totalnumber \ maxperpage
Else
n= totalnumber \ maxperpage+1
End If
strTemp= "<div align=center><br/>"
If ShowTotal=True Then
strTemp=strTemp&"共 <b>"&totalnumber&"</b> "&strUnit&" "
End If
strUrl=JoinChar(sfilename)
If CurrentPage<2 Then
strTemp=strTemp&"首页 上一页 "
Else
strTemp=strTemp&"<a href='"&strUrl&"page=1'>首页</a> "
strTemp=strTemp&"<a href='"&strUrl&"page="&(CurrentPage-1)&"'>上一页</a> "
End If
If n-currentpage<1 Then
strTemp=strTemp&"下一页 尾页"
Else
strTemp=strTemp&"<a href='"&strUrl&"page="&(CurrentPage+1)&"'>下一页</a> "
strTemp=strTemp&"<a href='"&strUrl&"page="&n&"'>尾页</a>"
End If
strTemp=strTemp&" 页次:<b><font color=red>"&CurrentPage&"</font>/"&n&"</b>页 "
strTemp=strTemp&" <b>"&maxperpage&"</b>"&strUnit&"/页"
If ShowAllPages=True Then
strTemp=strTemp&" 转到:<select name='page' size='1' οnchange=""javascript:window.location='"&strUrl&"page="&"'+this.options[this.selectedIndex].value;"">"
For i = 1 to n
strTemp=strTemp&"<option value='"&i&"'"
If CInt(CurrentPage)=CInt(i) Then strTemp=strTemp&" selected "
strTemp=strTemp&">第"&i&"页</option>"
Next
strTemp=strTemp&"</select>"
End If
strTemp=strTemp&"</div>"
Response.Write strTemp
End Sub
- 截取字符串方法函数
'过程名:newleft
'作 用:截取指定字符串的指定前N个字符
'参 数:txt ----截取的字符串
' length r ----截取数量
Function newleft(txt,length)
txt=trim(txt)
x = len(txt)
y = 0
if x >= 1 then
for ii = 1 to x
if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then
y = y + 2
else
y = y + 1
end if
if y >= length then
txt = left(trim(txt),ii-2)&"..."
exit for
end if
next
newleft = txt
else
newleft = ""
end if
End Function
- 去处字符串中的HTML代码
‘参数 str : 过滤字符串
Function NoHtml(str)
Dim regEx
Set regEx=New RegExp
regEx.IgnoreCase=false
regEx.Global=True
regEx.Pattern="<script((.|\n)*?)</script>"
str=regEx.Replace(str,"")
regEx.Pattern="<(.|\n)+?>"
str=regEx.Replace(str," ")
str=" "&str
str=Replace(str," "," ")
regEx.Pattern="^( | |){2,}"
str=regEx.Replace(str," ")
Set regEx=Nothing
NoHtml=str
End Function
图4.1 用户登录
Fig.4.1 User Login
图4.2 用户登陆
Fig.4.2 User Login
登录功能的原理是从会员表中查询匹配输入记录中的值,比如username值为 yy,密码为123123,那么SQL语句就应该是select查询,最后判断查询的结果是否为空,不为空,则匹配该条记录,保存session,在session中记录用户基本信息,包括登录人的用户名及用户的基本信息记录在session中, 用户登录时候,系统会通过记录的session信息时刻取出,包括变量username,userid,useremail 如果登录成功,直接进入用户操作界面。关键代码如下:
if Request("act")="login" then
if request("username")="" or request("password")="" then
response.Redirect(request.ServerVariables("HTTP_REFERER"))
else
sql="select * from [user] where username='"&request("username")&"' and password1='"&request("password")&"'"
rs.open sql,conn,1,1
num=rs.recordcount
if num=0 then
response.write "<script LANGUAGE='javascript'>alert('对不起,你输入的用户名或密码错误!');history.go(-1);</script>"
else
session("username")=rs("username")
session("userid")=rs("id")
session("usermail")=rs("email")
response.Redirect(request.ServerVariables("HTTP_REFERER"))
end if
rs.close
end if
end if
注册的功能是让系统使用者,能自动申请账户信息,达到账户自主申请,系统记录入使用者信息,系统先在注册前,系统提交过程中,先对用户名进行判断,首先初ado对象,以新做注册的用户名做为参数,查询数据库中是否有值,如果查询记录rs.recordcount大于0,则系统不让用户注册用户信息。用户正常注册用户信息。
图4.3 用户注册
Fig.4.3 Register
系统为为普通用户注册会员功能,包括输入用户名,密码,性别等,关键代码如下:
if rs.recordcount>0 then
response.Write "<script LANGUAGE='javascript'>alert('改用户名已被占用!');location.go(-1);</script>"
else
sql = "insert into [User](username,password1,realname,sex,email) values('"&request("username")&"','"&request("psw")&"','"&request("realname")&"','"&request("sex")&"','"&request("email")&"')"
response.Write(sql)
conn.execute sql
response.Write "<script LANGUAGE='javascript'>alert('恭喜你注册成功!');window.close();</script>"
end if
系统使用者对系统内的已经有的新闻信息进行查询,查询的条件包括两个,一个是新闻标题,另一个是新闻的分类,在代码处理的上,主要是页面的提交的过程中,系统通过request获得,新闻标题的内容和新闻类别,系统根据用户填写的信息,进行判断,如果用户填写信息,则拼接sql语句的查询条件,否则拼接相应的数据库的字段,形成sql语句中的where条件。
图4.4 新闻搜索
Fig.4.4 news search
新闻搜索匹配两个条件,关键字相似及新闻类别匹配。从列表菜单获取的值为新闻类别classid值,不通的classid,代表不通的新闻。关键代码如下:
if request("tb")=0 then
sql="select * from news where title like '%"&request("keywords")&"%'" strFileName="NewsList.asp?style=search&keywords="&request("keywords")&"&tb="&request("tb")
else
sql="select * from news where classid="&request("tb")&" and title like '%"&request("keywords")&"%'"
strFileName="NewsList.asp?style=search&keywords="&request("keywords")&"&tb="&request("tb")
end if
执行上面获取的SQL语句,就可以查询到相关记录
用户留言功能实现
用户在系统使用中,可以在系统进行留言,系统回复,系统以信息的标题为主键,然后以留言的内容,进行标题进行回复,系统,主要以添加的系统的以留言的主键,隐藏,提交以request 形式获得留言的标题的主键,系统提交到系统,系统以列表的时候展现已经回复的留言,
图4.5 留言
Fig.4.5 Message
其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者