程式設計 作業一 【學生管理系統】

一、 簡介:

你現在在系辦打工,蔡姐要你幫忙把學生的資料給電腦化。請寫一個「學生管理系統」,這個系統要能夠:
  1. 加入一個學生。
  2. 修改某位學生的資料。
  3. 列出所有的學生資料。
  4. 清除掉所有的學生資料。
學生的資料包括:
  1. 學號:為8位數的數字。
  2. 姓名:可能是中文或英文,長度在10以內。
  3. 性別:男生或女生。
  4. 生日:由年、月、日組成。
  5. 電話:為10位數的數字,09xxxxxxxx。

二、 基本要求

  1. 請使用struct來包裝學生的資料,不要用class。(-20)
  2. 要有「新增」、「修改」、「全部列出」、「全部刪除」的功能(各-5)。
  3. 程式必須根據功能,分割成函式,使用正確的參數與回傳值。(-20)。
  4. 範例程式是用if…else if…else判斷使用者輸入,請用switch改寫(-10)。
  5. 達成以上功能,則可拿到基本分數75分,否則會扣括號裡的分數。

三、 參考架構:

你不一定要照這樣寫。如果你有更棒的寫法,告訴助教你的想法,還可以得到額外的加分。
struct Student
{
	??? ID; 		// 學號
	??? name;	// 姓名
	??? sex;		// 性別
	??? birthday;	// 生日
	??? phone;	// 電話
};
/*
在這裡會遇到的問題:你該用什麼資料型態去記錄呢?
用整數(int)?字元陣列(char []),長度要多長?字串類別(class)?
性別又該怎麼記?用0/1代表,還是用’m’/’f’代表?
生日又該怎麼記?用另一個struct如何?譬如:
struct Birthday
{
	int year, month, date;
}
*/

??? addData(???);			// 新增一筆資料
??? modifyData(???);		// 修改一筆資料
??? printOneData(???);		// 印出一筆資料
??? printData(???);			// 印出所有資料
??? clearData(???);			// 清除所有資料
??? deleteOneData(???);		// 刪除一筆資料(加分項目)
??? sortData(???);			// 排序資料(加分項目)
??? filterData(???);			// 篩選特定資料(加分項目)
/*
任何你想得出來的功能,都請獨立為函式
這裡的問題是,功能的切割,函式的參數與回傳值要怎麼給?
*/

int main()
{
	Student students[???];
	// 這個陣列你該怎麼定義它的大小?有沒有更好的寫法?

	迴圈
{
		提示使用者輸入;
		接受使用者的輸入;
		根據使用者輸入,呼叫適當的函式;
	}

	return 0;
}
四、 加分條件
  1. 錯誤偵測:如果使用者輸入了錯誤的資料,能提示使用者並重新輸入。
  2. 減少限制:在範例裡,最多只能儲存10筆資料。
  3. 進一步的資料處理:
  4. 任何你能想出來的東西,你都可以寫出來,跟助教討分數。