# 服务计算_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 测试文档 我构建了如下图所示测试文档 ![2019-09-18 19-32-44 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/1.png) 可以观察到,测试文档共五页,每页最后都有分页符作为标记。 将上述代码保存在与selpg可执行文件相同目录的input.txt文件中 ### 2.2 运行结果 1. 运行./selpg -s2 -e3 input.txt 控制台输出,观察是否输出指定页面 ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/2.png) ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/3.png) 可看到按照要求在控制台,输出了相应的行数的页面,且从2页输出到了3页。 2. 运行./selpg -s1 -e5 -f input.txt 控制台输出,观察是否输出指定页面 ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/4.png) 3. 运行./selpg -s1 -e5 -doutput.txt -f input.txt 文件输出,观看是否按照要求在目的文件用目的格式输出页面: ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/5.png) 4. 运行./selpg -s1 -e5 -doutput.txt input.txt 文件输出,观看是否按照要求在目的文件用目的格式输出页面: ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/6.png) 5. 运行./selpg -s1 -e5 -doutput.txt -f input2.txt 观察是否出现报错 ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/7.png) 6. 运行./selpg -s1 -doutput.txt -f input.txt观察是否出现报错 ![2019-09-18 19-53-54 的屏幕截图](https://gitee.com/laurenceZhixin/service_computing_hm4/raw/master/img/8.png) 可以看到测试成功