# 服务计算_hm4
**Repository Path**: laurenceZhixin/service_computing_hm4
## Basic Information
- **Project Name**: 服务计算_hm4
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-09-18
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#
服务计算作业 第四周
17343066 李志信 17软件工程教务一班
## 1. 设计说明:
### 1.1 指令获取部分
通过pflag库的调用,可以实现指令从控制台的获取,对于-s 、-e等参数的定义。
1. 定义全局输入变量
```
var (
sp * int
ep * int
lp * int
fp * bool
dp * string
)
```
2. 设置各个输入变量的名称以及默认选项
```
func Init() {
sp = flag.IntP("number1", "s", -1, "set start page")
ep = flag.IntP("number2", "e", -1, "set end page")
lp = flag.IntP("number3","l", 72, "set length of page")
dp = flag.StringP("&d", "d", "non", "set destination")
fp = flag.BoolP("f", "f", false, "use char to judge page")
}
```
3. 通过对输入参数的不同进而选择不同的处理方式
```
if s < 1 || s > INT_MAX - 1{
fmt.Println("start page invalid!")
return false, nil
}
sa.start_page = s;
......
```
### 1.2 文件读写格式的控制
1. 读写首先要确定输出对象
```
if sa.print_dest == "non"{//控制台写入
//codes
}else{//文件写入
write_file,err := os.Create(sa.print_dest)
//codes
}
```
2. 确定数处对象之后选择输出格式:按照什么分页
```
if sa.page_type == true{//使用\f作为分页符
//codes
} else{//使用行数as.pagelen作为分页
//codes
}
```
3. 确定好分页方式之后,进行格式化输出。
```
//对于按照行读取的情况,使用'\n'作为一次输出的识别
inputString, err := inputReader.ReadString('\n') //我们将inputReader里面的字符串按行进行读取。
//保证最后输出的行数为定义好的一页的长度
for lineCounter <= sa.page_len{
fmt.Println("")
lineCounter += 1
}
//对于按照分页符进行输出的情况,使用'\f'作为一次输出的识别
inputString, err := inputReader.ReadString('\f') //我们将inputReader里面的字符串按页读取。
```
## 2. 运行测试
### 2.1 测试文档
我构建了如下图所示测试文档

可以观察到,测试文档共五页,每页最后都有分页符作为标记。
将上述代码保存在与selpg可执行文件相同目录的input.txt文件中
### 2.2 运行结果
1. 运行./selpg -s2 -e3 input.txt 控制台输出,观察是否输出指定页面


可看到按照要求在控制台,输出了相应的行数的页面,且从2页输出到了3页。
2. 运行./selpg -s1 -e5 -f input.txt 控制台输出,观察是否输出指定页面

3. 运行./selpg -s1 -e5 -doutput.txt -f input.txt 文件输出,观看是否按照要求在目的文件用目的格式输出页面:

4. 运行./selpg -s1 -e5 -doutput.txt input.txt 文件输出,观看是否按照要求在目的文件用目的格式输出页面:

5. 运行./selpg -s1 -e5 -doutput.txt -f input2.txt 观察是否出现报错

6. 运行./selpg -s1 -doutput.txt -f input.txt观察是否出现报错

可以看到测试成功