学生管理系统(记录自己的成长)

记录一下个人的成长,顺便发上来分享一下

#include
#include
#include
using namespace std;

//使用结构体,构成链表
struct Student
{
char name[200];
string num;
int year;
string sex;
char pro[200];
char work[200];
Student *next;
};
Student *head = NULL;
//使用的函数
void Initfile(Student *head)
{
Student *p = head; //先指向头节点

ifstream infile("student.txt", ios::app);
if (!infile)
{
	cout << "错误,没文件 ";
	exit(1);
}
while (1)
{

	Student *s = new Student;
	if (infile.eof()) { 
		break; 
	}//判断是否到文件底部
	infile >> s->name >> s->num >> s->year >> s->sex >> s->pro >> s->work;
	s->next = NULL;
	p->next = s;
	p = s;
}
infile.close();

}

void InsertStudent(Student *p) //加入学生
{
Student *s = new Student;
ofstream infile(“student.txt”, ios::app);
s->next = NULL;
cout << “请添加学生名字,id,年龄,性别,省份,专业” << endl;
cin >> s->name;
while (cin >> s->num) {
if (s->num.length() != 12) {
cout << “输入学号长度不合理请重新输入” << endl;
}
else {
break;
}
}
while (cin >> s->year) {
if (s->year <= 17 || s->year >= 25) {
cout << “请时输入合理的年龄” << endl;

	}
	else {
		break;
	}
}
while (cin >> s->sex) {
	if(s->sex!="男" && s->sex != "女"){
		cout << "请输入正确的性别" << endl;
	}
	else {
		break;
	}
}
cin >> s->pro >> s->work;
infile << s->name << " " << s->num << " " << s->year << " " << endl;
infile << s->sex << " " << s->pro << " " << s->work << " " << endl;
infile.close();
cout << "插入成功" << endl;
while (p!=NULL) {
	if (p->next != NULL)
		p = p->next;
	else
		break;
}
s->next = NULL;
p->next = s;
p = s;

}

void DelStudent(Student *p)//删除学生
{
string id;
Student *now = p->next;
Student *before = p;
int temp = 0;

cout << "请输入你要删除的学生学号" << endl;
cin >> id;

while (now != NULL)
{
	if (now->num == id) { 
		before->next = now->next;
		free(now);
		temp = 1;
		break;
	}
	now = now->next;
	before = before->next;
}
if (temp=1) { 
	cout << "删除成功"<<endl; 
}
else { 
	cout << "删除失败"<<endl; 
}

}

void ChangeStudent(Student * p)//通过ID改变学生信息
{
string num2;
cout << "请输入你要改变的id " << endl;
cin >> num2;
while (p != NULL)
{
if (num2 == p->num)
{
cout << “请输入你要改变的名字,年龄,性别,省份,专业” << endl;
cin >> p->name ;
while (cin >> p->year) {
if (p->year <= 17 || p->year >= 25) {
cout << “请时修改合理的年龄” << endl;

			}
			else {
				break;
			}
		}
		while (cin >> p->sex) {
			if (p->sex != "男" && p->sex != "女") {
				cout << "请修改正确的性别" << endl;
			}
			else {
				break;
			}
		}
		cin >> p->pro >> p->work;
		cout << "改变成功"<<endl;
		break;
	}
	p = p->next;
}
if (p == NULL) {
	cout << "找不到你所要的id" << endl;
}

}

void SearchStudent(Student * p) //查找学生
{
string num1;
cout << “请输入你要寻找的id” << endl;
cin >> num1;
while (p != NULL)
{
if (num1 == p->num)
{
cout << “查找成功” << endl;
cout<< p->name << " " << p->num << " " << p->year << " " << p->sex << " " << p->pro << " " << p->work << " " << endl;
break;
}
p = p->next;
}
if (p == NULL)cout << “查找失败” << endl;

}

void DisplayStudent(Student *p) //展示学生
{
p = p->next;
while (p != NULL)
{

		cout << p->name << "  " << p->num << "  " << p->year << "  " << p->sex << "  " << p->pro << "  " << p->work << "  " << endl;
		p = p->next;
	}

}

void Stamp(Student *p)//保存学生名单
{
p = p->next;
ofstream infile(“student.txt”);
while (p != NULL)
{
infile << p->name << " " << p->num << " " << p->year << " " << endl;
infile << p->sex << " " << p->pro << " " << p->work << " " << endl;
p = p->next;

}
infile.close();
cout << "保存成功" << endl;

}
void Display(Student head) // 展示菜单;
{ int num;
while (1)
{
cout << "
" << endl;
cout << "
" << endl;
cout << "
学生管理系统 " << endl;
cout << "
" << endl;
cout << "
*" << endl;
cout << " 请选择功能键0~6 " << endl;
cout << " 0:退出" << endl;
cout << " 1:浏览学生信息" << endl;
cout << " 2:插入学生信息" << endl;
cout << " 3:删除学生信息" << endl;
cout << " 4:查询学生信息" << endl;
cout << " 5:修改学生信息" << endl;
cout << " 6:保存学生信息" << endl;
cout << “------------------请输入选择(0~6)--------------” << endl;
cin >> num;
switch (num)
{case 1: {DisplayStudent(head); }
break;
case 2:InsertStudent(head);
break;
case 3: DelStudent(head);
break;
case 4: SearchStudent(head);
break;
case 5: ChangeStudent(head);
break;
case 6:Stamp(head);
break;
case 0: exit(1);
default: cout << “错误字符,再试一次!”<<endl;
}
}
}

int main()
{ Student *head = new Student;
head->next = NULL;
Initfile(head);
Display(head);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值