面向對象程式設計第三次bolg

来源:https://www.cnblogs.com/zw-1/archive/2023/12/07/17881331.html
-Advertisement-
Play Games

大家好,我是棧長。 Nacos 2.3.0 前幾天正式發佈了,新增了不少實用性的新功能,真是史上最強版本。 Nacos 2.3.0 還真是一個比較重要的大版本,因為它涉及了太多重大更新,今天棧長給大家來解讀下。 Nacos 先掃個盲: Nacos 一個用於構建雲原生應用的動態服務發現、配置管理和服務 ...


前言

本次博客針對面向對象程式設計的課程所發的PTA作業7,8以及期末考試中的面向對象編程題的分析和總結,重點介紹課程成績統計程式系列題目以及期末考試的編程題。

PTA第七次作業

在這次作業中7-1、7-2內容和考點相同,在此我分析一下7-2Hashmap的排序這個問題。

7-2 容器-HashMap-排序 分數 10 作者 蔡軻 單位 南昌航空大學

輸入多個學生的成績信息,包括:學號、姓名、成績。

學號是每個學生的唯一識別號,互不相同。

姓名可能會存在重覆。

要求:使用HashMap存儲學生信息。

輸入格式:

輸入多個學生的成績信息,每個學生的成績信息格式:學號+英文空格+姓名+英文空格+成績

以“end”為輸入結束標誌

輸出格式:

按學號從大到小的順序輸出所有學生信息,每個學生信息的輸出格式:學號+英文空格+姓名+英文空格+成績

輸入樣例:

在這裡給出一組輸入。例如:

20201124 張少軍 83
20201136 李四 78
20201118 鄭覺先 80
end

輸出樣例:

在這裡給出相應的輸出。例如:

20201136 李四 78
20201124 張少軍 83
20201118 鄭覺先 80
這道題目的考點在於Hashmap容器的使用以及排序函數的使用,我的源代碼如下:
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        HashMap<String,String> hashMap = new HashMap<String,String>();
        while(true)
        {
            String str  =  input.nextLine();
            if(str.equals("end"))
            {
                break;
            }
            String str1[] = str.split(" ");
            String no = str1[0];
            String name = str1[1];
            String grade = str1[2];
            hashMap.put(no,name+" "+grade);
        }
        List<String> studentIds = new ArrayList<>(hashMap.keySet());

        // 按學號從大到小排序
        Collections.sort(studentIds, (s1, s2) -> Integer.parseInt(s2) - Integer.parseInt(s1));

        // 輸出學生信息
        for (String studentId : studentIds) {
            String studentInfo = hashMap.get(studentId);
            System.out.println(studentId + " " + studentInfo);
        }
    }
}
排序
 

  本次的代碼較短且複雜度很低,在此不贅述其類圖以及圈複雜度分析。

這次作業中難度較大的是課程成績統計程式-2,下麵是這道題目的介紹和分析。

7-3 課程成績統計程式-2 分數 60 作者 蔡軻 單位 南昌航空大學

課程成績統計程式-2在第一次的基礎上增加了實驗課,以下加粗字體顯示為本次新增的內容。

某高校課程從性質上分為:必修課、選修課、實驗課,從考核方式上分為:考試、考察、實驗。

考試的總成績由平時成績、期末成績分別乘以權重值得出,比如平時成績權重0.3,期末成績權重0.7,總成績=平時成績*0.3+期末成績*0.7。

考察的總成績直接等於期末成績

實驗的總成績等於課程每次實驗成績的平均分

必修課的考核方式必須為考試,選修課可以選擇考試、考察任一考核方式。實驗課的成績必須為實驗。

1、輸入:

包括課程、課程成績兩類信息。

課程信息包括:課程名稱、課程性質、考核方式(可選,如果性質是必修課,考核方式可以沒有)三個數據項。

課程信息格式:課程名稱+英文空格+課程性質+英文空格+考核方式

課程性質輸入項:必修、選修、實驗

考核方式輸入選項:考試、考察、實驗

考試/考查課程成績信息包括:學號、姓名、課程名稱、平時成績(可選)、期末成績

考試/考查課程信息格式:學號+英文空格+姓名+英文空格+課程名稱+英文空格+平時成績+英文空格+期末成績

實驗課程成績信息包括:學號、姓名、課程名稱、實驗次數、每次成績

實驗次數至少4次,不超過9次

實驗課程信息格式:學號+英文空格+姓名+英文空格+課程名稱+英文空格+實驗次數+英文空格+第一次實驗成績+...+英文空格+最後一次實驗成績

以上信息的相關約束:

1)平時成績和期末成績的權重預設為0.3、0.7

2)成績是整數,不包含小數部分,成績的取值範圍是【0,100】

3)學號由8位數字組成

4)姓名不超過10個字元

5)課程名稱不超過10個字元

6)不特別輸入班級信息,班級號是學號的前6位。

2、輸出:

輸出包含三個部分,包括學生所有課程總成績的平均分、單門課程成績平均分、單門課程總成績平均分、班級所有課程總成績平均分。

為避免誤差,平均分的計算方法為累加所有符合條件的單個成績,最後除以總數。

1)學生課程總成績平均分按學號由低到高排序輸出

格式:學號+英文空格+姓名+英文空格+總成績平均分

如果某個學生沒有任何成績信息,輸出:學號+英文空格+姓名+英文空格+"did not take any exams"

2)單門課程成績平均分分為三個分值:平時成績平均分(可選)、期末考試平均分、總成績平均分,按課程名稱的字元順序輸出

考試/考察課程成績格式:課程名稱+英文空格+平時成績平均分+英文空格+期末考試平均分+英文空格+總成績平均分

實驗課成績格式:課程名稱+英文空格+總成績平均分

如果某門課程沒有任何成績信息,輸出:課程名稱+英文空格+"has no grades yet"

3)班級所有課程總成績平均分按班級由低到高排序輸出

格式:班級號+英文空格+總成績平均分

如果某個班級沒有任何成績信息,輸出:班級名稱+英文空格+ "has no grades yet"

異常情況:

1)如果解析某個成績信息時,課程名稱不在已輸入的課程列表中,輸出:學號+英文空格+姓名+英文空格+":"+課程名稱+英文空格+"does not exist"

2)如果解析某個成績信息時,輸入的成績數量和課程的考核方式不匹配,輸出:學號+英文空格+姓名+英文空格+": access mode mismatch"

以上兩種情況如果同時出現,按第一種情況輸出結果。

3)如果解析某個課程信息時,輸入的課程性質和課程的考核方式不匹配,輸出:課程名稱+" : course type & access mode mismatch"

4)格式錯誤以及其他信息異常如成績超出範圍等,均按格式錯誤處理,輸出"wrong format"

5)若出現重覆的課程/成績信息,只保留第一個課程信息,忽略後面輸入的。

信息約束:

1)成績平均分只取整數部分,小數部分丟棄

參考類圖(與第一次相同,其餘內容自行補充):


e724fa4193aa9ee32e78a68cd96fd6df_22401e04-c501-4b28-bb65-dabe39d374e7.png

 

輸入樣例1:

在這裡給出一組輸入。例如:

java 實驗 實驗
20201103 張三 java 4 70 80 90
end

輸出樣例1:

在這裡給出相應的輸出。例如:

20201103 張三 : access mode mismatch
20201103 張三 did not take any exams
java has no grades yet
202011 has no grades yet

輸入樣例2:

在這裡給出一組輸入。例如:

java 實驗 實驗
20201103 張三 java 3 70 80 90
end

輸出樣例2:

在這裡給出相應的輸出。例如:

wrong format
java has no grades yet

輸入樣例3:

在這裡給出一組輸入。例如:

java 必修 實驗
20201103 張三 java 3 70 80 90 100
end

輸出樣例3:

在這裡給出相應的輸出。例如:

java : course type & access mode mismatch
wrong format

輸入樣例4:

在這裡給出一組輸入。例如:

java 必修 實驗
20201103 張三 java 4 70 80 90 105
end

輸出樣例4:

在這裡給出相應的輸出。例如:

java : course type & access mode mismatch
wrong format

 

輸入樣例5:

在這裡給出一組輸入。例如:

java 選修 考察
C語言 選修 考察
java實驗 實驗 實驗
編譯原理 必修 考試
20201101 王五 C語言 76
20201216 李四 C語言 78
20201307 張少軍 編譯原理 82 84
20201103 張三 java實驗 4 70 80 90 100
20201118 鄭覺先 java 80
20201328 劉和宇 java 77
20201220 朱重九 java實驗 4 60 60 80 80
20201132 王萍 C語言 40
20201302 李夢涵 C語言 68
20201325 崔瑾 編譯原理 80 84
20201213 黃紅 java 82
20201209 趙仙芝 java 76
end

輸出樣例5:

在這裡給出相應的輸出。例如:

20201101 王五 76
20201103 張三 85
20201118 鄭覺先 80
20201132 王萍 40
20201209 趙仙芝 76
20201213 黃紅 82
20201216 李四 78
20201220 朱重九 70
20201302 李夢涵 68
20201307 張少軍 83
20201325 崔瑾 82
20201328 劉和宇 77
C語言 65 65
java 78 78
java實驗 77
編譯原理 81 84 82
202011 70
202012 76
202013 77

這個題目是課程成績統計程式-1的升級,添加了實驗課的部分,修改了一部分輸入輸出以及錯誤的輸出,總體來說相比較第一次改動不大,以下是我的代碼:
  1 import java.util.*;
  2 import java.text.Collator;
  3 class Crouse{
  4     String name;
  5     String nature;
  6     String fangshi;
  7     ArrayList<Integer> pgrade = new ArrayList<>();
  8     ArrayList<Integer> qgrade = new ArrayList<>();
  9   ArrayList<Integer> grade = new ArrayList<>();
 10     public Crouse(String name, String nature, String fangshi) {
 11         this.name = name; // 將參數賦值給成員變數
 12         this.nature = nature; // 將參數賦值給成員變數
 13         this.fangshi = fangshi; // 將參數賦值給成員變數
 14     }
 15     public int average()
 16     {
 17         int total=0;
 18         for (int i:grade)
 19         {
 20             total+=i;
 21         }
 22         return total/grade.size();
 23     }
 24     public int average1()
 25     {
 26         int total=0;
 27         for (int i:pgrade)
 28         {
 29             total+=i;
 30         }
 31         return total/pgrade.size();
 32     }
 33     public int average2()
 34     {
 35         int total=0;
 36         for (int i:qgrade)
 37         {
 38             total+=i;
 39         }
 40         return total/qgrade.size();
 41     }
 42 
 43 }
 44 class Student {
 45     String id;
 46     String name;
 47     HashMap<String,Integer> crouse;
 48     public Student(String id, String name) {
 49         this.id = id; // 將參數賦值給成員變數
 50         this.name = name; // 將參數賦值給成員變數
 51         this.crouse = new HashMap<>();
 52     }
 53     public int averagegrade()
 54     {
 55         int total=0;
 56         for (Integer grade:crouse.values()) {
 57             total += grade;
 58         }
 59         return total/ crouse.size();
 60     }
 61 }
 62 class Class{
 63     String cid;
 64     ArrayList<Student> students = new ArrayList<>();
 65     public Class(String cid)
 66     {
 67         this.cid=cid;
 68     }
 69     public int average()
 70     {
 71         int total=0;
 72         for (Student s:students)
 73         {
 74             total+=s.averagegrade();
 75         }
 76         return total/students.size();
 77     }
 78 }
 79 class Holder{
 80     ArrayList<Crouse> clist = new ArrayList<>();
 81     ArrayList<Student> slist = new ArrayList<>();
 82     ArrayList<Class> Clist = new ArrayList<>();
 83 
 84     public Crouse searth(String name)
 85     {
 86         int falg =0;
 87         int i;
 88         for ( i = 0; i < clist.size(); i++) {
 89             if(clist.get(i).name.equals(name))
 90             {
 91                 falg++;
 92                 break;
 93             }
 94         }
 95         if(falg!=0)
 96         {
 97             return clist.get(i);
 98         }
 99         else return null;
100     }
101 }
102 public class Main {
103     public static void main(String[] args) {
104         Scanner input = new Scanner(System.in);
105         Holder holder = new Holder();
106         while (true) {
107             try {
108                 String str = input.nextLine();
109                 if (str.equals("end")) {
110                     break;
111                 }
112                 String[] str1 = str.split(" ");
113                 if (str1.length == 3) {
114                     if (str1[1].equals("必修")) {
115                         if (str1[2].equals("考試")) {
116                             String name = str1[0];
117                             String nature = str1[1];
118                             String fangshi = str1[2];
119                             Crouse crouse = null;
120                             for (Crouse c:holder.clist)
121                             {
122                                 if(c.name.equals(name)) {
123                                     crouse = c;
124                                     break;
125                                 }
126                             }
127                             if(crouse==null) {
128                                 crouse = new Crouse(name, nature, fangshi);
129                                 holder.clist.add(crouse);
130                             }
131                         } else {
132                             System.out.println(str1[0] + " : course type & access mode mismatch");
133                         }
134                     } else if (str1[1].equals("選修")) {
135                         if (str1[2].equals("考試")) {
136                             String name = str1[0];
137                             String nature = str1[1];
138                             String fangshi = str1[2];
139                             Crouse crouse = null;
140                             for (Crouse c:holder.clist)
141                             {
142                                 if(c.name.equals(name)) {
143                                     crouse = c;
144                                     break;
145                                 }
146                             }
147                             if(crouse==null) {
148                                 crouse = new Crouse(name, nature, fangshi);
149                                 holder.clist.add(crouse);
150                             }
151                         } else if (str1[2].equals("考察")) {
152                             String name = str1[0];
153                             String nature = str1[1];
154                             String fangshi = str1[2];
155                             Crouse crouse = null;
156                             for (Crouse c:holder.clist)
157                             {
158                                 if(c.name.equals(name)) {
159                                     crouse = c;
160                                     break;
161                                 }
162                             }
163                             if(crouse==null) {
164                                 crouse = new Crouse(name, nature, fangshi);
165                                 holder.clist.add(crouse);
166                             }
167                         } else {
168                             System.out.println(str1[0] + " : course type & access mode mismatch");
169                         }
170                     } else if (str1[1].equals("實驗")) {
171                         if (str1[2].equals("實驗")) {
172                             String name = str1[0];
173                             String nature = str1[1];
174                             String fangshi = str1[2];
175                             Crouse crouse = null;
176                             for (Crouse c:holder.clist)
177                             {
178                                 if(c.name.equals(name)) {
179                                     crouse = c;
180                                     break;
181                                 }
182                             }
183                             if(crouse==null) {
184                                 crouse = new Crouse(name, nature, fangshi);
185                                 holder.clist.add(crouse);
186                             }
187                         } else {
188                             System.out.println(str1[0] + " : course type & access mode mismatch");
189                         }
190                     }
191                 } else if (str1.length == 4)//選修,考察
192                 {
193                     if (Integer.parseInt(str1[3]) > 0 && Integer.parseInt(str1[3]) < 100) {
194                         if (holder.searth(str1[2]) != null) {
195                             String stuid = str1[0];
196                             String sname = str1[1];
197                             if (holder.searth(str1[2]).nature.equals("選修")) {
198                                 Student student = null;
199                                 for (Student s:holder.slist)
200                                 {
201                                     if(s.name.equals(sname))
202                                     {
203                                         student = s;
204                                         break;
205                                     }
206                                 }
207                                 String cid = stuid.substring(0, 6);
208                                 Class cla = null;
209                                 for (Class c : holder.Clist) {
210                                     if (c.cid.equals(cid)) {
211                                         cla = c;
212                                         break;
213                                     }
214                                 }
215                                 if (cla == null) {
216                                     cla = new Class(cid);
217                                     holder.Clist.add(cla);
218                                 }
219                                 if(student==null) {
220                                     student = new Student(stuid,sname);
221                                     student.crouse.put(str1[2], Integer.parseInt(str1[3]));
222                                     cla.students.add(student);
223                                     holder.slist.add(student);
224                                     holder.searth(str1[2]).grade.add(Integer.parseInt(str1[3]));
225                                 }
226                                 else {
227                                     student.crouse.put(str1[2], Integer.parseInt(str1[3]));
228                                     holder.searth(str1[2]).grade.add(Integer.parseInt(str1[3]));
229                                 }
230                             } else
231                                 System.out.println(stuid + " " + sname + " " + ": access mode mismatch");
232                         } else
233                             System.out.println(str1[0] + " " + str1[1] + " " + ":" + str1[2] + " " + "does not exist");
234                     } else System.out.println("wrong format");
235                 } else if (str1.length == 5)//必修或選修考試
236                 {
237                     if (holder.searth(str1[2]) != null) {
238                         String stuid = str1[0];
239                         String sname = str1[1];
240                         int grade = (int) (Integer.parseInt(str1[3]) * 0.3 + Integer.parseInt(str1[4]) * 0.7);
241                         Student student = null;
242                         for (Student s:holder.slist)
243                         {
244                             if(s.name.equals(sname))
245                             {
246                                 student = s;
247                                 break;
248                             }
249                         }
250 
251                         String cid = stuid.substring(0, 6);
252                         Class cla = null;
253                         for (Class c : holder.Clist) {
254                             if (c.cid.equals(cid)) {
255                                 cla = c;
256                                 break;
257                             }
258                         }
259                         if (cla == null) {
260                             cla = new Class(cid);
261                             holder.Clist.add(cla);
262                         }
263                         if(student==null) {
264                             student = new Student(stuid,sname);
265                             student.crouse.put(str1[2], grade);
266                             cla.students.add(student);
267                             holder.slist.add(student);
268                             holder.searth(str1[2]).grade.add(grade);
269                             holder.searth(str1[2]).pgrade.add(Integer.parseInt(str1[3]));
270                             holder.searth(str1[2]).qgrade.add(Integer.parseInt(str1[4]));
271                         }
272                         else {
273                             student.crouse.put(str1[2], grade);
274                             holder.searth(str1[2]).grade.add(grade);
275                             holder.searth(str1[2]).pgrade.add(Integer.parseInt(str1[3]));
276                             holder.searth(str1[2]).qgrade.add(Integer.parseInt(str1[4]));
277                         }
278                     } else
279                         System.out.println(str1[0] + " " + str1[1] + " " + ":" + str1[2] + " " + "does not exist");
280                 } else if (Integer.parseInt(str1[3]) > 3 && Integer.parseInt(str1[3]) < 10)//實驗
281                 {
282                     int num = Integer.parseInt(str1[3]);
283                     int falg = 0;
284                     for (int i = 4; i < str1.length; i++) {
285                         if (Integer.parseInt(str1[i]) < 0 || Integer.parseInt(str1[i]) > 100)
286                             falg++;
287                     }
288                     if (falg == 0) {
289                         if (holder.searth(str1[2]) != null) {
290                             String stuid = str1[0];
291                             String sname = str1[1];
292                             int grade = 0;
293                             if (str1.length == 4 + num) {
294                                 for (int i = 4; i < 4 + num; i++) {
295                                     grade += Integer.parseInt(str1[i]);
296                                 }
297                                 grade = grade / 4;
298                                 Student student = null;
299                                 for (Student s:holder.slist)
300                                 {
301                                     if(s.name.equals(sname))
302                                     {
303                                         student = s;

              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在頁面佈局中,我們經常會遇到/使用這麼一類常見的佈局,也就是列表內容水平居中於容器中,像是這樣: <ul class="g-contaner"> <li></li> <li></li> </ul> ul { width: 500px; display: flex; flex-direction: r ...
  • 專欄分享:vue2源碼專欄,vue3源碼專欄,vue router源碼專欄,玩具項目專欄,硬核💪推薦🙌 歡迎各位ITer關註點贊收藏🌸🌸🌸 語法 傳入一個 getter 函數,返回一個預設不可手動修改的 ref 對象 const count = ref(1) const plusOne = ...
  • 快速啟動SpringBoot項目,包括引入spring-boot-starter-parent,@SpringBootApplication入口類註解、自動保存刷新pom.xml ...
  • Docker,一種可以將軟體打包到容器中併在任何環境中可靠運行的工具。但什麼是容器以及為什麼需要容器呢?今天就來一起學快速入門一下Docker吧!希望本文對您有所幫助。 假設您使用 Cobol 構建了一個在某種奇怪風格的 Linux 上運行的應用程式。您想與您的朋友分享這個應用程式,但他有一個完全不 ...
  • 從0到1,手把手帶你開發一款截屏工具ScreenCap,001版本,實現基本的截圖功能,實現全屏截圖,實現局部截圖,實現保存截圖,實現截圖另存為 ...
  • JavaScript是構建Web應用必學的一門編程語言,也是最受開發者歡迎的熱門語言之一。所以,如果您還不知道JavaScript的用處、特點的話,趕緊補充一下這塊基礎知識。 JavaScript 是一種高級、單線程、垃圾收集、解釋或即時編譯、基於原型、多範式、動態語言,具有非阻塞事件迴圈,因構建網 ...
  • 本文解釋為啥會有響應式編程,為什麼它在開發者中不太受歡迎,以及引入 Java 虛擬線程後它可能最終會消失。 命令式風格編程一直深受開發者喜愛,如 if-then-else、while 迴圈、函數和代碼塊等結構使代碼易理解、調試,異常易追蹤。然而,像所有好的東西一樣,通常也有問題。這種編程風格導致線程 ...
  • IDEA的遠程開發功能,可以將本地的編譯、構建、調試、運行等工作都放在遠程伺服器上執行,而本地僅運行客戶端軟體進行常規的開發操作即可,舊版本IDEA目前不支持該功能.,本例使用的是IDEA2023.2.5版本 下麵介紹如何在IDEA中設置遠程連接伺服器開發環境並結合Cpolar內網穿透工具實現無公網 ...
一周排行
    -Advertisement-
    Play Games
  • 在C#中使用SQL Server實現事務的ACID(原子性、一致性、隔離性、持久性)屬性和使用資料庫鎖(悲觀鎖和樂觀鎖)時,你可以通過ADO.NET的SqlConnection和SqlTransaction類來實現。下麵是一些示例和概念說明。 實現ACID事務 ACID屬性是事務處理的四個基本特征, ...
  • 我們在《SqlSugar開發框架》中,Winform界面開發部分往往也用到了自定義的用戶控制項,對應一些特殊的界面或者常用到的一些局部界面內容,我們可以使用自定義的用戶控制項來提高界面的統一性,同時也增強了使用的便利性。如我們Winform界面中用到的分頁控制項、附件顯示內容、以及一些公司、部門、菜單的下... ...
  • 在本篇教程中,我們學習瞭如何在 Taurus.MVC WebMVC 中進行數據綁定操作。我們還學習瞭如何使用 ${屬性名稱} CMS 語法來綁定頁面上的元素與 Model 中的屬性。通過這些步驟,我們成功實現了一個簡單的數據綁定示例。 ...
  • 是在MVVM中用來傳遞消息的一種方式。它是在MVVMLight框架中提供的一個實現了IMessenger介面的類,可以用來在ViewModel之間、ViewModel和View之間傳遞消息。 Send 接受一個泛型參數,表示要發送的消息內容。 Register 方法用於註冊某個對象接收消息。 pub ...
  • 概述:在WPF中,通過EventHandler可實現基礎和高級的UI更新方式。基礎用法涉及在類中定義事件,併在UI中訂閱以執行更新操作。高級用法藉助Dispatcher類,確保在非UI線程上執行操作後,通過UI線程更新界面。這兩種方法提供了靈活而可靠的UI更新機制。 在WPF(Windows Pre ...
  • 概述:本文介紹了在C#程式開發中如何利用自定義擴展方法測量代碼執行時間。通過使用簡單的Action委托,開發者可以輕鬆獲取代碼塊的執行時間,幫助優化性能、驗證演算法效率以及監控系統性能。這種通用方法提供了一種便捷而有效的方式,有助於提高開發效率和代碼質量。 在軟體開發中,瞭解代碼執行時間是優化程式性能 ...
  • 概述:Cron表達式是一種強大的定時任務調度工具,通過配置不同欄位實現靈活的時間規定。在.NET中,Quartz庫提供了簡便的方式配置Cron表達式,實現精準的定時任務調度。這種靈活性和可擴展性使得開發者能夠根據需求輕鬆地制定和管理定時任務,例如每天備份系統日誌或其他重要操作。 Cron表達式詳解 ...
  • 概述:.NET提供多種定時器,如System.Windows.Forms.Timer適用於UI,System.Web.UI.Timer用於Web,System.Diagnostics.Timer用於性能監控,System.Threading.Timer和System.Timers.Timer用於一般 ...
  • 問題背景 有同事聯繫我說,在生產環境上,訪問不了我負責的common服務,然後我去檢查common服務的health endpoint, 沒問題,然後我問了下異常,timeout導致的System.OperationCanceledException。那大概率是客戶端的問題,會不會是埠耗盡,用ne ...
  • 前言: 在本篇 Taurus.MVC WebMVC 入門開發教程的第四篇文章中, 我們將學習如何實現數據列表的綁定,通過使用 List<Model> 來展示多個數據項。 我們將繼續使用 Taurus.Mvc 命名空間,同時探討如何在視圖中綁定並顯示一個 Model 列表。 步驟1:創建 Model ...