以前发过一个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;
}