基于mysql的bbs设计(三)

4。用户模块设计
  对于底层数据库,调用mysql的C API函数来进行数据库的修改,内部保存
一定的状态变量(例如用户名,还是留给上一层完成?),对上一层,则提供
用户管理的接口。
  Class UserManage {
  private:
    char  myuserid[20]; // 用户的id,未登陆前为空
    time  logintime; // 用户登陆时间,并用于计算停留时间
    char  loginhost[20]; //上站地点。

public:
    int NewUser( char *userid, char *passwd );
      新建一个用户,判断是否已经有,其他资料暂时为空,
      firstlogintime,权限等设缺省值。
    int UserLogin( char *userid, char *passwd );
      用户登陆,验证密码,
    int ChangePasswd( char *oldpasswd, char *newpasswd );
      修改密码,要求原密码一致。
    int ChangePriData( char *newname, char *newemail,
              char *newaddr );
      改变基本数据,泥称,email,住址。。。。
    int ModifyNumData( int addlogin, int addpost );
      修改文章数,上站次数,等数据。。。。注意调用对象。
    int UserLogout();
      用户退出,修改lastlogin,staytime,loginhost等

// 普通查询命令
    int QueryCommonData( const char * userid, int& loginnum,
            char * username, int& postnum,
            time& lastlogin, char *lasthost );
      查询网友基本信息。

// 特权指令,函数在完成功能前,先判断权限。
    int QueryPriData( const char * userid, char *email,
              char *addr );
      查询基本信息,普通人只能查自己,有特权才能查其他人。
    int ModifyUserLevel( BOOL isAdd, unsigned long level );
      修改用户的权限,
    int ModifyUserId( char *oldid, char *newid );
              char *newemail, char *newaddr );
      修改用户的基本数据。
    int ModifyUserNumdata( char *userid, int addlogin, int addpost );
      修改用户的文章数等数据。
    int ModifyUserPasswd( char *userid, char *newpasswd );
      修改用户的密码。
  }
    以上各个函数难度不大,都是执行相应的sql语句,访问mysql数据库,
  是否将一般指令归到特权指令中去呢?权限的检查,是放在这一层还是上一层?
  这更多的是看考虑的着重点,是看程序的清晰性还是代码的简练,可能还是
  看代码吧,毕竟要考虑访问量,另外,上层服务层是否也应该考虑权限检查
  问题呢?

(0)

相关推荐

  • 基于mysql的bbs设计(三)

    4.用户模块设计   对于底层数据库,调用mysql的C API函数来进行数据库的修改,内部保存 一定的状态变量(例如用户名,还是留给上一层完成?),对上一层,则提供 用户管理的接口.   Class UserManage {   private:     char  myuserid[20]; // 用户的id,未登陆前为空     time  logintime; // 用户登陆时间,并用于计算停留时间     char  loginhost[20]; //上站地点. public:    

  • 基于mysql的bbs设计(一)

    1.系统架构:   采用模块化思想,分为3层:   a.数据存储层:使用mysql来存放bbs的所有数据,包括用户信息,     文章数据,用户信件,用户消息,系统数据(?),关键问题:     数据库的规划,是否用文件来辅助.   b.系统功能层:完成bbs的基本功能,由多个并列模块组成,向下     调用mysql的函数访问数据库,向上,接受处理请求,将处理的     结果返回上层,根据请求类型,返回成败结果和其他数据.而且     模块高度灵活,可以方便的修改增加.包括:     ** 用

  • 基于mysql的bbs设计(二)

    3.数据库设计   关键还是mysql的效率问题,合理分配mysql的内存,特别是table cache的 大小.另外,当系统突然掉电呢?mysql是否robust?   table的名字设计,采用一位前缀表明类型,全部用小写表示(?),例如: 系统的数据库,以s为前导,如用户表:suser(sUSER 呢?),具体如下:   s :系统表,suser,sclass   m :用户信件表,msysop,mdrangon   w :用户消息表,wsysop,wdrangon   a :版面索引表,

  • 基于mysql的bbs设计(四)

    5.版面模块设计   所谓分类,更多的是为telnet服务端考虑的,在cq66模式下,用户可以按 照自己的意愿进行分类,反正最后都是直接以版为基本单位访问的.   对于版面文章的访问,存放的时候以整篇文章为参数,文章的分块由本层 完成,如果上层以块为单位传送,则在上层全部传完,组合后,再传参到本层 分解:在读取 的时候,本层则以块为单位访问,如果上层要以全文为单位访问 ,则在上层做合并 工作,本层不管.   至于要不要独立出索引,不影响上层的操作,主要和下层的数据库构造有 关, 主要考虑可行性,

  • 基于mysql的bbs设计(五)

    6.bbsd和cq66服务器端改造   bbsd中,关于用户的模块应该比较好改,只要将写.PASSWD文件的操作换为 操作数据库的UserManage类的成员函数即可,但可能要先判断什么数据更改, 要调用哪个函数.并发操作的一致性,则由数据库的加锁功能保证,mysql应该 支持这种的锁吧.文章方面可能比较麻烦,也是将原来对文件的操作转换成操作 数据库的BoardManage类的成员函数即可.   cq66模式应该比较好改动,可能就是原来取文章的协议要变化一下.取文章 标题的时候,同时也将文章的长

  • MySQL系列数据库设计三范式教程示例

    目录 一.数据库设计三范式相关知识说明 1.什么是设计范式? 2.为什么要学习数据库的三个范式? 3.三范式都有哪些? 二.数据库表的经典设计方案 一对一怎么设计? 一.数据库设计三范式相关知识说明 1.什么是设计范式? 设计表的依据,按照这三个范式设计出来的表,不会出现数据的冗余. 2.为什么要学习数据库的三个范式? 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反

  • MySQL 可扩展设计的基本原则

    前言 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求? 只有一个办法,那就是通过改造系统的架构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力的系统,也就是说,我们必须进行可扩展设计. 一.什么是可扩展性 在讨论可扩展性之前,可能很多朋有会问:常听人说起某某网站某某系统在可扩展性方面设计的如何如何好,架构如何如何出色,到底什么是扩展?怎样算是可扩展?什么又是可扩展性呢?其实也就是大家常听到的 S

  • 一条sql详解MYSQL的架构设计详情

    目录 1 前言 2 应用层 2.1 连接线程处理 3 服务层 3.1 SQL 接口 3.2 SQL解析器 3.3 SQL优化器 3.4 执行器 3.5 查询缓存 4 存储引擎层 4.1 概述 4.2 缓冲池(buffer pool) 4.2.1 数据页.缓存页和脏页 4.2.2 元数据 4.2.3 free链表 4.2.4 flush链表 4.2.5 LRU链表 4.2.6 小结 4.3 undo log 4.4 redo log 5 总结 1 前言 对于一个服务端开发来说 MYSQL 可能是他

  • 浅谈mysql的索引设计原则以及常见索引的区别

    索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引. 那么索引设计原则又是怎样的? 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录. 例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息. 如果使用姓名的话,可能存在同名现象,从而降低查询速度. 2.为经常需要排序.分组和联合操

  • 基于Bootstrap的网页设计实例

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content=&qu

随机推荐