dictionary小项目代码管理

软件项目开发流程
需求分析 ----》 概要设计  ---》 项目计划 ----》详细设计---》编码测试 -----》mysql

项目测试 ----》调试修改 ---》项目发布----》后期维护
 
>需求分析 : 肯定用户的真实需求  
  >>1. 肯定用户的真实需求,项目的基本功能
  >>2. 肯定项目的总体难度和可行性分析
  >>3. 需求分析文档,用户确认
 
>概要设计:对项目进行初步分析和总体设计
  >>1. 肯定功能模块
  >>2. 进行可行性分析 搭建总体架构图
  >>3. 肯定技术思路和使用框架
  >>4. 造成概要文档指导开发流程
 
>项目计划 : 肯定项目开发的时间轴和流程
  >>1. 肯定开发工做的前后顺序
  >>2. 肯定时间轴  ,事件里程碑
  >>3. 人员分工  
  >>4. 造成甘特图和思惟导图等辅助内容
 
>详细设计 : 项目的具体实现
  >>1.造成详细设计文档 : 思路,逻辑流程,功能说明,技术点说明,数据结构说明,代码说明
 
>编码测试 : 按照预约计划实现代码编写,而且作基本检测
  >>1. 代码编写
  >>2. 写测试程序
  >>3. 技术攻关
 
>项目测试 : 对项目按照功能进行测试
  >>1. 跨平台测试 ,使用测试
  >>2. 根据测试报告进行代码修改
  >>3. 完成测试报告
 
>项目发布
  >>1.项目交付用户进行发布
  >>2.编写项目说明文档
 
>后期维护
  >>1.维护项目正常运转
  >>2.进行项目的迭代升级sql

功能说明  
>用户能够登陆和注册
    * 登陆凭借用户名和密码登陆
    * 注册要求用户必须填写用户名,密码,其余内容自定
    * 用户名要求不能重复
    * 要求用户信息可以长期保存
        
>能够经过基本的图形界面print以提示客户端输入。
    * 程序分为服务端和客户端两部分
    * 客户端经过print打印简单界面输入命令发起请求
    * 服务端主要负责逻辑数据处理
    * 启动服务端后应该能知足多个客户端同时操做
        
>客户端启动后即进入一级界面,包含以下功能:登陆    注册    退出
    * 退出后即退出该软件
    * 登陆成功即进入二级界面,失败回到一级界面
    * 注册成功能够回到一级界面继续登陆,也能够直接用注册用户进入二级界面
        
>用户登陆后进入二级界面,功能以下:查单词    历史记录    注销
    * 选择注销则回到一级界面
    * 查单词:循环输入单词,获得单词解释,输入特殊符号退出单词查询状态
    * 历史记录:查询当前用户的查词记录,要求记录包含name   word   time。能够查看全部记录或者前10条都可。
    
>单词本说明
  >>每一个单词必定占一行
  >>单词按照从小到大顺序排列
  >>单词和解释之间必定有空格
        
>查词说明
  >>直接使用单词本查询(文本操做)
  >>先将单词存入数据库,而后经过数据库查询。(数据库操做)数据库

 

技术方案

* tcp 套接字
   * 多进程 并发
   * 历史记录 : 前10条
   * 注册成功 直接登陆
服务器

将单词本存入数据表mysql

1. 建立数据库 dict  (utf8)
2. 建立数据表 words  将单词和单词解释分别存入不一样的字段
3. 将单词存入words单词表  超过 19500 便可

数据表进行创建
数据结构

 *单词数据库 架构

create database dictionary charset=utf8;并发

   *单词数据表  words -> id word mean框架

create table (id int primary key auto_incremant, word varchar(32),mean text);
   * 用户  user -> id  name  passwd
tcp

create table user (id int primary key auto_increment,name varchar(32) not null,passwd varchar(128) not null);
   * 历史记录 hist-> id name  word  time
ide

create table hist (id int primary key auto_increment,name varchar(32) not null, word varchar(28) not null,time datetime default now() );

单词表的插入

 1 import pymysql
 2 import re
 3 
 4 f =  open('dictionary.txt‘)
 5 db = pymysql.connect(host = 'localhost',
 6                      port = 3306,
 7                      user = 'root',
 8                      password = '123456',
 9                      database = 'dictionary',
10                      charset = 'utf8')
11 #建立游标
12 cur = db.cursor()
13 #执行插入语句
14 sql = "insert into words (word,mean) values (%s ,%s)"
15 
16 for line in f:
17     #元祖 非空字符,匹配中间的空格,有些存在无解释
18     tup = re.findall(r'(\S+)\s+(.*)',line)[0]
19     try:
20         cur.execute(sql,tup)#游标方法
21         db.commit()#执行写操做须要提交
22     except:
23         db.rollback()
24 
25 f.close()
26 cur.close()
27 db.close()
View Code

 

结构设计

几个模块 封装设计
客户端  :
服务端  : 逻辑请求处理  ,  数据库操做处理
函数封装: 直接写一个功能程序提供给使用者使用。使用者直接运行,而不是须要使用个人代码的某一部分。

 功能分析 和 通讯搭建

   并发通讯   登陆   注册   查单词   历史记录   退出  返回上一级界面

罗列功能逻辑 :每一个功能肯定服务端和客户端该作什么,编写代码测试

注册  客户端: 输入注册信息
                 发送请求
                 获得反馈
         服务端 : 接收请求
                 判断是否容许注册
                 容许注册将信息存入数据库
                 给客户端反馈结果
  登陆  客户端: 输入用户名密码
                  发送请求给服务器
                  获得服务器反馈
             服务端: 接收请求
                   判断是否容许登陆
                  发送结果
 查单词 客户端: 输入单词
                  发送请求 Q name word
                  等待接收结果
          服务端: 接收请求
                  查找单词
                  发送结果
                  插入历史记录

设定客户端服务端协议

相关文章
相关标签/搜索