Skip to content

Commit

Permalink
V0.5 有关输入方式的更新
Browse files Browse the repository at this point in the history
  • Loading branch information
merept committed May 27, 2022
1 parent f1ece2a commit 718c665
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 59 deletions.
82 changes: 63 additions & 19 deletions MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,40 @@
using MessageBoxResult = System.Windows.Forms.DialogResult;
using System.Drawing;
using MerelyLogTool;
using System.Collections.Generic;

namespace GradePointAverageCalulatorForSWPU {
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window {
public static string Version { get; } = "V0.4.4.2";
public static string Version { get; } = "V0.5";
public static string HistoryFilePath { get; } = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
@"\GradePointAverageCalulatorForSWPU\";
public static string HistoryFileName { get; } = $"\\{Environment.UserName}.gpa";
public readonly string helpText = "欢迎来到SWPU平均学分绩点计算器!\n" +
"\n" +
"2022.5.27更新 version 0.5\n" +
"重大功能更新:\n" +
"现在可以直接把教务系统成绩页里的全部内容复制过来,\n" +
"粘贴好后直接点击 “开始计算” 即可获得结果,无需再做更改\n" +
"以前的方法依然可用\n" +
"\n" +
"2022.5.7更新 version 0.4.4\n" +
"1.新增了异常日志记录(使用 MereyLog 进行记录)\n" +
"\n" +
"2022.2.17更新 version 0.4.3\n" +
"1.优化了视觉效果和部分操作逻辑,控件外观匹配当前系统\n" +
"\n" +
"请在输入框输入您每科的学分及期末成绩,并点击输入框下方 ”开始计算“ 按钮进行计算\n" +
"输入时请严格遵守一下几点:\n" +
"1.以先输入学分再输入成绩的顺序,否侧结果可能会出错\n" +
"2.每个数据之间需用任何除数字和小数点外的符号进行间隔\n" +
"3.可以加上每个科目的名称以方便核对,但是科目名称中请不要包含数字\n" +
"以下是输入示例:\n" +
"高数 5 71\n" +
"大物 3.5 74\n" +
"电路 5 73\n" +
"C语言 3.5 81\n";
"请在输入框输入您每科的学分及期末成绩,\n" +
"可直接将教务系统成绩页的全部内容粘贴进输入框,\n" +
"然后点击输入框下方 ”开始计算“ 按钮进行计算\n";
//"输入时请严格遵守一下几点:\n" +
//"1.以先输入学分再输入成绩的顺序,否侧结果可能会出错\n" +
//"2.每个数据之间需用任何除数字和小数点外的符号进行间隔\n" +
//"3.可以加上每个科目的名称以方便核对,但是科目名称中请不要包含数字\n" +
//"以下是输入示例:\n" +
//"高数 5 71\n" +
//"大物 3.5 74\n" +
//"电路 5 73\n" +
//"C语言 3.5 81\n";
public BindingList<History> Histories { get; set; } = new BindingList<History>();
public static MerelyLog Log { get; } = new MerelyLog(HistoryFilePath, "GPAC_log", Version, LogMode.XML);

Expand Down Expand Up @@ -139,16 +145,54 @@ private void ShowResult(MatchCollection dataMatches, MatchCollection nameMatches
} else return;
}

private void ShowResult(string[] datas, int count) {
var gpa = new GradePointAverage();
int gradeIndex = count == 7 ? 6 : 9,
pointIndex = 4,
nameIndex = 2;
try {
for (int i = 0; i < datas.Length - 1; i += count) {
if (Regex.IsMatch(datas[i + nameIndex], @"英语实践+") ||
Regex.IsMatch(datas[i + nameIndex], @"全国英语+") ||
datas[i].Substring(0, 2) == "00") continue;
gpa.Add(datas[i + nameIndex], Convert.ToDouble(datas[i + pointIndex]), Convert.ToDouble(datas[i + gradeIndex]));
}
} catch (Exception ex) {
Log.Log(ex, "计算结果时出错");
Message.ShowError(ex.Message, ex.GetType().Name);
}
var history = new History(gpa);
if (!Histories.Contains(history))
Histories.Add(history);
if (MessageBoxShow(gpa)) {
new ResultWindowWithNames(Histories.Last().GradePointAverage, Histories, Histories.IndexOf(Histories.Last())).Show();
} else return;
}

private bool IsJustCopy(out int l) {
var s = GradesAndPoints.Text.Split('\n');
var a = s[0];
l = Regex.Split(s[0], @"\u0020\u0020+").Length - 1;
l = l == 6 ? 7 : l;
return l == 7 || l == 11 || l == 12;
}

private void BeginCalculate_Click(object sender, EventArgs e) {
int count;
if (string.IsNullOrWhiteSpace(GradesAndPoints.Text)) {
MessageBox.Show("请输入内容!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
var dataMatches = Regex.Matches(GradesAndPoints.Text, @"\d+\.*\d*");
var nameMatches = Regex.Matches(GradesAndPoints.Text, @"[a-zA-z\u4e00-\u9fa5]+");
if (nameMatches.Count == 0 || nameMatches.Count != dataMatches.Count / 2) {
ShowResult(dataMatches);
} else ShowResult(dataMatches, nameMatches);
if (IsJustCopy(out count)) {
var s = Regex.Replace(Regex.Replace(GradesAndPoints.Text, @"\r\n+", ""), @"\u0020\u0020\u0020\u0020+", "\u0020\u0020");
ShowResult(Regex.Split(s, @"\u0020\u0020+"), count);
} else {
var dataMatches = Regex.Matches(GradesAndPoints.Text, @"\d+\.*\d*");
var nameMatches = Regex.Matches(GradesAndPoints.Text, @"[a-zA-z\u4e00-\u9fa5]+");
if (nameMatches.Count == 0 || nameMatches.Count != dataMatches.Count / 2) {
ShowResult(dataMatches);
} else ShowResult(dataMatches, nameMatches);
}
}

private void History_Click(object sender, EventArgs e) {
Expand Down
4 changes: 2 additions & 2 deletions Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.4.3")]
[assembly: AssemblyFileVersion("0.4.3")]
[assembly: AssemblyVersion("0.5")]
[assembly: AssemblyFileVersion("0.5")]
46 changes: 10 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,51 +12,23 @@
### 更新

- [2022.5.7 更新 V0.4.4](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.4)

> 新增了异常日志记录(使用 MereyLog 进行记录)
- [2022.2.17 更新 V0.4.3](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.3)

> 优化了视觉效果和部分操作逻辑,控件外观匹配当前系统
- [2022.2.11 更新 V0.4.2](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.2)

> 1.新增了删除单条历史记录的功能
>
> 2.修复了当输入框有空格或换行依旧能输出结果的错误
>
> 3.修复了在结果详情及历史记录窗口未选中条目依旧能使用右键菜单的错误
- [2022.2.9 更新 V0.4.1](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.1)
- [2022.5.7 更新 V0.5](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.5)

> 1.更新了历史记录的存储方式,优化了对于相同数据的查重判定,现在结果详情页修改数据可同步至历史记录,历史记录的名称可重命名
> 重大功能更新:
>
> 2.上一次退出时输入的数据可以保存了,在有历史记录的情况下,关闭程序重新进入会保留上一次输入的内容
> 现在可以直接把教务系统成绩页里的全部内容复制过来,粘贴好后直接点击 “开始计算” 即可获得结果,无需再做更改以前的方法依然可用
- [2022.1.27 更新 V0.3.5](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.3.5)

> 优化了一些操作逻辑
- [2022.1.27 更新 V0.3.4](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.3.4)

> 1.修复了历史记录窗口双击空白处会闪退的bug
>
> 2.优化了操作逻辑,双击历史记录后会自动打开结果
- [2022.1.20 更新 V0.3.3](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.3.3)

> 增加历史记录功能,可快捷查看历史记录
- [2022.5.7 更新 V0.4.4](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.4)

- [2022.1.15 更新 V0.3.1](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.3.1)
> 新增了异常日志记录(使用 MereyLog 进行记录)
> 优化了电源的使用情况,减少耗电以及CPU占用
- [更多历史版本更新内容](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases)

### 使用说明

请在输入框输入您每科的学分及期末成绩,并点击输入框下方 ”开始计算“ 按钮进行计算
请在输入框输入您每科的学分及期末成绩,**可直接将教务系统成绩页的全部内容粘贴进输入框**并点击输入框下方 ”开始计算“ 按钮进行计算

输入时请严格遵守以下几点:
输入时请严格遵守以下几点**直接粘贴结果时不用管这里,直接计算结果即可**

- 以先输入学分再输入成绩的顺序,否则结果可能会出错
- 每个数据之间需用任何除数字和小数点外的符号进行间隔
Expand All @@ -70,6 +42,8 @@

### 输入示例

> **直接粘贴结果时不用管这里,直接计算结果即可**
```
高数 5 71
大物 3.5 74
Expand Down
4 changes: 2 additions & 2 deletions 关于如何备份历史记录.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@

### 最新版本下载

[GitHub V0.4.4](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.4.4)
[Gitee V0.4.4](https://gitee.com/merept/GradePointAverageCalulatorForSWPU/releases/V0.4.4)
[GitHub V0.5](https://github.com/merept/GradePointAverageCalulatorForSWPU/releases/tag/V0.5)
[Gitee V0.5](https://gitee.com/merept/GradePointAverageCalulatorForSWPU/releases/V0.5)

0 comments on commit 718c665

Please sign in to comment.