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() );
单词表的插入
import pymysql
import re f = open('dictionary.txt‘)
db = pymysql.connect(host = 'localhost',
port = 3306,
user = 'root',
password = '',
database = 'dictionary',
charset = 'utf8')
#创建游标
cur = db.cursor()
#执行插入语句
sql = "insert into words (word,mean) values (%s ,%s)" for line in f:
#元祖 非空字符,匹配中间的空格,有些存在无解释
tup = re.findall(r'(\S+)\s+(.*)',line)[0]
try:
cur.execute(sql,tup)#游标方法
db.commit()#执行写操作需要提交
except:
db.rollback() f.close()
cur.close()
db.close()
结构设计
几个模块 封装设计
客户端 :
服务端 : 逻辑请求处理 , 数据库操作处理
函数封装: 直接写一个功能程序提供给使用者使用。使用者直接运行,而不是需要使用我的代码的某一部分。
功能分析 和 通信搭建
并发通信 登录 注册 查单词 历史记录 退出 返回上一级界面
罗列功能逻辑 :每个功能确定服务端和客户端该做什么,编写代码测试
注册 客户端: 输入注册信息
发送请求
得到反馈
服务端 : 接收请求
判断是否允许注册
允许注册将信息存入数据库
给客户端反馈结果
登录 客户端: 输入用户名密码
发送请求给服务器
得到服务器反馈
服务端: 接收请求
判断是否允许登录
发送结果
查单词 客户端: 输入单词
发送请求 Q name word
等待接收结果
服务端: 接收请求
查找单词
发送结果
插入历史记录
设定客户端服务端协议
dictionary小项目代码管理的更多相关文章
- [转] 使用Git进行小项目代码管理
http://www.uml.org.cn/pzgl/201206155.asp 之前在公司使用过SVN(无甚感觉)和ClearCase(把人恶心死的东西)两种版本控制工具,都不满意.后来想自己写点东 ...
- 项目代码管理工具Git的总结
在项目的开发中,代码的同步管理很重要,团队的几个人可以通过免费的github管理自己的开源项目代码,高效方便.下面说说,开发中经常用到的git指令操作,基于github平台. 0.配置提交者的账户和邮 ...
- 我与Git的那些破事--代码管理实践
1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...
- 我与Git的那些破事(上)--代码管理
1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...
- [BI项目记]-搭建代码管理环境之客户端
前面已经介绍了如何搭建代码管理环境的服务器端安装和配置,这里介绍对于客户端的几个场景. 首先对于开发人员来说,可以直接使用Visual Studio来连接,这里主要演示Visual Studio 20 ...
- 使用Github管理项目代码的版本
作为开源代码库以及版本控制系统,Github拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法. 在Git中并不存在主库这样的概 ...
- 一个看起来不像中年人的中年人,带着两个初出茅庐的小伙子儿,用git管理项目代码的进击之路
一个中年人的孤独前行 我们这一代人,是上个世纪的人,活在当下,已然成为社会上的中流砥柱. 80年代生人,遥望我们的父辈,均是5.60年代的人,迟迟暮年,夕夕老矣.而我们,正当年,却又时光飞逝,很快便要 ...
- 构建微服务开发环境7————使用Github管理项目代码的版本
[内容指引] 1.注册GitHub帐号: 2.下载Github Desktop客户端: 3.macOS安装Github Desktop客户端: 4.windows安装Github Desktop客户端 ...
- 使用git和github管理项目代码
以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git 和Github来托管自己的代码和读书笔记方便了不少,到哪里只要有网就可以把自己的东西拷贝下 ...
随机推荐
- python常用魔法函数
1.__init__(): 所有类的超类object,有一个默认包含pass的__init__()实现,这个函数会在对象初始化的时候调用,我们可以选择实现,也可以选择不实现,一般建议是实现的,不实现对 ...
- UVa1636 Headshot 【迁移自洛谷博客】
说明:小蒟蒻hkk现在正在做一些概率的题目,由于这方面和数学还有点关系,所以需要一些数学的思维,也需要表述出来,如夏军所述"把自己给讲懂",所以写了些blog,主要为帮助自己理解. ...
- ubuntu 开启ftp服务
一. 检查是否已安装 vsftpd vsftpd -v 二. 安装 vsftpd apt-get install vsftpd 三. 检查是否已安装好 vsftpd vsftpd -v system ...
- YOLOv1算法理解
1,YOLOv1算法的简介 YOLO算法使用深度神经网络进行对象的位置检测以及分类,主要的特点是速度够快,而且准确率也很高,采用直接预测目标对象的边界框的方法,将候选区和对象识别这两个阶段合二为一, ...
- springBoot01-helloworld-完成一个简单的RESTful API
1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Proje ...
- PHP curl_file_create函数
curl_file_create — 创建一个 CURLFile 对象. 说明 CURLFile curl_file_create ( string $filename [, string $mime ...
- php基于SQLite实现的分页功能示例
php基于SQLite实现的分页功能. 这里操作数据库文件使用的是前面文章<PHP基于PDO实现的SQLite操作类>中的SQLite数据库操作类. 代码: <?php class ...
- vue项目打包之后原本好的样式变得不好了的原因分析
这个主要是打包的过程将所有的css文件进行归类压缩,导致原先其他文件里的样式对当前的产生了影响,应该有同样的类名了.怎么改?要么改类名,要么用scope,scss的写法.
- scrapy工作流程
整个scrapy流程,我们可以用去超市取货的过程来比喻一下 两个采购员小王和小李开着采购车,来到一个大型商场采购公司月饼.到了商场之后,小李(spider)来到商场前台,找到服务台小花(引擎)并对她说 ...
- 测开之路二十九:Flask基础之jinja2模板
中文文档:http://docs.jinkan.org/docs/jinja2/ 与静态资源一样,Flask默认的模板目录名为templates,如果有需要的话和static一样,要在初始化的时候声明 ...