【第一组】用例文档+功能说明书+技术说明书
查课表
是什么
这是NEU Old Driver这款软件里的一个小功能,包含在教务处大功能之下,可以查询登录用户的课表信息。
怎么用(功能说明书)
目标: 按周数查询学生课表
用户:希望查询课表的用户
如何使用:
1. 打开软件
2. 点击教务处查成绩
3. 看到用户课表
异常情况:
1.课表无法正确识别,查询课表页面所有框中都是
如何实现(技术说明书)
界面:
- 为了把课表以表格的形式展现,需要一个8行8列的表格,其中行为课程第几节,列为星期几。在<Grid>里面添加8个<RowDefinition>,8个<ColumnDefinition>,Height和Width均设置为Auto;
- 在每个<Grid>单元格里都添加一个<TextBlock>,其中6*7的矩阵用来显示解析返回的课程string字段;
功能:
- 用一个String类型的strWebContent保存教务处课表查询页面的HTML(HTML保存为string类型后,XPath节点头部不能有空格) (XPath节点教程)
正例: <body leftmargin = ""0""> </body > 反例: < body leftmargin = ""0""> < / body >
- 为了解析HTML,在NuGet程序包管理中添加HtmlAgilityPack.NetCore程序包。在此程序包下,需要用XPath表达式正确定位我们想要提取的文本所在节点,就能把该节点下的文本提取出来,保存为一个HtmlNodeCollection类型的变量。(HtmlAgilityPack.NetCore用例 XPath教程)
HtmlNodeCollection collection = htmlDocument.DocumentNode.SelectSingleNode("html/body/table/tr[2]/td/table/tr/td/table/tr/td/div/table/tr[4]/td[2]").ChildNodes;
- 去除文本中的"\r"," \n"," "
string[] line = node.InnerText.Split(new char[] { '\r', '\n', ' ' }, StringSplitOptions.RemoveEmptyEntries);
- 用for循环,改变XPath表达式的节点路径,遍历实现课表的提取。其中i,j为循环变量
string str1 = "html/body/table/tr[2]/td/table/tr/td/table/tr/td/div/table/tr["; string str2 = "]/td["; string str3 = "]"; string str = str1 + j + str2 + i + str3;
- 用自动机识别课程周数语句。
自动机输入
string str = "10-15.19周2节
自动机输出
int weekMark[20] = "0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0";
(自动机参考资料)