#包含?& ltiomanip & gt
#包含?& lt字符串& gt
使用?命名空間?std
typedef?struct?學生?{
未簽名?m _ id
字符串?m _ name
未簽名?m _年齡;
字符串?m _ sex
字符串?m _地址;
字符串?m _ contact
字符串?m _宿舍;
struct?學生?* m _ next
}學生;
班級?CStudent?{
私人?:
學生?*頭;
公共?:
CStudent()?{
頭?=?新的?學生;
head->;m_id?=?0;
head->;m_name?=?”非姓名”;
head->;m _下壹個?=?NULL
}
~CStudent()?{
學生?*p?=?頭,* q;
while(p)?{
q?=?p;
p?=?q->;m _ next
刪除?q;
}
}
學生?readdata(int?型號);?//?模特?=?1:不看學號,2:不看名字,其他,看所有信息。
作廢?正在輸入();
布爾?插入(常量?學生?& ampastu);
學生?*findid(未簽名?id)?const
學生?*findname(const?字符串?& amp姓名)?const
學生?*findsex(const?字符串?& amp性)?const
學生?* find success(const?字符串?& amp宿舍)?const
未簽名?男生()?const
未簽名?女生()?const
未簽名?編制()?const
布爾?erase id();
布爾?erase name();
布爾?modifyid();
布爾?modify name();
作廢?Show()?const
作廢?query()?const
作廢?朋友?統計(const?CStudent?& ampaclss);
作廢?朋友?擦除(CStudent?& ampaclss);
作廢?朋友?修改(CStudent?& ampaclss);
};
字符串?readstring()?{
字符串?str
while(cin.get()?!=?\ n’);
cin?& gt& gt?str
回歸?str
}
學生?CStudent::readdata(int?型號)?{
學生?tmp
如果(型號?!=?1)?{?cout?& lt& lt?“學號:?”;?cin?& gt& gt?tmp.m _ id?}
如果(型號?!=?2)?{?cout?& lt& lt?"姓名:?";?tmp.m_name?=?readstring();?}
cin?& gt& gt?tmp.m _ age
cout?& lt& lt?“性別:?”;
tmp.m_sex?=?readstring();
cout?& lt& lt?"地址:?";
tmp.m_address?=?readstring();
cout?& lt& lt?"聯系信息:?";
tmp.m_contact?= read string();
cout?& lt& lt?“宿舍:?”;
tmp.m _宿舍?=?readstring();
回歸?tmp
}
作廢?c student::enter()?{
學生?tmp
cout?& lt& lt?“學號(0?去哪?return):?”;
cin?& gt& gt?tmp.m _ id
while(tmp.m_id)?{
if(findid(tmp.m_id)?==?NULL)?{
cout?& lt& lt?"姓名:?";
tmp.m_name?=?readstring();
cout?& lt& lt?“年齡:?”;
cin?& gt& gt?tmp.m _ age
cout?& lt& lt?“性別:?”;
tmp.m_sex?=?readstring();
cout?& lt& lt?"地址:?";
tmp.m_address?=?readstring();
cout?& lt& lt?"聯系信息:?";
tmp.m_contact?=?readstring();
cout?& lt& lt?“宿舍:?”;
tmp.m _宿舍?=?readstring();
插入(tmp);
}
不然呢?cout?& lt& lt?"重復的學號:"?& lt& lt?tmp.m_id?& lt& lt?endl
cout?& lt& lt?“學號(0?去哪?return):?”;
cin?& gt& gt?tmp.m _ id
}
}
學生?*CStudent::findid(未簽名?id)?const?{
學生?* p;
對於(p?=?頭;?p->;m _ next?p?=?p->;m_next)
如果(p->;m _ next-& gt;m_id?==?id)?回歸?p;
回歸?NULL
}
學生?*CStudent::findname(const?字符串?& amp姓名)?const?{
學生?* p;
對於(p?=?頭;?p->;m _ next?p?=?p->;m_next)
如果(p->;m _ next-& gt;m_name?==?姓名)?回歸?p;
回歸?NULL
}
學生?*CStudent::findsex(const?字符串?& amp性)?const?{
學生?* p;
對於(p?=?頭;?p->;m _ next?p?=?p->;m_next)
如果(p->;m _ next-& gt;m_sex?==?性)?回歸?p;
回歸?NULL
}
學生?* c student::find宿舍(const?字符串?& amp宿舍)?const?{
學生?* p;
對於(p?=?頭;?p->;m _ next?p?=?p->;m_next)
如果(p->;m _ next-& gt;m _宿舍?==?宿舍)?回歸?p;
回歸?NULL
}
布爾?CStudent::insert(const?學生?& ampastu)?{
學生?*newnode,*p?=?頭;
如果(p->;m _下壹個?==?NULL)?{
p->;m _下壹個?=?新的?學生(astu);
p->;m _ next-& gt;m _下壹個?=?NULL
回歸?真實;
}
while(p->;m_next)?{
如果(p->;m _ next-& gt;m_id?==?astu.m_id)?{
cout?& lt& lt?“學號重復,插入失敗!\ n ";
回歸?假的;
}
如果(p->;m _ next-& gt;m_id?& gt?astu.m_id)?{
newnode?=?新的?學生(astu);
新節點-& gt;m _下壹個?=?p->;m _ next
p->;m _下壹個?=?newnode
回歸?真實;
}
p?=?p->;m _ next
}
p->;m _下壹個?=?新的?學生(astu);
p->;m _ next-& gt;m _下壹個?=?NULL
回歸?真實;
}
未簽名?CStudent::boys()?const?{
未簽名?cnt?=?0;
學生?* p;
對於(p?=?head->;m _ next?p;?p?=?p->;m_next)
如果(p->;m_sex?==?“男”)?++ CNT;
回歸?cnt
}
未簽名?CStudent::girls()?const?{
未簽名?cnt?=?0;
學生?* p;
對於(p?=?head->;m _ next?p;?p?=?p->;m_next)
如果(p->;m_sex?==?“女”)?++ CNT;
回歸?cnt
}
未簽名?c student::head number()?const?{
未簽名?cnt?=?0;
學生?* p;
對於(p?=?head->;m _ next?p;?p?=?p->;m_next,++ CNT);
回歸?cnt
}
布爾?CStudent::eraseid()?{
學生?*q,* p;
未簽名?id;
cout?& lt& lt?"輸入要刪除的學號:";
cin?& gt& gt?id;
p?=?findid(id);
如果(p?==?NULL)?{
cout?& lt& lt?“沒找到學號”“?& lt& lt?id?& lt& lt?"“同學們,刪除失敗!\ n ";
回歸?假的;
}
q?=?p->;m _ next
p->;m _下壹個?=?q->;m _ next
刪除?q;
回歸?真實;
}
布爾?CStudent::erasename()?{
學生?*q,* p;
字符串?姓名;
cout?& lt& lt?"輸入要刪除的人的姓名:";
名字?=?readstring();
p?=?findname(名稱);
如果(p?==?NULL)?{
cout?& lt& lt?找不到名稱\ " "?& lt& lt?名字?& lt& lt?"“同學們,刪除失敗!\ n ";
回歸?假的;
}
q?=?p->;m _ next
p->;m _下壹個?=?q->;m _ next
刪除?q;
回歸?真實;
}
布爾?CStudent::modifyid()?{
學生?tmp,* p;
未簽名?id;
cout?& lt& lt?”輸入要修改的學號:“;
cin?& gt& gt?id;
p?=?findid(id);
如果(p?==?NULL)?{
cout?& lt& lt?“沒找到學號”“?& lt& lt?id?& lt& lt?"“同學們,改裝失敗了!\ n ";
回歸?假的;
}
tmp?=?read data(1);
tmp.m_id?=?id;
*p?=?tmp
回歸?真實;
}
布爾?CStudent::modifyname()?{
學生?*p,tmp
字符串?姓名;
cout?& lt& lt?"輸入要修改的人的姓名:";
名字?=?readstring();
p?=?findname(名稱);
如果(p?==?NULL)?{
cout?& lt& lt?找不到名稱\ " "?& lt& lt?名字?& lt& lt?"“同學們,改裝失敗了!\ n ";
回歸?假的;
}
tmp?=?read data(2);
tmp.m_name?=?姓名;
*p?=?tmp
回歸?真實;
}
int?menu()?{
int?選擇;
做什麽?{
系統(“cls”);
cout?& lt& lt?”\ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;
cout?& lt& lt?”\t*學生基本信息管理系統* \ n”;
cout?& lt& lt?" \ t * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = * \ n ";
cout?& lt& lt?" \t*1,輸入學生信息* \ n ";
cout?& lt& lt?" \t*2。顯示學生信息* \ n ";
cout?& lt& lt?" \t*3。查詢學生信息* \ n ";
cout?& lt& lt?" \t*4。添加學生信息* \ n ";
cout?& lt& lt?" \t*5。學生信息統計* \ n ";
cout?& lt& lt?" \t*6。刪除學生信息* \ n ";
cout?& lt& lt?" \t*7。修改學生信息* \ n ";
cout?& lt& lt?“\t*0,退出管理系統* \ n”;
cout?& lt& lt?”\ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;
cout?& lt& lt?\ n \請選擇:“;
cin?& gt& gt?選擇;
}while(選擇?& lt?0?||?選擇?& gt?7);
回歸?選擇;
}
作廢?秀(學生?*p)?{
cout?& lt& lt?p->;m_id?& lt& lt?"?"?& lt& lt?p->;m_name?& lt& lt?"?"?& lt& lt?p->;m_age?& lt& lt?"?";
cout?& lt& lt?p->;m_sex?& lt& lt?"?"?& lt& lt?p->;m _地址?& lt& lt?"?";
cout?& lt& lt?p->;m_contact?& lt& lt?"?"?& lt& lt?p->;m _宿舍?& lt& lt?endl
}
作廢?CStudent::Show()?const?{
學生?* p;
cout?& lt& lt?”-\ n”;
對於(p?=?head->;m _ next?p;?p?=?p->;m_next)?秀(p);
cout?& lt& lt?”-\ n”;
系統(“暫停”);
}
作廢?CStudent::query()?const?{
int?選擇;
未簽名?id;
字符串?姓名;
學生?* p;
cout?& lt& lt?“1,按學號查詢\n2,按姓名查詢\n0,返回\ n”;
cin?& gt& gt?選擇;
開關(選擇)?{
案子?1?:?cout?& lt& lt?"請輸入您的學號:";?cin?& gt& gt?id;
如果(p?=?findid(id))?顯示(p->;m _ next);
打破;
案子?2?:?cout?& lt& lt?請輸入壹個名稱:“;?名字?=?readstring();
如果(p?=?findname(name))?顯示(p->;m _ next);
打破;
案子?0?:?返回;
違約?:?cout?& lt& lt?“錯誤的選擇。\ n ";
}
系統(“暫停”);
}
作廢?統計(const?CStudent?& ampa)?{
未簽名?總計?=?a .人頭數();
未簽名?男生?=?a . boys();
未簽名?女生?=?a .女生();
cout?& lt& lt?"學生總數:"?& lt& lt?總計?& lt& lt?“人。\ n ";
cout?& lt& lt?“其中,男生:“?& lt& lt?男生?& lt& lt?"名字";
cout?& lt& lt?“姑娘:“?& lt& lt?女生?& lt& lt?“名字。\ n ";
系統(“暫停”);
}
作廢?擦除(CStudent?& ampa)?{
int?選擇;
未簽名?id;
字符串?姓名;
學生?*p,* q;
cout?& lt& lt?“1,按學號刪除\n2,按姓名刪除\n0,返回\ n”;
cin?& gt& gt?選擇;
開關(選擇)?{
案子?1?:?cout?& lt& lt?"請輸入您的學號:";?cin?& gt& gt?id;
如果(p?=?a.findid(id))?{
q?=?p->;m _ next
p->;m _下壹個?=?q->;m _ next
刪除?q;
cout?& lt& lt?“成功刪除?”?& lt& lt?id?& lt& lt?"?信息。\ n ";
}
打破;
案子?2?:?cout?& lt& lt?請輸入壹個名稱:“;?名字?=?readstring();
如果(p?=?a.findname(name))?{
q?=?p->;m _ next
p->;m _下壹個?=?q->;m _ next
刪除?q;
cout?& lt& lt?“成功刪除?”?& lt& lt?名字?& lt& lt?"?信息。\ n ";
}
打破;
案子?0?:?返回;
違約?:?cout?& lt& lt?“錯誤的選擇。\ n ";
}
系統(“暫停”);
}
作廢?修改(CStudent?& ampa)?{
int?選擇;
cout?& lt& lt?“1,按學號修改\n2,按姓名修改\n0,返回\ n”;
cin?& gt& gt?選擇;
開關(選擇)?{
案子?1?:?if(a.modifyid())?cout?& lt& lt?“改造成功了。\ n ";?打破;
案子?2?:?if(a.modifyname())?cout?& lt& lt?“改造成功了。\ n ";?打破;
案子?0?:?返回;
違約?:?cout?& lt& lt?“錯誤的選擇。\ n ";
}
系統(“暫停”);
}
int?main()?{
CStudent?a;
int?安;
做什麽?{
安?=?menu();
開關(安)?{
案子?1?:?a .輸入();?打破;
案子?2?:?a . Show();?打破;
案子?3?:?a . query();?打破;
案子?4?:?a .輸入();?打破;
案子?5?:?統計(a);?打破;
案子?6?:?擦除(a);?打破;
案子?7?:?修改(壹);?打破;
案子?0?:?打破;
違約?:?cout?& lt& lt?“錯誤的選擇。\ n ";?打破;
}
}while(安);
回歸?0;
}