学生成绩管理系统

功能页面显示:

  

实现源码:

 #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 ;
}

最新文章

  1. SqlBulkCopy 从bcp客户端收到一个对 colid 1 无效的列长度。
  2. PHP 7 测试用例(转)
  3. LVS三种工作方式八种算法
  4. 关于COUNT STOPKEY的工作机制(转载)
  5. 使用 PHP 验证表单数据
  6. linq to sql 三层架构中使用CRUD操作
  7. iOS NSNumber语法糖
  8. uvaoj 10397 - Connect the Campus【最小生成树】
  9. fddd
  10. Android appcompat备案
  11. ※编程随笔※=&gt;☆编程基础☆=&gt;※№ SVN工具自动属性 $Author$ $Date$ $Revision$ $URL$ $Header$替换
  12. 深入 CSocket 编程之阻塞和非阻塞模式
  13. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
  14. BZOJ_3932_[CQOI2015]任务查询系统_主席树
  15. 关于学习Linux的基本命令操作
  16. onclick=&quot;return function()&quot;的使用情况
  17. 关于VIM自动缩进失效(filetype indent on无效)的详细分析
  18. pandas基础用法——索引
  19. ssh方式与服务器建立连接
  20. 各种SSD SMART 信息 转

热门文章

  1. TCP与UDP,可靠UDP如何实现
  2. 使用jQuery+huandlebars遍历中if判断
  3. k8s之创建etcd集群
  4. 对话框改变颜色 宽度沾满屏幕 Dialog
  5. SQL Server 2008 R2 根据WSDL访问WebService
  6. 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段
  7. React-router4 第八篇 ReactCSSTransitionGroup 动画转换
  8. vue 需求 data中的数据之间的调用
  9. Zookeeper 集群配置及启动
  10. springMVC学习 十二 拦截器