標題:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace CSA06
{
class CSA06
{
static void Main(string[] args)
{
try
{
string data = Console.ReadLine();
string[] str = data.Split(' ');
if (str.Length != 4) { throw new Exception(); }
string workType = str[0].ToLower();
if (workType != "p" && workType != "f") { throw new Exception(); }
int rate = int.Parse(str[2]);
if (rate < 0) { throw new Exception(); }
int hours = int.Parse(str[3]);
if (hours < 0) { throw new Exception(); }
if (workType == "p")
{
PartTime pt = new PartTime(str[1], rate, hours); //TODO
Console.Write("PartTime {0} {1}", str[1].ToString(), pt.salary());
}
if (workType == "f")
{
FullTime ft = new FullTime(str[1], rate, hours); //TODO
Console.Write("FullTime {0} {1}", str[1].ToString(), ft.salary());
}
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
}
abstract class clerk
{
public String name = "";
public int rate = 0;
public int hours = 0;
public clerk(String n, int r, int t)
{
name = n;
rate = r;
hours = t;
}
public abstract double salary();
}
//TODO --class PartTime
class PartTime : clerk
{
public PartTime(String name, int rate, int time) : base(name, rate, time)
{
}
public override double salary()
{
return this.rate * this.hours;
}
}
//TODO --class FullTime
class FullTime : clerk
{
public FullTime(String name, int rate, int time) : base(name, rate, time)
{
}
public override double salary()
{
return 8 * this.rate
+ (this.hours - 8) * this.rate * 0.9;
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2