1. 课题来源
课题名称:新生基本信息统计软件
课题来源:《C++面向对象程序设计》课程设计任务书
体现面向对象的特性:类与对象的特性,封装机制,数据成员等特性。
2.任务描述
有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。要求设计链表类来实现,并统计学生人数。
文本界面为:
1. 新增学生信息
2. 删除学生信息
3. 导入学生信息(已经保存于的文件信息)
4. 学生信息搜索(按姓名)
5. 学生信息统计(按专业或性别或年龄---年龄要自动计算)
6. 按英语成绩排序
7. 学生信息保存
8. 退出
2.1.课题的总体结构
2.2.核心功能模块与类设计
(1)找出类 ;
(2)采用表格的形式,按照类在课题中的作用,列出核心类的功能定义和主要函数接口;
3.程序(系统)详细设计
#include<iostream>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<string>
#include<fstream>
#include<windows.h>
using namespace std;
class Student {
public:
void Set_name(string name) { //姓名
this->name=name;
}
void Set_sex(string sex) { //性别
this->sex=sex;
}
void Set_major(string major) { //专业
this->major=major;
}
void Set_num(int num) { //学号
this->num=num;
}
void Set_age(int age) { //年龄
this->age=age;
}
void Set_date(string date) { //出生日期
this->date=date;
}
void Set_address(string address) { //家庭住址
this->address=address;
}
void Set_score(int score) { //英语入学成绩
this->score=score;
}
void Set_next(Student *next) { //next指针
this->next=next;
}
string get_name() {
return name;
}
string get_sex() {
return sex;
}
string get_major() {
return major;
}
int get_num() {
return num;
}
int get_age() {
return age;
}
string get_date() {
return date;
}
string get_address() {
return address;
}
int get_score() {
return score;
}
Student *get_next() {
return next;
}
private:
string name,sex,date,address,major;
int num,score,age;
Student *next;
};
class List {
public:
List();
void insert_list(); //添加新生的信息
void delete_list(); //删除新生的信息
void update_list(); //修改新生的信息
void charu(); //插入新生的信息
void look_name(); //按姓名查询新生信息
void paixu_list(); //按英语入学成绩排序
void count(); //按性别统计新生个数
void print_all(); //查看全部新生的信息
void save(); //保存新生的信息
void read(); //读取新生的信息
private:
Student *head;
};
List::List() { //建立头结点
head=new Student();
if(head==NULL) {
cout<<"链表创建失败"<<endl;
exit(0);
}
head->Set_next(NULL);
}
void List::insert_list() { //添加新生的信息
string name,sex,date,address,major;
int num,score,age;
int x=1;
Student *p1,*r;
r=head;
while(r->get_next()!=NULL) { //使结点循环到最后
r=r->get_next();
}
while(x) {
p1=head;
int y=1;
Student *p=new Student;
if(p==NULL) {
cout<<"链表创建失败"<<endl;
exit(0);
}
cout<<"请输入你要添加的学生学号:";
cin>>num;
while(p1->get_next()) {
if(p1->get_next()->get_num()==num) {
y=2;
cout<<"已经有此学生的信息,请重新输入\n\n";
break;
}
p1=p1->get_next();
}
if(y==2) {
continue;
} else {
p->Set_num(num);
cout<<"请输入你要添加的学生姓名:";
cin>>name;
p->Set_name(name);
cout<<"请输入你要添加的学生性别:";
cin>>sex;
p->Set_sex(sex);
cout<<"请输入你要添加的学生年龄:";
cin>>age;
p->Set_age(age);
cout<<"请输入你要添加的学生的出生日期:";
cin>>date;
p->Set_date(date);
cout<<"请输入你要添加的学生的家庭住址:";
cin>>address;
p->Set_a