寫了個自動刷題的軟件按一下就完成一項,一學期省了我好幾天的時間,做到了1.2版本了,自認為代碼比1.0漂亮的多得多得多了,求各路大神指點啊

後端代碼:
1 class BottomProcess
2 {
3 public bool Confirm { private set; get; }
4 public void ConfirmIt()
5 {
6 Confirm = false;
7 string[] name=new string[]{"寢室人的名字,才不讓人亂用吶~~~"};
8 foreach (string item in name)
9 {
10 Regex tempregex = new Regex(item);
11 Match tempmatch = tempregex.Match(WebSource);
12 if (tempmatch.Success)
13 {
14 Confirm = true;
15 }
16 }
17 }
18 //level, unit, lessonnumber, lessonname, extranumber, unitID, lessonID
19 private static string[] Attributes = { "Level0", "UNIT", "class=c jQuery", "None", "None", "unitID=", "sectionID=" };
20 private static string[] AllLessonName = { "Warm Up", "Listening Task", "Real World Listening", "Reading Task", "RWV Listening Task", "RWV Speaking Task", "RWV Role Play" };
21 public BottomProcess(string webSource)
22 {
23 WebSource = webSource;
24 ConfirmIt();
25 Informations = new string[7];
26 ExtractToInformation();
27 FinishAddressBuild();
28 }
29 private Regex regex { get; set; }
30 private Match match { get; set; }
31 private string WebSource { get; set; }
32 public string FinishAddress { get; private set; }
33 private delegate string Extractions();
34 public string[] Informations { get; set; }
35 //level, unit, lessonnumber, lessonname, extranumber, unitID, lessonID
36 private void ExtractToInformation()
37 {
38 Extractions[] extractions =
39 {
40 GetLevel,
41 GetUnit,
42 GetLessonNumber,
43 GetLessonName,
44 GetExtraNumber,
45 GetUnitID,
46 GetLessonID
47 };
48 for (int index = 0; index < 7; index++)
49 {
50 Informations[index] = ExtractFromWebSource(index, extractions[index]);
51 }
52 }
53 private string ExtractFromWebSource(int index, Extractions extract)
54 {
55 if (Attributes[index] != "None")
56 {
57 regex = new Regex(Attributes[index]);
58 match = regex.Match(WebSource);
59 }
60 return extract();
61 }
62 private string GetLevel()//0
63 {
64 return WebSource.Substring(match.Index + Attributes[0].Length, 1);
65 }
66 private string GetUnit()//1
67 {
68 return GetOnlyNumber(WebSource.Substring(match.Index + Attributes[1].Length, 2));
69 }
70 private string GetLessonNumber()//2
71 {
72 return GetOnlyNumber(WebSource.Substring(match.Index - 4, 7));
73 }
74 private string GetLessonName()//3
75 {
76 foreach (string lessonName in AllLessonName)
77 {
78 regex = new Regex(lessonName);
79 match = regex.Match(WebSource);
80 if (match.Success)
81 {
82 return lessonName;
83 }
84 }
85 return "NoUseReturn";
86 }
87 private string GetExtraNumber()//4
88 {
89 return GetOnlyNumber(WebSource.Substring(match.Index + Informations[3].Length, 2));
90 }
91 private string GetUnitID()//5
92 {
93 return GetOnlyNumber(WebSource.Substring(match.Index + Attributes[5].Length, 5));
94 }
95 private string GetLessonID()//6
96 {
97 return GetOnlyNumber(WebSource.Substring(match.Index + Attributes[6].Length, 5));
98 }
99 private string GetOnlyNumber(string unprocessed)
100 {
101 string result = "";
102 foreach (char item in unprocessed)
103 {
104 if (Char.IsNumber(item))
105 {
106 result += item;
107 }
108 }
109 return result;
110 }
111 private void FinishAddressBuild()
112 {
113 string[] Address = new string[16];
114 Address[0] = "http://222.28.61.102/HepStudent/Ajax/ScoreAjax.ashx?Math=0.8867987910421455&levelSequence=";
115 Address[1] = Convert.ToString(Convert.ToDouble(Informations[0]) + 1);
116 Address[2] = "&unitSequence=";
117 Address[3] = Convert.ToString(Convert.ToDouble(Informations[1]) - 1);
118 Address[4] = "§ionSequence=";
119 Address[5] = Informations[2];
120 Address[6] = "§ionName=";
121 Address[7] = Informations[3];
122 if (Informations[4] == "")
123 {
124 Address[8] = "";
125 }
126 else
127 {
128 Address[8] = "+" + Informations[4];
129 }
130 Address[9] = "&topictype=6&score=80&rolea=0&roleb=0§ionID=";
131 Address[10] = Informations[6];
132 Address[11] = "&unitid=";
133 Address[12] = Informations[5];
134 Address[13] = "&passScore=20&timeLimited=00%3A10%3A00&levelID=";
135 Address[14] = Convert.ToString(Convert.ToDouble(Informations[0]) + 1);
136 Address[15] = "&duration=00%3A00%3A05&highWords=&lowWords=&pScore=%E8%89%AF&rScore=%E5%B7%AE&fScore=%E8%89%AF&sScore=%E5%B7%AE&tScore=%E8%89%AF";
137 StringBuilder WebAddress = new StringBuilder();
138 foreach (var item in Address)
139 {
140 WebAddress.Append(item);
141 }
142 FinishAddress = WebAddress.ToString();
143 }
144 }
前端代碼:
1 <Window x:Class="Redemption.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 Title="救贖---------By AuroraDysis" Height="500" Width="800" Background="LightBlue"> 5 <Grid> 6 <Grid.RowDefinitions> 7 <RowDefinition Height="Auto"></RowDefinition> 8 <RowDefinition Height="Auto"></RowDefinition> 9 <RowDefinition></RowDefinition> 10 </Grid.RowDefinitions> 11 <Grid Grid.Row="0"> 12 <Grid.ColumnDefinitions> 13 <ColumnDefinition Width="*"></ColumnDefinition> 14 <ColumnDefinition Width="Auto"></ColumnDefinition> 15 <ColumnDefinition Width="Auto"></ColumnDefinition> 16 <ColumnDefinition Width="Auto"></ColumnDefinition> 17 </Grid.ColumnDefinitions> 18 <TextBox x:Name="url_text" Grid.Row="0" Grid.Column="0" Background="LightGray" Margin="3" FontSize="24"></TextBox> 19 <Button Grid.Column="1" Margin="3">Close</Button> 20 <Button Grid.Column="2" Margin="3" Click="Button_Click">Home</Button> 21 <Button Background="Firebrick" Grid.Column="3" Margin="3" FontSize="22" Click="Button_Click_1">Finish</Button> 22 </Grid> 23 <Grid Grid.Row="1"> 24 <Grid.ColumnDefinitions> 25 <ColumnDefinition></ColumnDefinition> 26 <ColumnDefinition></ColumnDefinition> 27 <ColumnDefinition></ColumnDefinition> 28 <ColumnDefinition></ColumnDefinition> 29 <ColumnDefinition></ColumnDefinition> 30 <ColumnDefinition></ColumnDefinition> 31 <ColumnDefinition></ColumnDefinition> 32 <ColumnDefinition Width="2*"></ColumnDefinition> 33 <ColumnDefinition></ColumnDefinition> 34 <ColumnDefinition></ColumnDefinition> 35 <ColumnDefinition></ColumnDefinition> 36 <ColumnDefinition></ColumnDefinition> 37 <ColumnDefinition></ColumnDefinition> 38 <ColumnDefinition></ColumnDefinition> 39 </Grid.ColumnDefinitions> 40 <TextBlock Grid.Column="0" Width="Auto">Level:</TextBlock> 41 <TextBlock x:Name="tb_Level" Grid.Column="1"></TextBlock> 42 <TextBlock Grid.Column="2" Width="Auto">Unit:</TextBlock> 43 <TextBlock x:Name="tb_Unit" Grid.Column="3"></TextBlock> 44 <TextBlock Grid.Column="4" Width="Auto">LessonNumber:</TextBlock> 45 <TextBlock x:Name="tb_LessonNumber" Grid.Column="5"></TextBlock> 46 <TextBlock Grid.Column="6" Width="Auto">LessonName:</TextBlock> 47 <TextBlock x:Name="tb_LessonName" Grid.Column="7"></TextBlock> 48 <TextBlock Grid.Column="8" Width="Auto">ExtraName</TextBlock> 49 <TextBlock x:Name="tb_ExtraName" Grid.Column="9"></TextBlock> 50 <TextBlock Grid.Column="10" Width="Auto">UnitID</TextBlock> 51 <TextBlock x:Name="tb_UnitID" Grid.Column="11"></TextBlock> 52 <TextBlock Grid.Column="12" Width="Auto">SectionID</TextBlock> 53 <TextBlock x:Name="tb_SectionID" Grid.Column="13"></TextBlock> 54 </Grid> 55 <WebBrowser x:Name="webbrowser" Grid.Row="2" LoadCompleted="webbrowser_LoadCompleted"></WebBrowser> 56 </Grid> 57 </Window>
1 public partial class MainWindow : Window
2 {
3 bool flag = false;
4 public MainWindow()
5 {
6 InitializeComponent();
7 Home();
8 }
9 private void Home()
10 {
11 Uri homeUri = new Uri("http://222.28.61.102/HepStudent/Login.aspx");
12 webbrowser.Navigate(homeUri);
13 url_text.Text = "http://222.28.61.102/HepStudent/Login.aspx";
14 }
15
16 private void Button_Click(object sender, RoutedEventArgs e)
17 {
18 Home();
19 }
20 private string GetWebSource()
21 {
22 mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webbrowser.Document;
23 return doc.body.innerHTML;
24 }
25 //level, unit, lessonnumber, lessonname, extranumber, unitID, SectionID
26
27 private void InToOut(string[] informations)
28 {
29 List<TextBlock> Show = new List<TextBlock>() { tb_Level, tb_Unit, tb_LessonNumber, tb_LessonName, tb_ExtraName, tb_UnitID, tb_SectionID };
30 for (int index = 0; index < informations.Length; index++)
31 {
32 Show[index].Text = informations[index];
33 }
34 }
35 private void Button_Click_1(object sender, RoutedEventArgs e)
36 {
37 BottomProcess inbox = new BottomProcess(GetWebSource());
38 if (!inbox.Confirm)
39 {
40 this.Close();
41 }
42 InToOut(inbox.Informations);
43 webbrowser.Navigate(inbox.FinishAddress);
44 flag = true;
45 }
46 private void webbrowser_LoadCompleted(object sender, NavigationEventArgs e)
47 {
48 url_text.Text = webbrowser.Source.ToString();
49 if (flag)
50 {
51 webbrowser.GoBack();
52 flag = false;
53 }
54 }
55 }
界面
1 <Window x:Class="Redemption.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 Title="救贖---------By AuroraDysis" Height="500" Width="800" Background="LightBlue"> 5 <Grid> 6 <Grid.RowDefinitions> 7 <RowDefinition Height="Auto"></RowDefinition> 8 <RowDefinition Height="Auto"></RowDefinition> 9 <RowDefinition></RowDefinition> 10 </Grid.RowDefinitions> 11 <Grid Grid.Row="0"> 12 <Grid.ColumnDefinitions> 13 <ColumnDefinition Width="*"></ColumnDefinition> 14 <ColumnDefinition Width="Auto"></ColumnDefinition> 15 <ColumnDefinition Width="Auto"></ColumnDefinition> 16 <ColumnDefinition Width="Auto"></ColumnDefinition> 17 </Grid.ColumnDefinitions> 18 <TextBox x:Name="url_text" Grid.Row="0" Grid.Column="0" Background="LightGray" Margin="3" FontSize="24"></TextBox> 19 <Button Grid.Column="1" Margin="3">Close</Button> 20 <Button Grid.Column="2" Margin="3" Click="Button_Click">Home</Button> 21 <Button Background="Firebrick" Grid.Column="3" Margin="3" FontSize="22" Click="Button_Click_1">Finish</Button> 22 </Grid> 23 <Grid Grid.Row="1"> 24 <Grid.ColumnDefinitions> 25 <ColumnDefinition></ColumnDefinition> 26 <ColumnDefinition></ColumnDefinition> 27 <ColumnDefinition></ColumnDefinition> 28 <ColumnDefinition></ColumnDefinition> 29 <ColumnDefinition></ColumnDefinition> 30 <ColumnDefinition></ColumnDefinition> 31 <ColumnDefinition></ColumnDefinition> 32 <ColumnDefinition Width="2*"></ColumnDefinition> 33 <ColumnDefinition></ColumnDefinition> 34 <ColumnDefinition></ColumnDefinition> 35 <ColumnDefinition></ColumnDefinition> 36 <ColumnDefinition></ColumnDefinition> 37 <ColumnDefinition></ColumnDefinition> 38 <ColumnDefinition></ColumnDefinition> 39 </Grid.ColumnDefinitions> 40 <TextBlock Grid.Column="0" Width="Auto">Level:</TextBlock> 41 <TextBlock x:Name="tb_Level" Grid.Column="1"></TextBlock> 42 <TextBlock Grid.Column="2" Width="Auto">Unit:</TextBlock> 43 <TextBlock x:Name="tb_Unit" Grid.Column="3"></TextBlock> 44 <TextBlock Grid.Column="4" Width="Auto">LessonNumber:</TextBlock> 45 <TextBlock x:Name="tb_LessonNumber" Grid.Column="5"></TextBlock> 46 <TextBlock Grid.Column="6" Width="Auto">LessonName:</TextBlock> 47 <TextBlock x:Name="tb_LessonName" Grid.Column="7"></TextBlock> 48 <TextBlock Grid.Column="8" Width="Auto">ExtraName</TextBlock> 49 <TextBlock x:Name="tb_ExtraName" Grid.Column="9"></TextBlock> 50 <TextBlock Grid.Column="10" Width="Auto">UnitID</TextBlock> 51 <TextBlock x:Name="tb_UnitID" Grid.Column="11"></TextBlock> 52 <TextBlock Grid.Column="12" Width="Auto">SectionID</TextBlock> 53 <TextBlock x:Name="tb_SectionID" Grid.Column="13"></TextBlock> 54 </Grid> 55 <WebBrowser x:Name="webbrowser" Grid.Row="2" LoadCompleted="webbrowser_LoadCompleted"></WebBrowser> 56 </Grid> 57 </Window>
求各路大神指點