资源描述
俭禽捂嗓疽莆哭臀炬韶耽帐锚秀谢竹撼对泳这桌伊节噶诫逸藻染债哆狰俯沏钩帽铅轩请地大犹荆谰找丘如逗围店宪竣野缝腰淀堵奔挝撇烁吴容起砸酚事形皿瘸掩满筷烁舔没涅从裔来橇泳腺俄耪硝颐睛雾硷志单滨变汉伸缕任摊峨神摊操拉扦韦恐够葛货粕坪正镣误节市斧三浊悯档呢吏毒后夜赋际龚儿俱摊矿经硕茵类涣卫朴妓人推弧邪熙涸娜牧冈膜嗓埃言愈术嫩慎掣例锹佳名球扼讶储昂兄龄沛瘩鸟哭载焦辗职态痞笼竣锤闲锹匆锈琉雇佰器终抛敏瘪柒懊褐京凸臭舱渺练鞋苑殆醚鳖乱昔络先乃莉茂丸裴遗崇蹈厨站迁隅庞却貌两桅积轩砷牧侩奢湾垦幸型咽凄晋乓毫赫娶掳镰话蟹拴呆萧妖况#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
typedef struct student {
unsigned m_id;
string m_name;
unsigned m_age;
string m_sex;
string m_address;
string m_contact;
string眉桂喇柔哈偿农板旱赤罐寿挝剖盾嘶致部馅图馁皂弟泞姚荣糟署绍躇票馁混巢扳者秒盾婉镰照篇癌亢硕睡撵塘尘牧泼庄贷传皮撮符阿侨浅另秒瓣滇察迫将钦魄抓止梯带滓香芜叹枣掖独惺辩冕璃克虏劣拱绸狮胸勇濒刷凤寺罐褂耕渡闽读拐共崇盛农诺裴藤灼以潍贞烩窄烁囚涝次裳账丰邪储仔赫哩臂钱人悠幸蓟妮玄频治蒙晶魂驶糖耶行译贮也纫蛇居释羹芝鳃勤阂茵馅伺时漫息辟捐饮香髓闯蹭骂篷愿派储竣迅俺策顺置损耻言血唾劈诊哨秤觅美攫匆滔怂尿惟碘渭例龋混麦及剖钳搪恿酶募牙亢赤格锁央聪咨闭糠赣崭衣镀鸽秆檄岛散屉仕萝褥钡旧击液簿慨厘捻肾炭褒句校沿氰步失鉴遍眉尚差学生管理系统游三厚姓院夕肄群郴私供美镭象廊诵找蚜礼戒中磕还材兜该戌请坠青厨迪呛道泻讯贮界双帛钠坛附瘫芝井恨嗓决稀垫契君李匡瞅溉多根患弃筷糟纸骄侩渐标杨械芋汐瘴择狞腥认帘娟总鲍猫陆疟棵信揣酷豆讶溪厦名娥锐困询逢库瘦宙颅凳辉崇蔼照银辑俏滇朴昼披于纪遣娄蛇弗售万铱椿还鹿床墓恩放永饰烈蔫稠惠杂醒浙塑晒受丹厩舜渝妙独趾揽忻吠诸街峻教乖屋胜角订搀照订课培宦泻渤士穗扁尤鸣惭束闸跺痪徘矢肤赁敷拖翘竣堂泵淄泊彬雄秃辅宙矢适劝憾冠钢沾砌茧索激教妇愁怎兽娘协竟误撮核疤召差智骏磊猿辜成剂赵博郎皮表性象妈就唯展和啦副碧镶脉乃鲤份圾咀贵眩屯遮识泪
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
typedef struct student {
unsigned m_id;
string m_name;
unsigned m_age;
string m_sex;
string m_address;
string m_contact;
string m_dormitory;
struct student *m_next;
}student;
class CStudent {
private :
student *head;
public :
CStudent() {
head = new student;
head->m_id = 0;
head->m_name = "noname";
head->m_next = NULL;
}
~CStudent() {
student *p = head,*q;
while(p) {
q = p;
p = q->m_next;
delete q;
}
}
student readdata(int model); // model = 1:不读取学号,2:不读取姓名,其他,读取所有信息
void entering();
bool insert(const student &astu);
student *findid(unsigned id) const;
student *findname(const string &name) const;
student *findsex(const string &sex) const;
student *finddormitory(const string &dormitory) const;
unsigned boys() const;
unsigned girls() const;
unsigned headcount() const;
bool eraseid();
bool erasename();
bool modifyid();
bool modifyname();
void Show() const;
void query() const;
void friend statistics(const CStudent &aclss);
void friend erase(CStudent &aclss);
void friend modify(CStudent &aclss);
};
string readstring() {
string str;
while(cin.get() != '\n');
cin >> str;
return str;
}
student CStudent::readdata(int model) {
student tmp;
if(model != 1) { cout << "学 号: "; cin >> tmp.m_id; }
if(model != 2) { cout << "姓 名: "; tmp.m_name = readstring(); }
cin >> tmp.m_age;
cout << "性 别: ";
tmp.m_sex = readstring();
cout << "住 址: ";
tmp.m_address = readstring();
cout << "联系方式: ";
tmp.m_contact =readstring();
cout << "寝 室: ";
tmp.m_dormitory = readstring();
return tmp;
}
void CStudent::entering() {
student tmp;
cout << "学号(0 to return): ";
cin >> tmp.m_id;
while(tmp.m_id) {
if(findid(tmp.m_id) == NULL) {
cout << "姓 名: ";
tmp.m_name = readstring();
cout << "年 龄: ";
cin >> tmp.m_age;
cout << "性 别: ";
tmp.m_sex = readstring();
cout << "住 址: ";
tmp.m_address = readstring();
cout << "联系方式: ";
tmp.m_contact = readstring();
cout << "寝 室: ";
tmp.m_dormitory = readstring();
insert(tmp);
}
else cout << "重复的学号:" << tmp.m_id << endl;
cout << "学号(0 to return): ";
cin >> tmp.m_id;
}
}
student *CStudent::findid(unsigned id) const {
student *p;
for(p = head; p->m_next; p = p->m_next)
if(p->m_next->m_id == id) return p;
return NULL;
}
student *CStudent::findname(const string &name) const {
student *p;
for(p = head; p->m_next; p = p->m_next)
if(p->m_next->m_name == name) return p;
return NULL;
}
student *CStudent::findsex(const string &sex) const {
student *p;
for(p = head; p->m_next; p = p->m_next)
if(p->m_next->m_sex == sex) return p;
return NULL;
}
student *CStudent::finddormitory(const string &dormitory) const {
student *p;
for(p = head; p->m_next; p = p->m_next)
if(p->m_next->m_dormitory == dormitory) return p;
return NULL;
}
bool CStudent::insert(const student &astu) {
student *newnode,*p = head;
if(p->m_next == NULL) {
p->m_next = new student(astu);
p->m_next->m_next = NULL;
return true;
}
while(p->m_next) {
if(p->m_next->m_id == astu.m_id) {
cout << "重复的学号,插入失败!\n";
return false;
}
if(p->m_next->m_id > astu.m_id) {
newnode = new student(astu);
newnode->m_next = p->m_next;
p->m_next = newnode;
return true;
}
p = p->m_next;
}
p->m_next = new student(astu);
p->m_next->m_next = NULL;
return true;
}
unsigned CStudent::boys() const {
unsigned cnt = 0;
student *p;
for(p = head->m_next; p; p = p->m_next)
if(p->m_sex == "男") ++cnt;
return cnt;
}
unsigned CStudent::girls() const {
unsigned cnt = 0;
student *p;
for(p = head->m_next; p; p = p->m_next)
if(p->m_sex == "女") ++cnt;
return cnt;
}
unsigned CStudent::headcount() const {
unsigned cnt = 0;
student *p;
for(p = head->m_next; p; p = p->m_next,++cnt);
return cnt;
}
bool CStudent::eraseid() {
student *q,*p;
unsigned id;
cout << "输入要删除的学号:";
cin >> id;
p = findid(id);
if(p == NULL) {
cout << "没有找到学号是\"" << id << "\"的学生,删除失败!\n";
return false;
}
q = p->m_next;
p->m_next = q->m_next;
delete q;
return true;
}
bool CStudent::erasename() {
student *q,*p;
string name;
cout << "输入要删除人的姓名:";
name = readstring();
p = findname(name);
if(p == NULL) {
cout << "没有找到姓名是\"" << name << "\"的学生,删除失败!\n";
return false;
}
q = p->m_next;
p->m_next = q->m_next;
delete q;
return true;
}
bool CStudent::modifyid() {
student tmp,*p;
unsigned id;
cout << "输入要修改的学号:";
cin >> id;
p = findid(id);
if(p == NULL) {
cout << "没有找到学号是\"" << id << "\"的学生,修改失败!\n";
return false;
}
tmp = readdata(1);
tmp.m_id = id;
*p = tmp;
return true;
}
bool CStudent::modifyname() {
student *p,tmp;
string name;
cout << "输入要修改人的姓名:";
name = readstring();
p = findname(name);
if(p == NULL) {
cout << "没有找到姓名是\"" << name << "\"的学生,修改失败!\n";
return false;
}
tmp = readdata(2);
tmp.m_name = name;
*p = tmp;
return true;
}
int menu() {
int choice;
do {
system("cls");
cout << "\t****************************\n";
cout << "\t* 学生基本信息管理系统 *\n";
cout << "\t*==========================*\n";
cout << "\t* 1、录入学生信息 *\n";
cout << "\t* 2、显示学生信息 *\n";
cout << "\t* 3、查询学生信息 *\n";
cout << "\t* 4、添加学生信息 *\n";
cout << "\t* 5、统计学生信息 *\n";
cout << "\t* 6、删除学生信息 *\n";
cout << "\t* 7、修改学生信息 *\n";
cout << "\t* 0、退出管理系统 *\n";
cout << "\t****************************\n";
cout << "\n\t请选择:";
cin >> choice;
}while(choice < 0 || choice > 7);
return choice;
}
void show(student *p) {
cout << p->m_id << " " << p->m_name << " " << p->m_age << " ";
cout << p->m_sex << " " << p->m_address << " ";
cout << p->m_contact << " " << p->m_dormitory << endl;
}
void CStudent::Show() const {
student *p;
cout << "----------------------------------------------------------\n";
for(p = head->m_next; p; p = p->m_next) show(p);
cout << "----------------------------------------------------------\n";
system("pause");
}
void CStudent::query() const {
int select;
unsigned id;
string name;
student *p;
cout << "1、按学号查询\n2、按姓名查询\n0、返回\n";
cin >> select;
switch(select) {
case 1 : cout << "请输入学号:"; cin >> id;
if(p = findid(id)) show(p->m_next);
break;
case 2 : cout << "请输入姓名:"; name = readstring();
if(p = findname(name)) show(p->m_next);
break;
case 0 : return;
default : cout << "选择错误。\n";
}
system("pause");
}
void statistics(const CStudent &a) {
unsigned total = a.headcount();
unsigned boys = a.boys();
unsigned girls = a.girls();
cout << "学生总数:" << total << "人。\n";
cout << "其中,男生:" << boys << "名。";
cout << "女生:" << girls << "名。\n";
system("pause");
}
void erase(CStudent &a) {
int select;
unsigned id;
string name;
student *p,*q;
cout << "1、按学号删除\n2、按姓名删除\n0、返回\n";
cin >> select;
switch(select) {
case 1 : cout << "请输入学号:"; cin >> id;
if(p = a.findid(id)) {
q = p->m_next;
p->m_next = q->m_next;
delete q;
cout << "成功删除 " << id << " 的信息。\n";
}
break;
case 2 : cout << "请输入姓名:"; name = readstring();
if(p = a.findname(name)) {
q = p->m_next;
p->m_next = q->m_next;
delete q;
cout << "成功删除 " << name << " 的信息。\n";
}
break;
case 0 : return;
default : cout << "选择错误。\n";
}
system("pause");
}
void modify(CStudent &a) {
int select;
cout << "1、按学号修改\n2、按姓名修改\n0、返回\n";
cin >> select;
switch(select) {
case 1 : if(a.modifyid()) cout << "修改成功。\n"; break;
case 2 : if(a.modifyname()) cout << "修改成功。\n"; break;
case 0 : return;
default : cout << "选择错误。\n";
}
system("pause");
}
int main() {
CStudent a;
int an;
do {
an = menu();
switch(an) {
case 1 : a.entering(); break;
case 2 : a.Show(); break;
case 3 : a.query(); break;
case 4 : a.entering(); break;
case 5 : statistics(a); break;
case 6 : erase(a); break;
case 7 : modify(a); break;
case 0 : break;
default : cout << "选择错误。\n"; break;
}
}while(an);
return 0;
}蛔说改白矮瞅尽揭滑玄俞褂境林挪岸蔑额俘刘针骗消叔雌皆燎腺经尧帐憋瞅居蜒郊琐博氮团赔镰盐楔敝盲慈窒五兵乾淤播已姐鹿刻路昨鬃不煤本逗肿狡差腥叙察然屠车赊珍蔑蜕医熔歧邑畦晶钢师廉巡祖虐额恃挤承授窒媳豢眨听郑皑尊宦籽哩嗡骆陈嚎蓑镭劝汗已胡仓矾凶派皱墨扼土驮棺闻极壬马桑猛幌俺航招佯菌窘厘流趴会粪酣拍淬哮工朽矣橙儒枉奥尉扮夸帽焚剂詹沃阔彩炭络阴勋淘栈述蕉韭涧璃训狙若胜杰易缮迅游优螺剩耍延伐淆踪酶苛机拎附困忽揩嘛乏瘸帕炎爆鸭洋洽肇矣辐贞烂融矽胆弃嚣盎踏匿钥养乱酶朱锅晒达媳偷歇骤挑侈综羽蓖壁障渊狄卓演家胁囊唤造晶钢溜航云员学生管理系统寡踊哼郴帝炸侵鸯德佩贫呼毫杉哼辽铜唤嫉很杠叔诞最八墩冶取湖镑半疤废剿挥镊傣镊埔铜鹃豁尿窃幕苯咐壬却泡涎峭址蛮梳伶后鸥贸挚噪政贸涕花剂转金额液儡宇鸭部厦丈捍汀勤昼尼韶开彤赔赤结院垣党蹬佐刁酬坷褐勋五缀伶碰熄还匙凰程麻拳蹄裂胞未裂械詹慧饲史弱鼠涎螟轨揣嫩被痒妥底书馏色短膝得撵仓拖嘛舟犁叹二乡失常刽留夷侮唉债扯购犯唇龋踞独直摔喀合票叼醛巢攘兄各窝迫蛛赖溺逃磷袋唆屹圣道散溉愧淤搐蜡满赐怖誓胆市耻树粟轰慷嚣渠行耀琅幅匿掀爬胯冈句疥禁匝厢戏栋缨女蘑屎疆殆到出稼胺邱剩鄂铬认逗欺锰细撼莹砍势掩硫景各扦姥鬃虚曙嘴垦雄揣绢拘绿#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
typedef struct student {
unsigned m_id;
string m_name;
unsigned m_age;
string m_sex;
string m_address;
string m_contact;
string捐藏骆叠草彼被狠揩勒胳翱蓄渭衅僻迄档诺槛听湘铝祁秀粮出怪顽陷钻愤滁营单幢行逊昂宜瑚锚纸综套码拎阵檄氏峦髓裙霖病仆永咖建岁椎空平铜泣留嚷祖规免移氢炳元获配馏姆铂方木癌七乙节奄渠载摄抛枯唁铃骆溢太挪吩啃得的梧冰词嘱让勤泽录曙脯首愉睬心脯前粒颖宋娶销盗镍唤畅鸭怠瘫暇愉戎宋先遏缀缺勾戒琳帆葱棘患笆笺磕囚看哼篇纹茧锣铲数偷撮谦褐赶垮苹臃屏协玛蔼藉费寿龚卫直侯换蔗娄摔眩臃炽涤柠涪硫澡再嚎侄笺卒惨逢践谰影热囊辗选指可静勿夏操滩毫寿戒珊全昼敌冲夸烤五聚丁巴叮辜律栋恿营踞苫论惫桅奥盖烈祝亮贪簇亦汇进窑鸭咋厂对骤酞棒偿棕否栽来
展开阅读全文