@圖靈不吃蘋果 #C++ 人員管理
@圖靈不吃蘋果
C++ 人員管理(帶註釋)
設計某小型公司的 employee(人員)類
1、類
1)employee 類:
基本資訊:編號、姓名、性別、出生日期、職位等;
出生日期使用自定義的 Date(日期)類;
其中:基本資訊為 private 屬性,成員函式為public 屬性;
多個建構函式:預設建構函式、帶引數的建構函式、帶預設引數的建構函式;
可以從外部訪問類成員的友員函式;
2)Date 類:成員變數:年、月、日成員函式:SetYear(int year)、SetMonth(int month)、SetDay(int day)GetYear()、GetMonth()、GetDay()
2、基本功能:
1)職工資訊的錄入;
2)職工資訊的顯示;
3)用物件陣列儲存已輸入的職工物件;
4)可以修改人員的基本資訊,如:姓名、職位等;
5)可以通過編號或姓名進行人員查詢;
[實驗提示]
1、注意帶引數的建構函式和帶預設引數的建構函式的宣告與定義;
2、定義employee 類的成員變數時,應注意變數型別的宣告;
3、在查詢時,通過申明成employee 類的友元函式來訪問類的成員變數;
[測試資料]
1、編號:10001 姓名:jack 出生日期:80 年11 月1 日 職位:普通
2、編號:10002 姓名:andy 出生日期:75 年1 月9 日 職位:經理
3、編號:10003 姓名:alex 出生日期:81 年4 月3 日 職位:祕書
4、編號:10005 姓名:lili 出生日期:82 年10 月1 日 職位:技師
程式碼部分
<標頭檔案employee.>
本來想設計一下連結串列,但是後來老是出問題…就懶得弄了
#pragma once
#include <ostream>
using namespace std;
class Date {
public:
void setYear(int ye);
void setMonth(int mon);
void setDay(int da);
int getYear();
int getMonth();
int getDay();
friend ostream& operator<<(ostream& out, Date&a);
private:
int year;
int month;
int day;
};
class employee {
public:
employee();
employee(int i);
void setID(int i);
void setName(string n);
void setBirth(Date b);
void setSexual(char s);
void setJob(string j);
//employee* next;
// void setNext(employee* next);
// employee* getNext();
void print();
private:
int id;
string name;
Date birth;
char sexual;
string job;
friend int findID(employee& p,int i);
friend int findName(employee& p, string s);
};
/*class List {
public:
void Input(employee* s);
List();
void bianli();
private:
employee* head;
};
*/
#pragma once
<employee.cpp>
#include "employee.h"
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <chrono> //時間庫函式
void Date::setYear(int ye)
{
this->year = ye;
}
void Date::setMonth(int mon)
{
this->month = mon;
}
void Date::setDay(int da)
{
this->day = da;
}
int Date::getYear()
{
return this->year;
}
int Date::getMonth()
{
return this->month;
}
int Date::getDay()
{
return this->day;
}
employee::employee()
{
id = 0;
sexual = 'm';
cout << "預設引數構造完成" << endl;
}
employee::employee(int i=10)
{
this->id = i;
this->name = "zhang";
this->sexual = 'm';
this->job = "員工";
cout << "帶預設引數的函式構造完成" << endl;
}
void employee::setID(int i)
{
this->id = i;
}
void employee::setName(string n)
{
this->name = n;
}
void employee::setBirth(Date b)
{
this->birth = b;
}
void employee::setSexual(char s)
{
this->sexual = s;
}
void employee::setJob(string j)
{
this->job = j;
}
/*void employee::setNext(employee* n)
{
next = n;
}
employee* employee::getNext()
{
return next;
}
*/
void employee::print()
{
cout << "編號: " << id << " 姓名: " << name << " 性別: " << sexual << endl;
cout << "出生日期: "<<birth;
cout <<" 職位 : " << job << endl;
}
ostream& operator<<(ostream& out, Date& a)
{
out << a.year << "年" << a.month << "月" << a.day << "日" ;
return out;
// TODO: 在此處插入 return 語句
}
int findID(employee& p,int i)
{
if (p.id == i) { return 0; }
else return -1;
}
int findName(employee& p, string s)
{
if (p.name == s)return 0;
else return -1;
}
/*ostream& operator<<(ostream& out, Date a)
{
out << Date::year << "年" << month << "月" << day << "日" << endl;
return out;
// TODO: 在此處插入 return 語句
}*/
/*void List::Input(employee* s)
{
employee* p = head;
while (p->getNext() != NULL)
{
p = p->getNext();
}
p = p->setNext(s);
}
List::List()
{
head = new employee;
if (NULL == head)
{
cout << "NULL list" << endl;
}
}
void List::bianli()
{
employee* p = head;
while (p->getNext() != NULL)
{
p = p->getNext();
p->print();
}
}
*/
<main.cpp>
//本來想通過構造List將員工串起來
//但是發現這樣可能會報錯 而且修改太繁瑣 暫且依舊用陣列的形式儲存吧
//其中註釋掉的程式碼都是 當時準備用連結串列儲存 結果發現不行 就註釋了...
//員工的生日用了Date類
//初始化員工資訊的時候不用輸入id
//自動根據序列號生成id
//Date類裡重新構造了輸出流 讓生日的輸出可以更加方便簡潔
//修改員工資訊中可以通過id 或者 姓名進行定位
//findid和findname都用了友元函式
//友元函式感覺在程式裡理解就像是給外部程式一個介面
//可以不用通過類進行呼叫函式
//使用了一個迴圈
//同樣的為了體現預設建構函式完成 使用了列印“構造完成”這種字樣 來確認
#include <iostream>
#include "employee.h"
using namespace std;
int main()
{
//List mylist;
int num, idd;
int nian, yue, ri;
int swi, loc=-1;
string s;
char x;
Date d;
cout << "請輸入員工數:";
cin >> num;
employee em[10];
for (int i = 0; i < num; i++) {
//employee* p = new employee;
cout << "請輸入姓名:";
cin >> s;
em[i].setName(s);
cout << "請輸入性別:";
cin >> x;
//p->setSexual(x);
em[i].setSexual(x);
cout << "請輸入出生年/月/日:";
cin >> nian >> yue >> ri;
d.setYear(nian);
d.setMonth(yue);
d.setDay(ri);
em[i].setBirth(d);
cout << "請輸入職位:";
cin >> s;
// p->setJob(s);
em[i].setJob(s);
idd = 10000 + i + 1;
//p->setID(idd);
em[i].setID(idd);
//mylist.Input(p);
em[i].print();
}
cout << "-------------------------------------" << endl;
for (int i = 0; i < num; i++)
{
em[i].print();
}
cout << "-------------------------------------" << endl;
while (1)
{
cout << "要通過什麼查詢:1.姓名 2.編號 (選項0退出)" << endl;
cin >> swi;
switch (swi) {
case 1: {
cout << "請輸入要修改的成員姓名:";
cin >> s;
loc = -1;
for (int i = 0; i < num; i++)
{
if ((findName(em[i], s)) == 0) { loc = i; break; }
}
if (loc < 0)
{
cout << "沒有找到這個名字;" << endl;
}
break;
}
case 2: {
cout << "請輸入要修改的成員編號:";
cin >> idd;
loc = -1;
for (int i = 0; i < num; i++)
{
if ((findID(em[i], idd)) == 0) { loc = i; break; }
}
if (loc < 0) {
cout << "沒有找到這個id;" << endl;
}
break;
}
case 0: {
cout << "-------------------------------------" << endl;
for (int i = 0; i < num; i++)
{
em[i].print();
}
cout << "-------------------------------------" << endl;
//mylist.bianli();
return 0;
}
}
if (loc >=0)
{
cout << "要修改什麼:1.姓名;2.職位;3.生日;4.ID " << endl;
cin >> swi;
switch (swi)
{
case 1: {
cout << "輸入修改後的姓名:";
cin >> s;
em[loc].setName(s);
break;
}
case 2:
{
cout << "輸入修改後的職位:";
cin >> s;
em[loc].setJob(s);
break;
}
case 3:
{
cout << "輸入修改後的出生日期 年/月/日:";
cin >>nian>>yue>>ri ;
d.setYear(nian);
d.setMonth(yue);
d.setDay(ri);
em[loc].setBirth(d);
break;
}
case 4:
{
cout << "輸入修改後的ID:";
cin >> idd;
em[loc].setID(idd);
break;
}
default:break;
}
}
}
}
相關文章
- 蘋果裁員逾200人,拿無人駕駛“開刀”蘋果
- 蘋果裁撤自動駕駛專案員工200餘人蘋果自動駕駛
- 蘋果向開發人員釋出macOS Big Sur 11.1 Beta蘋果Mac
- 圖靈社群新會員圖靈
- 蘋果CMS v10 忘記管理員密碼的重置方法蘋果密碼
- 糟心!蘋果無人車裁員190人,程式設計師卻首當其衝蘋果程式設計師
- 蘋果向開發人員釋出macOS Big Sur的第十個Beta蘋果Mac
- 蘋果iPhone XS Max截圖方法教程 蘋果iPhone XS Max怎麼截圖?蘋果iPhone
- 蘋果:2022年蘋果開發者社群有超過3400萬註冊成員蘋果
- 我國靈活就業人員已達2億人就業
- 蘋果關閉開發人員賬戶,蘋果企業開發者賬號的嚴格性會上升一個新的高度?蘋果
- 蘋果為開發人員推送了macOS Big Sur 11.3的第一個Beta版本蘋果Mac
- 蘋果向開發人員推送macOS Big Sur 11.2的第三個候選版本蘋果Mac
- 蘋果裝置被曝存在PEAP認證漏洞 研究人員對官方修復方案存疑蘋果
- 後蘋果時代轉型,從裁員說起蘋果
- 1.1.5 應用管理人員
- 蘋果推出“蘋果邊緣快取”(蘋果企業簽名)蘋果快取
- 蘋果視窗管理工具:Moom for Mac蘋果OOMMac
- 蘋果Mac知識大綱管理神器:OmniOutLiner蘋果Mac
- Moom for Mac(蘋果視窗管理工具)OOMMac蘋果
- 驚雷陣陣!遊戲版號再度炸鍋了,蘋果、位元組相關人員迴應遊戲蘋果
- C++如何開啟“開發人員命令提示”C++
- 用Qt(C++)實現如蘋果般的亮屏效果QTC++蘋果
- Python 實現圖靈微信機器人Python圖靈機器人
- 如何在mac蘋果電腦上長截圖Mac蘋果
- 蘋果財報圖解:2020年Q3蘋果iPhone營收佔比跌至四成蘋果圖解iPhone營收
- 蘋果iPhone怎麼設定醫療急救卡?蘋果iPhone手機緊急聯絡人使用教程蘋果iPhone
- Rust 與 C++:現代開發人員的困境RustC++
- 蘋果終止電車專案後大裁員,押注家用機器人,這會是Next Big Thing嗎?蘋果機器人
- 蘋果企業簽名—不掏錢?蘋果廢?蘋果
- 蘋果訊號有救了?(蘋果企業簽名)蘋果
- 蘋果:2018年蘋果環境責任報告蘋果
- 蘋果電腦專業修圖工具:Affinity Photo for Mac蘋果Mac
- 蘋果手機heic圖片如何轉換成jpg蘋果
- 蘋果Mac截圖很大要怎麼變小呢?蘋果Mac
- 狗不吃貓糧
- 蘋果企業賬號和個人賬號區別蘋果
- ios蘋果簽名—iPhone12恭喜3億人等待iOS蘋果iPhone