9.用C++中,文件和鏈表實(shí)現(xiàn)
#include <iostream>#include <string>#include <fstream>using namespace std;class staff{PRivate:string employee_number;//職工號(hào)string name;//姓名int age;//年齡string sex;//性別string zip_code;//郵編string department;//部門int wage;//工資class staff* next;public:staff():next(NULL){}void registration(class staff* head);//注冊(cè) 尾插void query_name(class staff* t);//按照姓名查詢員工信息void query_depart(class staff* t);//按照部門查詢員工信息void delete_num(class staff* t);//按工號(hào)刪除員工信息void delete_name(class staff* t);//按姓名刪除員工信息void show_all(class staff* head);//展示所有員工信息void update(class staff* head);void update_num(class staff* head);//修改工號(hào)void update_name(class staff* head);//修改姓名void update_age(class staff* head);//修改年齡void update_sex(class staff* head);//修改性別void update_zip(class staff* head);//修改郵編void update_depart(class staff* head);//修改部門void update_wage(class staff* head);//修改工資void update_all(class staff* head);//修改全部void sort_up(class staff* head);//按工資升序排列void sort_down(class staff* head);//按工資降序排列int read(class staff* head);void write(class staff* t);};void staff::registration(class staff* head){while(head->next != NULL){head = head->next;}staff* newnode = new staff;head->next = newnode;newnode->next = NULL;cout << "請(qǐng)輸入員工信息" << endl;cout << "職工號(hào): " << endl;cin >> newnode->employee_number;cout << "職工姓名: " << endl;cin >> newnode->name;cout << "職工年齡: " << endl;cin >> newnode->age;cout << "職工性別: " << endl;cin >> newnode->sex;cout << "職工郵編: " << endl;cin >> newnode->zip_code;cout << "職工部門: " << endl;cin >> newnode->department;cout << "職工工資: " << endl;cin >> newnode->wage;}void staff::show_all(class staff* head){int i = 0;while(head->next != NULL){i++;cout << i << "." << "工號(hào):" ;cout << head->next->employee_number <<'/t';cout << "名字:";cout << head->next->name <<'/t';cout << "性別:" ;cout << head->next->sex <<'/t';cout << "年齡:" ;cout << head->next->age <<'/t';cout << "郵編:" ;cout << head->next->zip_code << '/t';cout << "部門:";cout << head->next->department << '/t';cout << "工資:" ;cout << head->next->wage << endl;head = head->next;}}void staff::query_name(class staff* t){string n;cout << "請(qǐng)輸入你想查詢職工姓名:" << endl;cin >> n;int count = 0;while(t->next != NULL){if(t->next->name == n){cout << "工號(hào):" ;cout << t->next->employee_number <<'/t';cout << "名字:";cout << t->next->name <<'/t';cout << "性別:" ;cout << t->next->sex <<'/t';cout << "年齡:" ;cout << t->next->age <<'/t';cout << "郵編:" ;cout << t->next->zip_code << '/t';cout << "部門:";cout << t->next->department << '/t';cout << "工資:" ;cout << t->next->wage << endl;count++;}t = t->next;}if(count == 0){cout << "查無此人!" << endl;}}void staff::query_depart(class staff* t){string n;cout << "請(qǐng)輸入你想查詢職工部門:" << endl;cin >> n;int count = 0;while(t->next != NULL){if(t->next->department == n){cout << "工號(hào):" ;cout << t->next->employee_number <<'/t';cout << "名字:";cout << t->next->name <<'/t';cout << "性別:" ;cout << t->next->sex <<'/t';cout << "年齡:" ;cout << t->next->age <<'/t';cout << "郵編:" ;cout << t->next->zip_code << '/t';cout << "部門:";cout << t->next->department << '/t';cout << "工資:" ;cout << t->next->wage << endl;count++;}t = t->next;}if(count == 0){cout << "查無此人!" << endl;}}void staff::delete_num(class staff* t){string n;cout << "請(qǐng)輸入你想刪除職工號(hào):" << endl;cin >> n;int count = 0;while(t->next != NULL){if(t->next->employee_number == n){staff* temp = t->next;t->next = t->next->next;delete temp;temp = NULL;cout << "刪除成功!" << endl;count++;break;}t = t->next;}if(count == 0){cout << "查無此人!" << endl;}}void staff::delete_name(class staff* t){string n;cout << "請(qǐng)輸入你想刪除職工的姓名:" << endl;cin >> n;int count = 0;while(t->next != NULL){if(t->next->name == n){staff* temp = t->next;t->next = t->next->next;delete temp;temp = NULL;cout << "刪除成功!" << endl;count++;break;}t = t->next;}if(count == 0){cout << "查無此人!" << endl;}}void staff::update(class staff* head){int num = 0;cout << "1.修改員工號(hào)" << endl;cout << "2.修改員工姓名" << endl;cout << "3.修改員工年齡" << endl;cout << "4.修改員工性別" << endl;cout << "5.修改員工郵編" << endl;cout << "6.修改員工部門" << endl;cout << "7.修改員工工資" << endl;cout << "8.修改全部" << endl;cin >> num;switch(num){case 1:update_num(head);break;case 2:update_name(head);break;case 3:update_age(head);break;case 4:update_sex(head);break;case 5:update_zip(head);break;case 6:update_depart(head);break;case 7:update_wage(head);break;case 8:update_all(head);break;default:cout << "請(qǐng)重新輸入正確的指令!" << endl;}}void staff::update_num(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout<< "輸入新工號(hào):"<< endl;string temp2;cin>>temp2;head->next->employee_number = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_name(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新名字:"<< endl;string temp2;cin >> temp2;head->next->name = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_age(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新年齡:"<< endl;int temp2;cin >> temp2;head->next->age = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_sex(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新性別:"<< endl;string temp2;cin >> temp2;head->next->sex = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_zip(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新郵編:"<< endl;string temp2;cin >> temp2;head->next->zip_code = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_depart(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新部門:"<< endl;string temp2;cin >> temp2;head->next->department = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_wage(class staff* head){cout << "輸入要修改對(duì)象的工號(hào):"<< endl;int count = 0;string temp;cin >> temp;while(head->next != NULL){if(temp == head->next->employee_number){count = 1;cout << "輸入新工資:"<< endl;int temp2;cin >> temp2;head->next->wage = temp2;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::update_all(class staff* head){cout<<"輸入要修改對(duì)象的工號(hào):"<<flush;int count = 0;string tmp;cin >> tmp;while(head->next != NULL){if(tmp == head->next->employee_number){count = 1;cout << "輸入新工號(hào):"<< endl;string temp;int tmp;cin >> temp;head->next->employee_number = temp;cout<< "輸入新名字:"<< endl;cin >> temp;head->next->name = temp;cout<< "輸入新性別:"<< endl;cin >> temp;head->next->sex = temp;cout<< "輸入新年齡:"<< endl;cin >> tmp;head->next->age = tmp;cout<< "輸入新郵編:"<< endl;cin >> temp;head->next->zip_code = temp;cout<< "輸入新部門:"<< endl;cin >> temp;head->next->department = temp;cout<< "輸入新工資:"<< endl;cin >> tmp;head->next->wage = tmp;cout << "修改成功" << endl;break;}head = head->next;}if(count == 0){cout << "查無此人" << endl;}}void staff::sort_up(class staff* head){while(head->next != NULL){class staff* temp = head;while(temp->next != NULL){if(head->next->wage > temp->next->wage){int a;string b;a = head->next->wage;head->next->wage = temp->next->wage;temp->next->wage = a;b = head->next->employee_number;head->next->employee_number = temp->next->employee_number;temp->next->employee_number = b;b = head->next->name;head->next->name = temp->next->name;temp->next->name = b;b = head->next->sex;head->next->sex = temp->next->sex;temp->next->sex = b;a = head->next->age;head->next->age = temp->next->age;temp->next->age = a;b = head->next->zip_code;head->next->zip_code = temp->next->zip_code;temp->next->zip_code = b;b = head->next->department;head->next->department = temp->next->department;temp->next->department = b;}temp = temp->next;}head = head->next;}}void staff::sort_down(class staff* head){while(head->next != NULL){class staff* temp = head;while(temp->next != NULL){if(head->next->wage < temp->next->wage){int a;string b;a = head->next->wage;head->next->wage = temp->next->wage;temp->next->wage = a;b = head->next->employee_number;head->next->employee_number = temp->next->employee_number;temp->next->employee_number = b;b = head->next->name;head->next->name = temp->next->name;temp->next->name = b;b = head->next->sex;head->next->sex = temp->next->sex;temp->next->sex = b;a = head->next->age;head->next->age = temp->next->age;temp->next->age = a;b = head->next->zip_code;head->next->zip_code = temp->next->zip_code;temp->next->zip_code = b;b = head->next->department;head->next->department = temp->next->department;temp->next->department = b;}temp = temp->next;}head = head->next;}}int staff::read(class staff* head){ofstream infile1;infile1.open("職工系統(tǒng).txt",ios::app);if(!infile1){return 0;}else{infile1.close();ifstream infile;infile.open("職工系統(tǒng).txt",ios::in);while(!infile.eof()){staff* newnode = new staff;infile >> newnode->employee_number;if(newnode->employee_number.length() == 0){delete newnode;break;}infile >> newnode->name;infile >> newnode->sex;infile >> newnode->age;infile >> newnode->zip_code;infile >> newnode->department;infile >> newnode->wage;head->next = newnode;head = head->next;}infile.close();}return 0;}void staff::write(class staff* t){ofstream outfile;outfile.open("職工系統(tǒng).txt",ios::out);while(t->next != NULL){outfile << t->next->employee_number <<'/t';outfile << t->next->name << '/t';outfile << t->next->sex << '/t';outfile << t->next->age << '/t';outfile << t->next->zip_code << '/t';outfile << t->next->department << '/t';outfile << t->next->wage << endl;t = t->next;}outfile.close();}int main(){staff* head = new staff;head->read(head);string temp;cout << "歡迎來到Coder職工系統(tǒng)!" << endl;while(1){cout << "------------------------------------" << endl;head->show_all(head);cout << "------------------------------------" << endl;cout << endl;cout << "1.注冊(cè)員工信息" << endl;cout << "2.按照姓名查詢員工信息" << endl;cout << "3.按照部門查詢員工信息" << endl;cout << "4.按工號(hào)刪除員工信息" << endl;cout << "5.按姓名刪除員工信息" << endl;cout << "6.按工資升序排列" << endl;cout << "7.按工資降序排列" << endl;cout << "8.修改員工信息" << endl;cout << "0.退出" << endl;cout << endl;cout << "請(qǐng)輸入你想選擇的功能:" << endl;int number;cin >> number;switch(number){case 1:{head->registration(head);break;}case 2:{head->query_name(head);break;}case 3:{head->query_depart(head);break;}case 4 :{head->delete_num(head);break;}case 5:{head->delete_name(head);break;}case 6:{head->sort_up(head);break;}case 7:{head->sort_down(head);break;}case 8:{head->update(head);break;}case 0:{head->write(head);return 0;}default: cout << "請(qǐng)重新輸入正確的操作指令" << endl;}}}
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注