基于C语言实现一个社交系统 设计过程 设计构想 Project 的基本要求是实现一个社交系统,使其能够进行基本的消息发布,信息共享,好友关注等功能。针对后台的操作,希望设计针对用
基于C语言实现一个社交系统
设计过程
设计构想
Project 的基本要求是实现一个社交系统,使其能够进行基本的消息发布,信息共享,好友关注等功能。针对后台的操作,希望设计针对用户名的开放链表法的哈希索引,消息则使用链表实现,关注关系以有向图的十字链表存储。至于前台的设计,希望以一个界面类,实现全部的前台指令操作。在设计的时候,应当以功能为导向,为界面类提供应有的接口,以保证代码的正常运作。
文件存储的设想:
- 尽可能减少内存的使用量,使用文件操作
- 修改用户信息不需要修改索引值,以达到代码量的减少
- 多索引,保证条件搜索的速度
- 可变信息与长度不可变的信息分开存储,以实现叠加式地文件内容增长,而非重写
数据结构的设想:
- 尽可能实现不修改索引的情况下实现数据文件的修改
- 尽可能选用合适的数据结构,不同情况下使用的数据结构考虑实现为模板方式
对于程序的设想就是这样,在写程序的时候也一直尽量以之作为纲领。
文件存储
因为要保证用户的信息在程序结束后不消失,所以需要将其保存在文件中。我将用户的所有内容分为三类:长度不变的个人信息(如电话,等等),用户发布的信息,以及关注信息。所有的文件都是以二进制存储。用户的所有关于个人的信息都存储在 info 中,用户发布的,消息在 meg 中,而关注在 like 中。他们的组织形式如 Figure 1 所示。
还有关于索引的存储,由于程序要求实现关于个人信息的各个条目的搜索,所以关于每一种信息的索引都单独存放。index 中存放的是用户名哈希索引,index_name 存放的是用户姓名索引,index_bir 是生日索引,index_tele 是电话索引,index_add 是地址索引。
前台设计
程序的前台功能都是在 Interface 类中实现的,Interface 同时也是连结前台后台的主要类。同时为了测试模式,Interface 也提供了测试接口。详细接口如图 Figure 2,具体见。
完整的源码和详细的文档,上传到了 【WRITE-BUG数字空间】,需要的请自取:https://www.writebug.com/code/0c7c569b-c792-11ed-aa10-6479f0e5e323/#