zoukankan      html  css  js  c++  java
  • dictionary小项目代码管理

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

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

    功能说明  
    >用户可以登录和注册
        * 登录凭借用户名和密码登录
        * 注册要求用户必须填写用户名,密码,其他内容自定
        * 用户名要求不能重复
        * 要求用户信息能够长期保存
            
    >可以通过基本的图形界面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

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

    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
                      等待接收结果
              服务端: 接收请求
                      查找单词
                      发送结果
                      插入历史记录

    设定客户端服务端协议

  • 相关阅读:
    OpenCV图像处理之 Mat 介绍
    linux 更改网卡名称 eth0
    【git】git常用命令
    【JS】函数提升变量提升以及函数声明和函数表达式的区别
    【VUE】vue中遍历数组和对象
    加密盐的意义和用途
    sql server2005版本中,len函数计算了字符串末尾的空格
    ES之一:API使用及常用概念
    flink (一)
    ClassLoader详解 (JDK9以前)
  • 原文地址:https://www.cnblogs.com/Alan-Song/p/11221973.html
Copyright © 2011-2022 走看看