c++课程设计实现学生信息管理系统

以前发过一个c的学生信息管理帖子,有兴趣的可以了解下。
c课程设计代码,点我查看
接下来是c++课程设计代码,也是实现学生信息管理系统的。

#include<iostream>
#include<string>
#include<fstream>
#include<stdlib.h>
#include<windows.h>
int n=0;
using namespace std;

class yemian {
	public:
		void jiemian();
};

typedef class Student {
	public:
		class Student *next;
		void set_no() {
			cin>>no;
		}
		void set_name() {
			cin>>name;
		}
		void set_sex() {
			cin>>sex;
		}
		void set_major() {
			cin>>major;
		}
		void set_y() {
			cin>>y;
		}
		void set_m() {
			cin>>m;
		}
		void set_d() {
			cin>>d;
		}
		void set_address() {
			cin>>address;
		}
		void set_grade() {
			cin>>grade;
		}
		int get_no() {
			return no;
		}
		string get_name() {
			return name;
		}
		string get_sex() {
			return sex;
		}
		string get_major() {
			return major;
		}
		int get_y() {
			return y;
		}
		int get_m() {
			return m;
		}
		int get_d() {
			return d;
		}
		string get_address() {
			return address;
		}
		int get_grade() {
			return grade;
		}
		void set_no(int no2) {
			no=no2;
		}
		void set_name(string name1) {
			name=name1;
		}
		void set_sex(string sex1) {
			sex=sex1;
		}
		void set_major(string major1) {
			major=major1;
		}
		void set_address(string address1) {
			address=address1;
		}
		void set_grade(int grade1) {
			grade=grade1;
		}
		void set_y(int y1) {
			y=y1;
		}
		void set_m(int m1) {
			m=m1;
		}
		void set_d(int d1) {
			d=d1;
		}
	private:
		int no;
		string name;
		string sex;
		string major;
		int y;
		int m;
		int d;
		string address;
		int grade;
		//class Student *head;
		//class Student *next;
} stu;

typedef class students {
	public:
		void add();
		void amputate();
		void baocun();
		void sousuo();
		void paixv();
		void tongji();
		void daoru();
		void xingbie();
		void zhuanye();
		void nianling();
	private:
		class Student *head;
} stus;

void stus::daoru() {
	int no3;
	string name3;
	string sex3;
	string major3;
	int y3;
	int m3;
	int d3;
	string address3;
	int grade3;
	stu *q,*p;
	//q=new stu;
	q=p=head;
	//head=q;
	static int i=0;
	ifstream in("D:\\file.txt");
	if(!in) {
		cout<<"打开失败";
	} else {
		while(!in.eof()) {
			q=new stu;
			//in>>q->set_no()>>q->set_name()>>q->set_sex()>>q->set_major()>>q->set_y()>>q->set_m()>>q->set_d()>>q->set_address()>>q->set_grade();
			in>>no3;
			q->set_no(no3);
			in>>name3;
			q->set_name(name3);
			in>>sex3;
			q->set_sex(sex3);
			in>>major3;
			q->set_major(major3);
			in>>y3;
			q->set_y(y3);
			in>>m3;
			q->set_m(m3);
			in>>d3;
			q->set_d(d3);
			in>>address3;
			q->set_address(address3);
			in>>grade3;
			q->set_grade(grade3);
			n+=1;
			if(n==1) {
				head=q;
			} else {
				p->next=q;
			}
			p=q;
			p->next=NULL;
		}
		in.close();
	}
}
void stus::add() {
	stu *q,*p;
	p=q=head;
	p=new stu;
	if(p==NULL) {
		cout<<"error set";
	} else {
		cout<<"请输入该学生学号: \n";
		p->set_no();
	}
	while(p->get_no()!=-1) {
		cout<<"请输入该学生的姓名:\n";
		p->set_name();
		cout<<"请输入该学生的性别: \n";
		p->set_sex();
		cout<<"请输入该学生的专业: \n";
		p->set_major();
		cout<<"请输入该学生的出生年,月,日 : \n";
		p->set_y();
		p->set_m();
		p->set_d();
		cout<<"请输入该学生的地址: \n";
		p->set_address();
		cout<<"请输入该学生的英语成绩: \n";
		p->set_grade();
		n+=1;
		if(n==1) {
			head=p;
		} else {
			q->next=p;
		}
		q=p;
		q->next=NULL;
		//p=(stu *)malloc(sizeof(stu));
		p=new stu;
		cout<<"如果你想停止输入请在下面的学号输入项中输入-1,谢谢\n";
		cout<<"请输入该学生学号: \n";
		p->set_no();
	}
	//delete(p);
	free(p);
	p=NULL;
	/*stu *h;
	h=head;
	while(h!=NULL)
	{
		cout<<h->name<<"\t"<<h->sex<<"\t"<<h->major<<"\t"<<h->y<<"\t"<<h->m<<"\t"<<h->d<<"\t"<<h->address<<"\t"<<h->grade<<"\n";
		h=h->next;
	}*/
}

void stus::amputate() {
	int i;
	int n=0,a=0;
	stu *p,*q,*t;
	q=t=p=head;
	cout<<"请输入你想删除的学生得学号:"<<endl;
	cin>>i;
	if(head==NULL) {
		cout<<"此时无学生数据数据\n";
		p=t=q=NULL;
	}
	while(p!=NULL) {
		n+=1;
		if(p->get_no()==i) {
			a+=1;
			if(p==head) {
				head=p->next;
				t=q=NULL;
			} else {
				q->next=p->next;
			}
			free(p);
			p=NULL;
			break;
		}
		q=p;
		p=p->next;
	}
	if(n!=0&&p==NULL&&a==0) {
		cout<<"该学生不存在\n";
	}
	t=head;
	while(t!=NULL) {
		cout<<"学号: "<<t->get_no()<<"\n"<<"姓名: "<<t->get_name()<<"\n"<<"性别: "<<t->get_sex()<<"\n"<<"专业: "<<t->get_major()<<"\n"<<"出生于"<<t->get_y()<<"年"<<t->get_m()<<"月"<<t->get_d()<<"日"<<"\n"<<"地址: "<<t->get_address()<<"\n"<<"英语成绩: "<<t->get_grade()<<"\n";
		cout<<"----------------------------------------------------------------------------------"<<endl;
		t=t->next;
	}
}

void stus::sousuo() {
	int n=0,a=0;
	stu *p;
	p=head;
	if(p==NULL) {
		cout<<"此时无学生数据数据.\n";
	}
	string sname;
	cout<<"请输入你想查找的学生的姓名:\n";
	cin>>sname;
	while(p!=NULL) {
		n+=1;
		if(p->get_name()==sname) {
			cout<<"学号: "<<p->get_no()<<"\n"<<"姓名: "<<p->get_name()<<"\n"<<"性别: "<<p->get_sex()<<"\n"<<"专业: "<<p->get_major()<<"\n"<<"出生于"<<p->get_y()<<"年"<<p->get_m()<<"月"<<p->get_d()<<"日"<<"\n"<<"地址: "<<p->get_address()<<"\n"<<"英语成绩: "<<p->get_grade()<<"\n";
			a+=1;
		}
		p=p->next;
	}
	if(n!=0&&p==NULL&&a==0) {
		cout<<"该学生不存在\n";
	}
}

void stus::zhuanye() {
	stu *p,*q;
	string a[20];
	int b[20];
	static int i=0,h=0,k=0;
	int m=0;
	p=q=head;
	if(p=NULL) {
		cout<<"此时无数据";
		q=NULL;
	} else {
		for(p=head; p!=NULL; p=p->next) {
			int l=0;
			int j=0;
			for(q=p->next; q!=NULL; q=q->next) {
				if(p->get_major()==q->get_major()) {
					j=j+1;
				}
			}
			if(k==0) {
				a[i]=p->get_major();
				b[i]=j+1;
				k=k+1;
				continue;
			}
			if(k!=0);
			{
				for(m=0; m<=i; m++) {
					if(p->get_major()==a[m]) {
						l=l+1;
					}
				}
				if(l!=0) {
					continue;
				}
				if(l==0) {
					i=i+1;
					a[i]=p->get_major();
					b[i]=j+1;
				}
			}
		}
		for(m=0; m<=i; m++) {
			cout<<a[m]<<":"<<b[m]<<"人"<<endl;
		}
	}
}

void stus::xingbie() {
	stu *p;
	int i=0,j=0;
	p=head;
	if(p==NULL) {
		cout<<"此时无数据";
	} else {
		while(p!=NULL) {
			if(p->get_sex()=="男") {
				i+=1;
			}
			if(p->get_sex()=="女") {
				j+=1;
			}
			p=p->next;
		}
		cout<<"男:"<<i<<"人"<<endl;
		cout<<"女:"<<j<<"人"<<endl;
	}

}

void stus::nianling() {
	stu *p,*q;
	int a[20];
	int b[20];
	static int i=0,h=0,k=0;
	int m=0;
	p=q=head;
	if(p=NULL) {
		cout<<"此时无数据";
	} else {
		for(p=head; p!=NULL; p=p->next) {
			int l=0;
			int j=0;
			for(q=p->next; q!=NULL; q=q->next) {
				if((2019-p->get_y())==(2019-q->get_y())) {
					j=j+1;
				}
			}
			if(k==0) {
				a[i]=(2019-p->get_y());
				b[i]=j+1;
				k=k+1;
				continue;
			}
			if(k!=0);
			{
				for(m=0; m<=i; m++) {
					if((2019-p->get_y())==a[m]) {
						l=l+1;
					}
				}
				if(l!=0) {
					continue;
				}
				if(l==0) {
					i=i+1;
					a[i]=2019-p->get_y();
					b[i]=j+1;
				}
			}
		}
		for(m=0; m<=i; m++) {
			cout<<a[m]<<"岁"<<":"<<b[m]<<"人"<<endl;
		}
	}
}

void stus::tongji() {
	int i;
	cout<<"请选择你需要的统计方法:"<<endl;
	cout<<"1、专业统计"<<endl;
	cout<<"2、按性别统计"<<endl;
	cout<<"3、按年龄统计"<<endl;
	cout<<"请选择:"<<endl;
	cin>>i;
	switch(i) {
		case 1:
			zhuanye();
			break;
		case 2:
			xingbie();
			break;
		case 3:
			nianling();
			break;
	}

}

void stus::paixv() {
	int i=0;
	stu *p,*q,*t;
	p=t=q=head;
	if(p==NULL) {
		cout<<"此时无数据";
	}
	while(p!=NULL) {
		if(p->next==NULL) {
			i+=1;
			cout<<"学号: "<<p->get_no()<<"\n"<<"姓名: "<<p->get_name()<<"\n"<<"性别: "<<p->get_sex()<<"\n"<<"专业: "<<p->get_major()<<"\n"<<"出生于"<<p->get_y()<<"年"<<p->get_m()<<"月"<<p->get_d()<<"日"<<"\n"<<"地址: "<<p->get_address()<<"\n"<<"英语成绩: "<<p->get_grade()<<"\n";
			break;
		}

		int no1;
		string name1;
		string sex1;
		string major1;
		int y1;
		int m1;
		int d1;
		string address1;
		int grade1;

		int no2;
		string name2;
		string sex2;
		string major2;
		int y2;
		int m2;
		int d2;
		string address2;
		int grade2;

		for(p=head; p!=NULL; p=p->next) {
			for(q=p->next; q!=NULL; q=q->next) {
				if(p->get_grade()<q->get_grade()) {
					no1=p->get_no();
					name1=p->get_name();
					sex1=p->get_sex();
					major1=p->get_major();
					y1=p->get_y();
					m1=p->get_m();
					d1=p->get_d();
					address1=p->get_address();
					grade1=p->get_grade();

					no2=q->get_no();
					name2=q->get_name();
					sex2=q->get_sex();
					major2=q->get_major();
					y2=q->get_y();
					m2=q->get_m();
					d2=q->get_d();
					address2=q->get_address();
					grade2=q->get_grade();

					p->set_no(no2);
					p->set_name(name2);
					p->set_sex(sex2);
					p->set_major(major2);
					p->set_y(y2);
					p->set_m(m2);
					p->set_d(d2);
					p->set_address(address2);
					p->set_grade(grade2);

				q->set_no(no1);
					q->set_name(name1);
					q->set_sex(sex1);
					q->set_major(major1);
					q->set_y(y1);
					q->set_m(m1);
					q->set_d(d1);
					q->set_address(address1);
					q->set_grade(grade1);

				}
			}
		}
	}
	p=q=NULL;
	t=head;
	while(t!=NULL&&i!=1) {
		cout<<"学号: "<<t->get_no()<<"\n"<<"姓名: "<<t->get_name()<<"\n"<<"性别: "<<t->get_sex()<<"\n"<<"专业: "<<t->get_major()<<"\n"<<"出生于"<<t->get_y()<<"年"<<t->get_m()<<"月"<<t->get_d()<<"日"<<"\n"<<"地址: "<<t->get_address()<<"\n"<<"英语成绩: "<<t->get_grade()<<"\n";
		cout<<"----------------------------------------------------------------------------------"<<endl;
		t=t->next;
	}
}

void stus::baocun() {
	fstream out("D:\\file.txt",ios::app);
	if(!out) {
		cerr<<"file not open\n";
	}
	stu *p;
	p=head;
	if(p==NULL) {
		cout<<"此时无数据";
		p=NULL;
	}
	while(p!=NULL) {
		out<<p->get_no()<<"\t"<<p->get_name()<<"\t"<<p->get_sex()<<"\t"<<p->get_major()<<"\t"<<p->get_y()<<"\t"<<p->get_m()<<"\t"<<p->get_d()<<"\t"<<p->get_address()<<"\t"<<p->get_grade();
		p=p->next;
	}
}

void yemian::jiemian() {
	system("color 8F");
	int i;
	stus n;
	do {
		system("date/t");
		system("time/t");
		system("color 8F");
		cout<<"---------------------------\n";
		cout<<"|    1、新增学生信息      |\n";//写完
		cout<<"|    2、删除学生信息      |\n";//写完
		cout<<"|    3、导入学生信息      |\n";
		cout<<"|    4、学生信息搜索      |\n";//写完
		cout<<"|    5、学生信息统计      |\n";//写完
		cout<<"|    6、按英语成绩排序    |\n";//写完
		cout<<"|    7、学生信息保存      |\n";//写完
		cout<<"|    8、退出              |\n";//写完
		cout<<"|    请输入要实现的功能   |\n";
		cout<<"---------------------------\n";
		cout<<"请选择你想进行的操作: \n";
		cin>>i;
		switch(i) {

			case 1:
				system("cls");
				n.add();
				break;
			case 2:
				system("cls");
				n.amputate();
				break;
			case 3:
				system("cls");
				n.daoru();
				break;
			case 4:
				system("cls");
				n.sousuo();
				break;
			case 5:
				system("cls");
				n.tongji();
				break;
					case 6:
						system("cls");
						n.paixv();
						break;
			case 7:
				system("cls");
				n.baocun();
				break;
			case 8:
				break;
		}
	} while(i!=8);
	if(i==8)
		cout<<"运行结束,感谢你的使用";
}
int main() {
	yemian y;
	y.jiemian();
	return 0;
}
(一). 实现简单地使用用户名和密码来进入登陆界面,以加强DOS运窗口的可视化效果。如果输入的用户名和密码有一项为空或者是输入的用户名和密码是错误的,则不能进入系统。 (二). 实现任意添加学生的信息,包括添加学生的个人学号,姓名,性别,专业,年级出生日期。输入不允许为空,并且有提示功能,如果输入的时候有一项为空则提示输入相关的信息。 (三). 实现删除学生的信息,包括删除学生的个人学号,姓名,性别,专业,年出生日期。根据编号进用户权限检查,在数据库中进查找相符和的记录,如果编号在数据库中不存在相应记录,则提示不能删除,否则可以删除该记录。输入不允许为空,并且有提示功能,如果输入的时候为空则提示输入相关的信息。 (四). 实现编辑学生的信息,包括编辑学生的个人学号,姓名,性别,专业,年级,出生日期。输入不允许为空,并且有提示功能,如果输入的时候有一项为空则提示输入相关的信息。 (五). 实现查询学生的信息,包括编辑查询学生的个学号,姓名,性别,专业,年级,出生日期。输入不允许为空,并且有提示功能,如果输入的时候为空则提示输入相关的信息。 (六). 实现保存学生的信息,包括保存学生的个人学号,姓名,性别,专业,年级,出生日期。
1、问题描述  学生信息包括:学号、姓名、性别、年龄、班级等信息。  小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。  中学生除了包括小学生所有信息外,还包括地理、历史成绩、家庭住址等信息。 大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。  2、功能要求  (1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。  (2)查询功能:可根据学号、姓名等信息对已添加的学生记录进查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。  (3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一。  (4)编辑功能:可根据查询结果对相应的记录进修改,修改时注意学号的唯一性。  (5)删除功能:主要实现对已添加的学生记录进删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。  (6)统计功能:能根据多种参数进统计。能统计学生人数、按性别统计、按年龄统计等。  (7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。  (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进使用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值