学生成绩管理系统(C++指针、链表、文件及面向对象的运用)
2024-09-30 20:24:34
学生成绩管理系统
功能页面显示:
实现源码:
#include<iostream>
#include<fstream>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<windows.h>
using namespace std;
//学生类
class Student
{
public:
void inputStudent(Student *head); //输入学生的信息
void outputStudent(Student *head); //输出学生的信息
void deleteStudent(Student *head); //删除学生的信息
void addStudent(Student *head); //添加学生的信息
void changeStudent(Student *head); //修改学生的信息
void findStudent(Student *head); //查找学生的信息
void paixuStudent(Student *head);//学生成绩排序
void saveStudent(Student *head); //保存学生的信息
void loadStudent(Student *head);//加载学生的信息
void getcountStudent(Student *head); int num;
char name[];
char sex[];
float Chinese;
float English;
float Math;
float sum;
float average;
Student *next; private: };
void Student ::inputStudent(Student *head)//输入学生的信息
{
system("cls");
Student *p1,*p2; p1=head;
int N;
cout<<"哈喽,小可爱,请输入学生的总人数"<<endl;
cin>>N;
for(int i=;i<N;i++)
{
p2= new Student ;
p1->next=p2;
p1=p1->next;
cout<<"哈喽,小可爱,请输入学生的信息: "<<"学号 "<<"姓名 "<<"性别 " <<"语文 "<<"数学 "<<"英语 "<<endl;
cin>>p1->num>>p1->name>>p1->sex>>p1->Chinese>>p1->Math>>p1->English;
p1->sum=p1->Chinese+p1->Math+p1->English;
p1->average=(p1->sum)/;
}
p1->next=NULL;
cout<<"YES!输入成功"<<endl;
}
void Student ::outputStudent(Student *head)//浏览学生的信息
{
system("cls");
Student *p1,*p2; p1=head->next;
int r=;//名次
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<"排名"<<endl;
while(p1!=NULL)
{
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
cout<<r+<<endl;
r++;
p1=p1->next;
}
cout<<"YES!浏览成功"<<endl; }
void Student ::deleteStudent(Student *head)//删除学生的信息
{
system("cls"); Student *p1,*p2;
char n;
cout<<"哈喽,小可爱,请输入要删除的位置:"<<endl;
cin>>n;
int a;
a=n-'';
if(a>=)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p1=p1->next;
p2=p2->next;
}
p1->next=p2->next; cout<<"YES!删除成功"<<endl;
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
void Student ::addStudent(Student *head)//添加学生的信息
{
system("cls");
Student *p1,*p2;
Student *p3;
char n;
cout<<"哈喽,小可爱,请输入要添加的位置 "<<endl;
cin>>n;
int a;
a=n-'';
if(a>)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p2=p2->next;
p1=p1->next; }
p3=new Student;
cout<<"哈喽,小可爱,请输入你的信息 :"<<endl<<"学号 "<<"姓名 "<<"性别 "<<"语文 "<<"数学 "<<"英语 "<<endl; cin>>p3->num>>p3->name>>p3->sex>>p3->Chinese>>p3->Math>>p3->English;
p3->sum=p3->Chinese+p3->Math+p3->English;
p3->average=(p3->sum)/;
p3->next=p2;
p1->next=p3;
cout<<"YES!添加成功 "<<endl;
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
void Student::changeStudent(Student *head)//修改学生的信息
{
system("cls"); Student *p1,*p2;
Student *p3; char n;
cout<<"哈喽,小可爱,请选择你要修改的位置 :"<<endl;
cin>>n;
int a;
a=n-'';
if(a>)
{
if(a>= && a<=count)
{
p1=head;
p2=p1->next;
while(--a)
{
p1=p1->next;
p2=p2->next ;
}
cout<<"哈喽,小可爱,请输入你的信息 :"<<endl<<"学号 "<<"姓名 "<<"性别 "<<"语文 "<<"数学 "<<"英语 "<<endl; cin>>p2->num>>p2->name>>p2->sex>>p2->Chinese>>p2->Math>>p2->English;
p2->sum=p2->Chinese+p2->Math+p2->English;
p2->average=(p2->sum)/;
cout<<"YES!修改成功"<<endl; }
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
}
}
else
{
cout<<"输入错误,请输入0-"<<count<<"之间的数字位置:" ;
} }
void Student::findStudent(Student *head)//查找学生的信息
{
system("cls");
Student *p1;
int p;
int i=;
int stunum;
char stuname[];
p1=head->next;
cout<<"请选择 1.按学号查找 2. 按姓名查找"<<endl;
cin>>p;
if(p==)
{
system("cls");
cout<<"请输入要查找的学号 "<<endl;
cin>>stunum;
while(p1!=NULL)
{
if(stunum==p1->num)
{
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<endl;
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
}
p1=p1->next;
} }else if(p==)
{
system("cls");
cout<<"请输入要查找的姓名 "<<endl;
cin>>stuname;
while(p1!=NULL)
{
if(strcmp(p1->name,stuname)==)
{
cout<<"学号\t"<<"姓名\t"<<"性别\t"<<"语文"
<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"\t"<<"平均分"<<"\t"<<"\t"<<"总分"
<<"\t"<<"\t"<<endl;
cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->sex<<"\t"<<p1->Chinese<<"\t"<<p1->Math<<"\t"<<p1->English<<"\t"<<"\t";
cout<<p1->average<<"\t"<<"\t";
cout<<p1->sum<<"\t"<<"\t";
}
p1=p1->next;
}
}else
{
cout<<"输入选项错误 "<<endl;
} }
void Student::paixuStudent(Student *head)//排序
{
Student *p1;
Student *p2;
p1=head;
int n=;
int a=;
char b[];
int i,j;
while(p1->next)
{
p1=p1->next ;
n++;
}
for(i=;i<n-;i++)
{
p2=head->next;
p1=p2->next;
for(j=;j<n-i-;j++)
{
if(p1->average >p2->average )
{
strcpy(b,p2->name);
strcpy(p2->name ,p1->name );
strcpy(p1->name,b); strcpy(b,p2->sex);
strcpy(p2->sex ,p1->sex);
strcpy(p1->sex,b); a=p2->num ;
p2->num =p1->num ;
p1->num =a; a=p2->Chinese;
p2->Chinese=p1->Chinese;
p1->Chinese=a; a=p2->Math ;
p2->Math =p1->Math ;
p1->Math =a; a=p2->English ;
p2->English =p1->English ;
p1->English =a; a=p2->average;
p2->average =p1->average ;
p1->average =a; a=p2->sum ;
p2->sum =p1->sum ;
p1->sum =a;
}
p1=p1->next;
p2=p2->next;
}
}
cout<<"YES!排序成功 "<<endl;
}
void Student::saveStudent(Student *head) //保存学生的信息
{
Student *p;
ofstream os;
os.open("sco.txt"); p=head->next ;
while(p)
{
os<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->Chinese<<"\t" <<p->Math<<"\t" <<p->English <<"\t"<<p->sum<<"\t"<<p->average; p=p->next;
os<<endl;
} cout<<"YES!保存成功 "<<endl;
os.close();
}
void Student:: loadStudent(Student *head)//加载学生的信息
{
Student *p,*p2;
ifstream is;
is.open("sco.txt"); p2=head; while()
{
p=new Student;
is>>p->num>>p->name>>p->sex>>p->Chinese
>>p->Math>>p->English >>p->sum>>p->average;
if(is.fail() )//判断是否到文件结尾
{
delete p;
p2->next =NULL;
break;
} p2->next =p; p2=p2->next;
} cout<<"YES!加载成功 "<<endl; is.close(); }
int count;
void Student::getcountStudent(Student *head)
{
Student *p;
count=;
p=head;
while(p->next!=NULL)
{
count++;
p=p->next;
}
} void welcome()
{
cout<<" ~~~ 欢迎进入**学生成绩管理系统! ~~~"<<endl;
system("color 1");
}
void menu()
{
cout<<" ******************************************"<<endl;
cout<<" ~~~~~~~ 学生成绩管理系统 ~~~~~~~"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ******************************************"<<endl;
cout<<" ~~哈喽,小可爱,请选择你要进行的操作**" <<endl;
cout<<" ~~1. 输入学生的信息 ~~"<<endl;
cout<<" ~~2. 浏览学生的信息 ~~"<<endl;
cout<<" ~~3. 删除学生的信息 ~~"<<endl;
cout<<" ~~4. 添加学生的信息 ~~"<<endl;
cout<<" ~~5. 修改学生的信息 ~~"<<endl;
cout<<" ~~6. 查找学生的信息 ~~"<<endl;
cout<<" ~~7. 排序学生的成绩 ~~"<<endl;
cout<<" ~~8. 保存学生的信息 ~~"<<endl;
cout<<" ~~9. 加载学生的信息 ~~"<<endl;
cout<<" ~~0. 退出学生信息系统 ~~"<<endl;
cout<<" *****************************************"<<endl;
cout<<" *****************************************"<<endl;
cout<<" *****************************************"<<endl;
system("color b");
}
int main()
{
Student h;
system("cls");
welcome();
Sleep();
int i;
Student *head=new Student; while()
{
system("cls");
menu();
cout<<"哈喽,小可爱,请输入你要进行的操作 :"<<endl;
cin>>i;
switch(i)
{
case : cout<<"输入学生的信息 "<<endl;h.inputStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"浏览学生的信息 "<<endl;h.outputStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"删除学生的信息 "<<endl;h.deleteStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"添加学生的信息 "<<endl;h.addStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"修改学生的信息 "<<endl;h.changeStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"查询学生的信息 "<<endl;h.findStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"学生成绩的排序 "<<endl;h.paixuStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"保存学生的信息 "<<endl;h.saveStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"加载学生的信息 "<<endl;h.loadStudent(head);system("pause");h.getcountStudent(head);break;
case : cout<<"谢谢使用,欢迎下次光临 "<<endl;system("pause");exit(); default: cout<<"输入错误"<<endl;
}
}
return ;
}
最新文章
- SqlBulkCopy 从bcp客户端收到一个对 colid 1 无效的列长度。
- PHP 7 测试用例(转)
- LVS三种工作方式八种算法
- 关于COUNT STOPKEY的工作机制(转载)
- 使用 PHP 验证表单数据
- linq to sql 三层架构中使用CRUD操作
- iOS NSNumber语法糖
- uvaoj 10397 - Connect the Campus【最小生成树】
- fddd
- Android appcompat备案
- ※编程随笔※=>;☆编程基础☆=>;※№ SVN工具自动属性 $Author$ $Date$ $Revision$ $URL$ $Header$替换
- 深入 CSocket 编程之阻塞和非阻塞模式
- 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
- BZOJ_3932_[CQOI2015]任务查询系统_主席树
- 关于学习Linux的基本命令操作
- onclick=";return function()";的使用情况
- 关于VIM自动缩进失效(filetype indent on无效)的详细分析
- pandas基础用法——索引
- ssh方式与服务器建立连接
- 各种SSD SMART 信息 转