问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++学生信息管理系统源代码怎么写

发布网友 发布时间:2022-05-04 14:49

我来回答

1个回答

热心网友 时间:2022-06-23 05:55

#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;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
全中国有几个叫汪前通的 中国有多少个汪金鹏 有姓汪的吗 刚断奶小猪感念了伪狂犬还能做苗吗? 大庆实验中学的复读生对应届生的排名冲击大吗 广袤怎么造句? ...音乐叫什么名字,其中有一段歌词是:恨在今天再相遇,我此身早破损... 歌词“是否恨在今天再相遇有许多可缱恋...”的歌名叫甚麽?是许秋怡唱的... 恨在今天再相遇的方季韦歌曲 恨在今天再相遇国语版是什么名? android学生信息管理系统怎么添加值到数据库 急求关于“学生信息管理系统”C++代码! 学生信息管理系统,C++实现的源代码 学生信息管理系统设计 代码 急求,基于Android的学生信息管理系统源代码,+区分一般用户和管理员 各位好,请问电脑装有解码器还需要转换ppt视频格式吗? 网约车哪家奖励最多 百度ios实习生面试面试应该准备什么?问的问题难吗? 电脑重启起不来 开机能起来 电脑自动重启,有时候重启还起不来,没有蓝屏,这是怎么回事? 电脑在正常工作时突然自动重启可有起不来是怎么回事? 常州大学,南通大学,扬州大学,江苏大学哪个比较好 我是读南通大学三年学硕还是扬州大学两年专硕啊?南通人以后在这发展的,思政专业 扬州大学和南通大学哪个好 南通大学和扬州大学是什么关系? 江苏大学、南通大学、扬州大学哪个大学的临床医学比较好?理科366分 与生活相关的幼儿绘本故事有哪些 Allen-Bradley PLC在哪里有得买? 求一部很老的美剧名,男主人公在想要交通工具的时候就会出现类似激光在面前模拟出汽车或者摩托车。 听说银杏茶可以软化血管,可以预防血栓? 求一个C++学生信息管理系统的代码 vc++6.0 学生信息管理系统(含教师端 学生端密码登陆)代码 或则文档 学生信息管理系统C语言源代码 ?? 七天存款利率怎么算 当前发起的解封次数超过上限,怎么办 在么,我微信解封时间到了,但是找微信好友解封,要么就是不符合要么就是次数达到了,怎么办了? 微信封号打不开了,需要发送验证到10690700367去才了解封,但总收不到验证码怎么办? 微信解封好友验证超过次数怎么办? 正品浪莎丝袜,多少钱一双。 浪莎为什么没190丝袜 如何辨别真假浪莎丝袜。求大神帮助 浪莎丝袜的质量怎么样 ll? 浪莎丝袜好不好,优点,缺点 浪莎,梦娜,宝娜斯 牌子的丝袜 那个比较实惠,质量又好 淘宝上的浪莎丝袜才3元一双,是正品吗? 浪莎丝袜质量怎么样?防勾吗? 同价位的丝袜,梦娜和浪莎哪个质量好? 浪莎的连裤袜哪种比较耐穿一些? 为什么浪莎丝袜质量越做越差了? 手机忘记密码后怎么恢复出厂设置?