Board logo

標題: C# 7 603 員工薪資計算 [打印本頁]

作者: may    時間: 2024-1-8 22:48     標題: C# 7 603 員工薪資計算

TQC+ 物件導向程式語言
最新一次更新時間:2024-01-05 17:49:11

1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS06資料夾中的CSD06.cs進行編寫。依下列題意進行作答:為全職及兼職店員定義及計算薪資,使輸出值符合題意要求。檔案名稱請另存新檔為CSA06.cs,儲存於C:\ANS.CSF\CS06資料夾,再進行評分。

2. 設計說明:
專案已內含名為clerk的抽象類別,類別內含name,rate及hours屬性,分別代表員工姓名、每小時標準工資及工作時數,以及包含salary方法,功能是計算薪資。
請繼承clerk類別,建立兩個類別,名稱分別為PartTime及FullTime,代表兼職及全職員工。兼職員工的薪資計算公式是「每小時標準工資 × 工作時數」、全職員工的薪資計算公式是「8 × 每小時標準工資 + ((工作數 - 8) × 每小時標準工資 × 0.9)」。
請撰寫程式,讓使用者依序輸入以單一個半形空格隔開的員工資料,分別為員工性質、姓名、每小時標準工資及工作時數,輸入的第一個字母p代表兼職,f代表全職。姓名為不含空格的英文字串。標準工資及工作時數皆為大於等於0。若輸入不在指定範圍的資料,請輸出【error】。
輸出格式為【{員工性質} {員工姓名} {員工薪資}】,性質、姓名與工資中間各一個半形空格,如:【PartTime john 1200】。
* 提示:{名稱} 用來表示該名稱的變數,如:{員工薪資}=1200。
3. 輸入輸出:
輸入說明
員工性質 姓名 每小時標準工資 工作時數
(資料之間以半形空格隔開)

輸出說明
格式化輸出員工薪資資料(輸出最後一行後不自動換行)

範例輸入1
p john 150 8
範例輸出1
PartTime john 1200

範例輸入2
f peter 250 8
範例輸出2
FullTime peter 2000

範例輸入3
a john 150 8
範例輸出3
error

4. 評分項目:
(1) 符合設計說明輸出正確格式        配分20
作者: may    時間: 2024-1-9 09:50

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7. namespace CSA06
  8. {
  9.     class CSA06
  10.     {
  11.         static void Main(string[] args)
  12.         {

  13.             try
  14.             {
  15.                 string data = Console.ReadLine();
  16.                 string[] str = data.Split(' ');
  17.                 if (str.Length != 4) { throw new Exception(); }
  18.                 string workType = str[0].ToLower();
  19.                 if (workType != "p" && workType != "f") { throw new Exception(); }
  20.                 int rate = int.Parse(str[2]);
  21.                 if (rate < 0) { throw new Exception(); }
  22.                 int hours = int.Parse(str[3]);
  23.                 if (hours < 0) { throw new Exception(); }

  24.                 if (workType == "p")
  25.                 {
  26.                     PartTime pt = new PartTime(str[1], rate, hours); //TODO
  27.                     Console.Write("PartTime {0} {1}", str[1].ToString(), pt.salary());
  28.                 }
  29.                 if (workType == "f")
  30.                 {
  31.                     FullTime ft = new FullTime(str[1], rate, hours); //TODO
  32.                     Console.Write("FullTime {0} {1}", str[1].ToString(), ft.salary());
  33.                 }
  34.             }
  35.             catch
  36.             {
  37.                 Console.Write("error");
  38.             }
  39.             Console.ReadKey();
  40.         }

  41.     }
  42.     abstract class clerk
  43.     {
  44.         public String name = "";
  45.         public int rate = 0;
  46.         public int hours = 0;
  47.         public clerk(String n, int r, int t)
  48.         {
  49.             name = n;
  50.             rate = r;
  51.             hours = t;
  52.         }
  53.         public abstract double salary();
  54.     }

  55.     //TODO  --class PartTime
  56.     class PartTime : clerk
  57.     {
  58.         public PartTime(String name, int rate, int time) : base(name, rate, time)
  59.         {
  60.         }
  61.         public override double salary()
  62.         {
  63.             return this.rate * this.hours;
  64.         }
  65.     }

  66.     //TODO  --class FullTime
  67.     class FullTime : clerk
  68.     {
  69.         public FullTime(String name, int rate, int time) : base(name, rate, time)
  70.         {
  71.         }
  72.         public override double salary()
  73.         {
  74.             return 8 * this.rate
  75.                 + (this.hours - 8) * this.rate * 0.9;
  76.         }
  77.     }
  78. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2