菜单

基于mysql的bbs设计(四)

2019年7月31日 - Php

5。版面模块设计
  所谓分类,更加多的是为telnet服务端考虑的,在cq66形式下,用户能够按
照自个儿的愿望实行分拣,反正最后都以直接以版为着力单位拜见的。
  对于版面小说的访谈,存放的时候以整篇小说为参数,文章的分块由本层
姣好,假诺上层以块为单位传送,则在上层全部传完,组合后,再传参到本层
释疑;在读取 的时候,本层则以块为单位寻访,假诺上层要以全文为单位拜见
,则在上层做联合 专业,本层不管。
  至于要不要独自出索引,不影响上层的操作,首要和下层的数据库构造有
关, 首要驰念方向,效用必要等。
  权限的检查放在哪儿进行呢?依然放在上层吧,其实就telnet服务器端,
和cq66 的客户端,根本不会给一般用户显示特殊指令的菜系,当然,用户可
以直接发送cq66 的下令,服务器方依旧要检查的。但应该不要在它上面的功
能模块层再自己钻探二次啊
。   Class BoardManage {
  private:

6。bbsd和cq66劳务器端退换
  bbsd中,关于用户的模块应该相比好改,只要将写.PASSWD文件的操作换为
操作数据库的UserManage类的成员函数就可以,但或者要先剖断哪些数据变动,
要调用哪个函数。并发操作的一致性,则由数据库的加锁功用有限援救,mysql应该
协助这种的锁吧。文章方面可能比较费劲,也是将原本对文本的操作转变来操作
数据库的BoardManage类的分子函数就可以。
  cq66情势应该比较好改变,或者正是原本取小说的合计要转换一下。取文章
题指标时候,同期也将作品的尺寸发送过去,然后客户端能够依靠显示区的大大小小,
日渐央浼小说的始末,央浼小说的时候要提交供给的范围。
  关于系统模块层,恐怕做成so的格局会不会较好,(so是否一定于dll,
容不轻巧做的,有没有不可缺少?),同期系统模块层应不该保存一些有的数据吧?
要么做成公用函数同样的接口呢?回想UserManage类,恐怕没须求区分特权指令,
享有操作都要提供操作对象的id,而权力检查交到下面的劳务层来达成?

  public:
    // 有关分类的操作
    int GetClassNameInfo( int maxclass, char **classid,
              char ** classname );
      重回分类的音信,中土耳其共和国(The Republic of Turkey)语名。
    int GetBoardName( int maxboards, char *classid,
              char **boardname );
      重临某分类中的版面新闻,一般分类,直接select ..
      from sboard
      where boardclass == …. 特殊分类则查相应的表。。。。

7。初始测验安排
  要测验,等先要把东西做出来,要做东西,先要有别的东西。。。。。
  首先将167类别装好,配好mysql,然后学学mysql的 C API 接着建好表,
  要做那个计划,先要将短学期的5000行代码写完,然后是复习考研,复习之余将编译器作业作好,再不时间还要未有mm来找笔者,就足以起来做了。。。。。

    // 修改必要版面助理馆员以上的特权
    int NewClass( char * newclassname, int type );
      新建分类,普通分类依然特别分类,
    int DeleteClass( char *newclassname );
      删除分类,但不cascade,即本层不担当一致性,由上层担任将
      相应的版面包车型客车归类音讯改为别的。分类改名也是先删再建,
    int AddClassBoard( const char *classname, char *newboardname );
      将已建好的版步入某分类中,特地针对特种分类,对一般分类,其
      效果和modifyboardinfo一样,
    int DeleteClassBoard( const char *classname, char *boardname );
      从分类中去除有个别版,也是本着特殊分类,对一般分类,效果也
      是和modifyboardinfo同样,三个版的分类属性可以为空,即不属
      于其余分类。

    // 有关版的新闻的操作。
    int NewBoard( const char *boardid,char *boardname);
      新建贰个版,创设相应的表。别的参数取私下认可值。
    int DeleteBoard( const char *boardid );
      删除一个版,删除相应的表。
    int GetBoardInfo( const char *boardid, char *boardname,
            int& numposts, char *masters, char *class,
            long &level );
      取的版面的音讯。
    int ModifyBoardId( const char *oldid, char *newid );
      改造版的英语id,对应table的称号也要改造,
    int ModifyBoardInfo( const char *boardid, char *boardname,
            int numposts, char *masters, char *class,
            long level );
      修改版面音讯,供给特权。

    // 有关版面作品的操作。
    int AddText( char *boardid, char *title, char *writer,
            char *text );
      往版面中加进小说,内部将长小说分割成2k的块。
    int DeleteText( char *boardid, int num );
      删除作品,只是做叁个符号,并比不上时修改对应的table。
    int FlushTable( char *boardid );
      刷新版面,删除被删小说的相应的笔录。
    int MarkText( char *boardid, int num, char mark );
      给文章做标志。
    int ModifyTitle( char *boardid, int num, char *newtitle );
      修改小说的标题。
    int ModifyText( char *boardid, int num, char *newtext );
      修改作品内容,不是本身的稿子须要特权。
    int GetTextInfo( const char *boardid, int num, char *title,
            char *writer, char& mark );
      获得小说的标题消息。
    int GetText( const char *boardid, int num, int block,
            char *text );
      读取文章的剧情,以块为单位。

    // 小说和笔者的查询
    // 三遍将查询的结果一切回去?
    int QueryWriter( const char *boardid, char *writer,
            char **result );
      查询版面上,某小编的篇章。
    int QueryTitle( const char *boardid, char *title,
            char **result );
      查询版面上,标题中包涵钦命内容的篇章。
  }
    参数的传递是一件相比较脑瓜疼的事,从虚无缥缈的角度,希望回到的数量与
  底层毫无干系,所以应该加以管理,但从效能的角度,又不指望多少实行频仍
  复制,另一方面,空间的提请假释,终归是在上层中成就恐怕在本层中成就
  呢?一十分的大心,很轻松有内部存储器错误。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图