C语言lottery_demo
2017-08-25 16:25:03 2 举报
C语言每个角色的流程,走向,绘制图
作者其他创作
大纲/内容
如果是222 则是群聊
保存三条链表
心跳heart()
遍历用户列表是否有此用户根据用户提示是否密码正确
先遍历算出长度length,冒泡排序
客户端读取文件获取ip,端口
客户端
单例查询用户获取房间名、构造Room对象放入房主的ID和房主的套接字
根据账号查询
存在提示是否继续注册
保存
sort_money(User_link u_head)
登录islogin()
首先先创建服务端
生成三个数值
输入222:进行群聊
write(message)发给客户端
输入y/n
线程的函数里面输出服务端返回的消息
登录成功显示菜单
Nflag = 1 用户不存在flag = 2 密码错误falg = 3 用户链表为空
输入私聊的ID
执行system(命令)
开启线程管理连接的客户端
管理员
创建房间
加载三条链表1)、用户信息链表:User_link(double money;//账户金额 char name[20];//账户名 char passwd[20];//账户密码)2)、发行彩票链表:Issue_link(int date;//发行期号 float price;//彩票单价 char state[16];//开奖状态 int win_num[3];//中奖号码 int flag;//奖金发放标志 int sum_num;//本期售出总数 double sum_money;//本期奖池总额)3)、购买彩票链表:Buy_link(int date;//发行期号 unsigned long ID;//单张彩票唯一标识ID int number[3];//彩票上选中的号码 char name[20];//购买者帐号 int pot;//已购买某一票号的注数 char state[16];//中奖状态 double win_money;//中奖金额)
创建分离线程将一个数据包传入id,name,write到服务端
开启端口监听 server = new QTcpServer(this);QTcpSocket *socket = server-nextPendingConnection();
否
密码错误
聊天
输入name,password
输入账号
Yflag = 0
手动选号
发送命令shell()
刷新房间
开奖
分离式线程接收datapack.data_type 值
成功user.money修改
display_issue(Issue_link i_head)
是否有此用户
不是NULL
重定向dup2(1,2)
注册界面
输入注数b_lottery.pot
单例根据字段查找数据
sort_account(u_head);
退出客户端
随机选号
随机选择number[i] = rand() % 8 + 1;
跳转到个人信息输入充值
查询彩民信息
查看购买记录
排序
遍历用户链表是否有此用户名
Y or y 注销账号选择出删除的节点delete,while(u_head != delete)//找出删除节点的上一个节点的指针,删除节点的上一个节点指向删除节点的下一个节点\t\t
添加在线用户链表
判断返回的链表是否时空的
输出根据姓名查询出购买彩票链表(Buy_link)flag = 1;//购买过彩票将标志置为1,0则是未购买
登录失败输入三次退出到菜单界面
查找结果返回
publish_num_random(i_head);
返回1注销成功返回0没有注销
查看在线用户scanuser()
彩民
根据余额排序
查看发行记录
单例增加数据(查找数据是否重复)
Qt界面化聊天系统
display_buy(Buy_link b_head)
未猜中显示答案
发行彩票
连接成功进入选择
注数*单价与u_head-user.money比较
根据账号排序
送礼物
publish_num(i_head);
if(name==u_head-user.name||money==u_head-user.money
添加到容器中单例模式的类 * 用于管理用户的在线状态, * 如已经登录状态,或者处于聊天室的登录状态
greffiergreffier
公证员
登录
查看彩票
注册
用户不存在失败登录超过三次失败
循环buy_link输出彩票记录
够了,扣除相应的赌注,输入要猜的次数(次数越少,奖金越多)
失败
保存彩票列表信息
show_all(User_link u_head)
有此用户怎进行密码判断
open_win_fun( Issue_link i_head )
发放奖金
搜索房间
备份标准错误输出dup(1,2)
输出账号,密码,账户余额
聊天室chatsb()
退出房间
登录输入用户名密码
忘记密码界面
输入用户名密码服务器查询文件,读取链表返回结果
accord_money(User_link u_head)
读取client.txt文件中的内容获取id,然后+1作为新的ID
将数据包添加id,服务器接收数据包的id进行查询
根据余额查询
根据id进行write
根据name循环User_link中账号是否存在,存在继续判断密码是否正确判断的函数 用了两个flag flag1 =1;是存在账号flag2 = 1;是密码正确
注册regist_c()
用户下线user_exit()
成功显示主界面
登录界面
判断金额是否够了
遍历在线链表,将数据id,name 添加到message返回客户端
生成彩票
输入余额
同时查找此用户的账号密码
余额是否可以购买
write所有人,不包括自己
不够跳转到个人中心充值
子线程处理客户端发过来的数据
更改密码输入原密码,判断原密码是否正确,在输入两次密码(二维数组存储两次输入的密码)
购买彩票的用户与用户列表中的用户相同,判断是否开奖,奖金是否已发放,购买的三个数字与开奖的三个数字相同,将金额添加到用户列表中
远程登录系统
房间单例,将房间查询出来,然后根据房间的id放到容器中,根据
adminadmin
读取服务端的结果
输入充值金额金额范围(0-100000)
是否猜中
输入单注价格
执行1 socket()2inet_pton3 connect连接
客户端退出client_exit()
服务器端读取文件获取ip,端口
发送data_type=EXITT,write服务器客户端已经退出连接
循环issue_link输出所有彩票记录
save_issue(Issue_link i_head)
购买失败提示余额不足
显示查询的结果data_message
购买彩票记录
小游戏
是NULL
发布中奖号码
查询全部彩民
没有,提示登录失败,没有此账号,输入密码错误
其他字符不注销账号
根据data_type数据包类型,id,查询到data_message,将打印
猜数字
用户名 密码 验证码登录成功
返回1
进入房间
查找在线用户链表
购买彩票
退出登录
根据客户端发的chatid 来进行发送聊天
显示用户信息
猜中恭喜用户,赢得奖金
read,datapack_type断开客户端连接写入日志文件
线程的函数里根据222显示群聊的消息
已存在,返回包data_type
输入下注的倍数
错误三次退出输入
i_head-i_lottery.sum_num += 1;//售出彩票总数加1\t\ti_head-i_lottery.sum_money += (b_lottery.pot*i_head-i_lottery.price);//添加奖池金额\t\t
执行1 socket()2inet_pton3 绑定bind4 监听 listen5 登记捕获 signal alarm6 设置分离线程 7 accept 接收客户端连接 连接成功create线程
手动输入b_lottery.number[3]赋值
密码正确进入二级菜单
遍历在线用户列表是否有此用户
不存在add_client()
不存在注册成功,写入文件
将发行彩票的字段修改为已中奖
正确进入菜单
b_lottery.date = i_head-i_lottery.date;将期号赋给购买的彩票上
添加成功返回字段给客户端
创建服务端界面
购买成功扣除相应金额
创建房间按钮
收藏
收藏
0 条评论
下一页