diff --git a/.gitignore b/.gitignore
index 0fdfccb0..3db7c7e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,8 @@ out
gen
.idea/
InfectStatistic-example.iml
+*.o
+*.dev
+*.layout
+*.win
+*.exe
diff --git a/example/README.md b/example/README.md
index 0b7fb93e..0086ec18 100644
--- a/example/README.md
+++ b/example/README.md
@@ -1,4 +1,49 @@
-# InfectStatistic-学号
-疫情统计
+# InfectStatistic-221701335
-描述你的项目,包括如何运行、功能简介、作业链接、博客链接等
+### 项目简介
+这是一个由C++编写的简易疫情统计程序,可以统计指定日期前的每日数据日志,并根据需要选择指定地区/日期/人群输出统计结果到指定文件中。
+
+输入文件示例:
+>福建 新增 感染患者 3人
+福建 新增 疑似患者 6人
+湖北 新增 感染患者 25人
+湖北 新增 疑似患者 39人
+湖北 感染患者 流入 福建 2人
+湖北 疑似患者 流入 福建 5人
+湖北 死亡 2人
+湖北 治愈 1人
+湖北 疑似患者 确诊感染 3人
+福建 排除 疑似患者 2人
+福建 治愈 1人
+// 该文档并非真实数据,仅供测试使用
+
+对应输出文件:
+>全国 感染患者15人 疑似患者22人 治愈2人 死亡1人
+福建 感染患者5人 疑似患者7人 治愈0人 死亡0人
+湖北 感染患者10人 疑似患者15人 治愈2人 死亡1人
+// 该文档并非真实数据,仅供测试使用
+
+
+### 运行方法
+1.首先编译.cpp代码得到对应程序,并在控制台中cd到程序目录下运行程序;
+2.在控制台的程序名后输入 `list`表示接下来输入参数;
+3.在运行程序前必须输入 `-log`与`-out`参数,后分别补充要读取的日志文件所在目录与要输出的文本文件地址,若改文本文件不存在程序会默认新建文件并输出,若未指定这两个参数程序运行时会报错。
+命令示例:
+`>InfectStatistic.exe list -log D:/log -out D:/result/ListOut3.txt`
+
+
+### 功能简介
+1.如运行方法中述,可以程序可以使用`-log`与`-out`参数来指定需要统计的文件地址与需要输出的文件地址。
+2.除`-log`与`-out`两个必要参数外还可以选择使用`-date`参数后补充yyyy-mm-dd格式的日期表示只读如该日期及更早的日志文件进行统计,若缺省则表示程序会处理指定目录下所有的日志文件。
+3.还可以使用`-type`后指定*ip*、*cure*、*dead*、*sp*其中的一个或多个来表示需要的统计的感染患者、治愈、死亡、疑似患者四类人群类型,若缺省则表示四类人群均被统计,比如使用`-type ip cure`,则对于每个地区会依次输出感染患者、治愈人数的信息。
+4.还可以使用`-province`后补充一或者多个地区/全国来选择需要统计的地理位置,若缺省则表示统计全国各个地区的信息并以拼音顺序依次输出统计结果,比如使用`-province 福建 全国 湖北`,则会依次输出全国、福建、湖北的信息。
+命令示例:
+`>InfectStatistic.exe list -log D:/log -out D:/result/ListOut3.txt -date 2020-01-22 -type sp -province 福建`
+
+
+### 作业链接
+[软工实践寒假作业(2/2)](https://edu.cnblogs.com/campus/fzu/2020SPRINGS/homework/10287#4")
+
+
+### 博客链接
+[Ginphy-cnblog](https://www.cnblogs.com/ginphy/p/12318693.html")
\ No newline at end of file
diff --git a/example/codestyle.md b/example/codestyle.md
index 50bf5d56..e5d580df 100644
--- a/example/codestyle.md
+++ b/example/codestyle.md
@@ -1,13 +1,105 @@
## 代码风格
-- 缩进
-- 变量命名
-- 每行最多字符数
-- 函数最大行数
-- 函数、类命名
-- 常量
-- 空行规则
-- 注释规则
-- 操作符前后空格
-- 其他规则
-- ...
+
+#### 1.缩进
+- 开发工具自动生成的代码可能不一致,一般以一个Tab即 4 个空格为缩进。
+
+
+#### 2.变量
+- 使用驼峰命名法,单个单词使用全小写字母,多个单词由第二个开始首字母大写;
+- 位于中间的单词根据单词长度可以选择首字母大写或者全大写。
+- 例如:int temp; int tempNum; int fileOUTNum; int fileTempNum
+- 尽量少使用全局变量,尽量去掉没必要的公共变量。
+- 对于变量命名,除作局部循环变量外禁止取单个字符 (如 i、j、k...),名称要有具体含义。
+- 命名尽量使用英文单词而不使用汉语拼音。
+
+
+#### 3.每行最多字符数
+- 除去文本内容外一行代码数量一般不超过80个字符数,较长的语句(>80 字符)要分成多行书写。
+- 当划分一行长代码时,划分后的一行代码应以变量名称(字母)开头,而不是用运算符号作为开头。
+- 不允许把多个短语句写在一行中,即一行只写一条语句 ,即一行只写一条语句。例如:
+```c
+int a; int b;
+```
+不符合规范,应该写为:
+```c
+int a;
+int b;
+```
+**以上规则不适用于注释*
+
+
+#### 4.函数最大行数
+- 除main函数外其余各个函数不应超过100行(不包括注释和空格行)。
+- main函数不应超过500行。
+- 若函数行数过长则要求将其分模块处理。
+
+
+#### 5.函数、类命
+- 函数与类的命名同样遵从变量命名的驼峰命名法。
+- 若函数与类中出现专有名词与特殊缩写则按照该词常用方法选择大小写。
+- 例如:`ANSIToUnicode()`其中的ANSI按照其名词常用缩写方法写作ANSI不写作ansi或者Ansi。
+- 函数的名称需要能够明确函数的意图。
+- 尽量写类的构造、拷贝构造、析构和赋值函数 析构和赋值函数,而不使用系统缺省的。
+
+
+#### 6.常量
+常量全大写命名
+例如:
+```c
+const char *FILEPATH
+```
+
+
+#### 7.空行规则
+在`#include`前后空行。
+在第一个函数前空一行,不同的函数之前空两行。
+在多个`if...else`之间可以使用空行。
+在不同类型变量声明之间可以使用空行;在变量声明与其他语句中间可以使用空行。
+在每个`return`语句前空一行。
+
+
+#### 8.注释规则
+- 注释应该和代码同时更新 :注释应该和代码同时更新,不再有用的注释要删除 ,不再有用的注释要删除。
+- 注释的内容要清楚、明了,不能有二义性 ,不能有二义性。
+- 避免在注释中使用非常用的缩写或者术语。
+- 注释应该解释清楚被注释对象的用途。
+- 要的注释 :避免非必要的注释。
+- 对于代码块使用`/*...*/`进行注释;对于文字解释使用`//`进行注释。
+- 可在代码块注释`/*...*/`中使用`//`进行注释来解释被注释代码块的作用。
+- 在代码开头使用`/*...*/`来注释显示版权信息。
+- 在函数块或代码块开头使用`//`注释解释函数用途。
+- 在变量或语句同一行后使用`//`来注释解释该行语句用途。
+- 在多个嵌套中在嵌套末尾下一行使用`//`来标记`{}`对应的嵌套。
+- 注释不宜过多,也不能太少,源程序中有效注释量控制在 20%~30%之间。
+
+
+#### 9.操作符运算规则
+- 禁止使用难以理解,容易产生歧义的语句。
+- 不编写太复杂、多用途的复合表达式,用括号明确表达式的操作顺序,避免使用默认优先级。
+- 在for语句条件判断中的每个`;`后加空格。
+- 对于`+` `-` `*` `/` `+=` `-+` `*=` `/=` `<<` `>>`这类操作符的前后使用空格与变量隔开。
+- 例如:
+```c
+x = 1 + y;
+std::cout << "hello world!";
+for(int i = 1; i < 5; i++){}
+```
+- 对于`!` `~` `++` `--` `&`(地址运算符)等前后不加空格。
+- 对于`[` `]` `.` `->`这类操作符前后不加空格。
+
+
+#### 10.其他规则
+- 不使用变量本身来进行判断语句,必须与运算符结合进行判断;例如:
+```c
+if(n) //不使用这种判断语句
+if(n == 1) //而使用这种判断语句
+```
+- 使用 return -1 来表示异常退出程序。
+- 对于语句块或者函数,{紧跟在语句同一行后;例如:
+```c
+if( num == 1 ){
+ //...
+}
+```
+
diff --git a/example/result/ListOut4.txt b/example/result/ListOut4.txt
new file mode 100644
index 00000000..b3115c6f
--- /dev/null
+++ b/example/result/ListOut4.txt
@@ -0,0 +1,7 @@
+ȫ Ⱦ15 2
+ Ⱦ0 0
+ Ⱦ5 0
+ Ⱦ10 2
+Ĵ Ⱦ0 0
+㽭 Ⱦ0 0
+// ĵʵݣʹ
diff --git a/example/result/ListOut5.txt b/example/result/ListOut5.txt
new file mode 100644
index 00000000..b3115c6f
--- /dev/null
+++ b/example/result/ListOut5.txt
@@ -0,0 +1,7 @@
+ȫ Ⱦ15 2
+ Ⱦ0 0
+ Ⱦ5 0
+ Ⱦ10 2
+Ĵ Ⱦ0 0
+㽭 Ⱦ0 0
+// ĵʵݣʹ
diff --git a/example/src/InfectStatistic.cpp b/example/src/InfectStatistic.cpp
new file mode 100644
index 00000000..f672e7ef
--- /dev/null
+++ b/example/src/InfectStatistic.cpp
@@ -0,0 +1,546 @@
+/*
+ * InfectStatistic
+ * TODO
+ *
+ * @author 221701335 Ԭ
+ * @version V1.0
+ * @since 2020.2.10
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include