C++大作业 新生信息管理系统

首先运用面向对象的思想和方法,定义一个学生类。该类中有数据成员学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。

//学生类 
class Student {
	public:
		void stu_Name(string Name) {
			this->Name=Name;
		}

		void stu_Sex(string Sex) {
			this->Sex=Sex;
		}
		void stu_Major(string Major) {
			this->Major=Major;
		}
		void stu_Year(int Year) {
			this->Year=Year;
		}
		void stu_Month(int Month) {
			this->Month=Month;
		}
		void stu_Day(int Day) {
			this->Day=Day;
		}
		void stu_Adress(string Adress) {
			this->Adress=Adress;
		}
		void stu_Score(int Score) {
			this->Score=Score;
		}
		string get_Name() {
			return Name;
		}
		string get_Sex() {
			return Sex;
		}
		string get_Major() {
			return Major;
		}
		int get_Year() {
			return Year;
		}
		int get_Month() {
			return Month;
		}
		int get_Day() {
			return Day;
		}
		string get_Adress() {
			return Adress;
		}
		int get_Score() {
			return Score;
		}
	private:
		string Name;
		string Sex;
		string Major;
		int Year;
		int Month;
		int Day;
		string Adress;
		int Score;
};

再根据学生信息存储结构,定义学生信息的结点类型,其中创建了一个新生类对象s,用来存放节点中的数据域,next是指针类型的成员,他指向struct StuNode类型的数据,用来存放下一个结点的地址,属于结点中的指针域。

typedef struct StuNode {
	Student s;
	struct StuNode *next;
} stu;

再定义一个链表类,链表类中的成员函数有创建单链表,输出单链表,删除单链表结点,通过姓名查询将链表中的其中一个结点输出,按性别、专业、年龄排序,保存链表中的信息。

//链表类 
class StuListLink {
	public:
		void add();
		void print();
		void Delete();
		void Sort();
		void Look();
		void sta_Sex();
		void sta_Major();
		void sta_Age();
		void Save();
	private:
		stu *head;
		stu *tail;
		int count;
};

其中创建链表时,先输入需要录入的新生个数,再依次输入新生的各种信息,其中在输入新生性别时只能录入男或女,会通过字符串比较输入的数据是否为男或女,如果输入的格式不为男或女,将输出“输入有误,请重新输入”,此时要继续输入新生性别。在输入新生的出生日期时要依次输入新生出生日期的年、月、日,其中年份必须在2000~2021的范围内,月份必须在1~12的范围内,日期必须在1~31的范围内,最后再将刚才输入的信息存入链表结点中的数据域,接着输入下一位新生的信息,录入完毕后,将最后一个结点的数据域赋值为NULL,链表创建成功。

void StuListLink::add() {
	stu *p;
	cout<<"请输入学生总数:"<<endl;
	cin>>count;
	if(count<0) {
		cout<<"错误,总数不能小于0"<<endl;
		return;
	}
	head=new stu;
	head->s.stu_Name("\0");
	head->s.stu_Sex("\0");
	head->s.stu_Major("\0");
	head->s.stu_Year(0);
	head->s.stu_Month(0);
	head->s.stu_Day(0);
	head->s.stu_Adress("\0");
	head->s.stu_Score(0);
	head->next =NULL;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值