学生成绩管理系统

功能页面显示:

  

实现源码:

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

学生成绩管理系统(C++指针、链表、文件及面向对象的运用)的更多相关文章

  1. 学生成绩管理系统C(链表)语言

    #include"stdio.h" #include"stdlib.h" #include"string.h" //用于调用一些函数 str ...

  2. c++链表实现学生成绩管理系统(简易版)

    #include<iostream> using namespace std; typedef struct student{ int id;//学号 string sex; string ...

  3. 基于C语言文件操作的学生成绩管理系统

    原理 在一个班级学生成绩管理系统中,希望处理每个学生的学习情况信息,其中包括学生的学号.姓名.各科名称和成绩等并能使管理人员通过界面完成对学生信息的录入及对学生信息的录入及对数据的查找.浏览.插入.排 ...

  4. 使用C++名单在文档处理和学生成绩管理系统相结合

    对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...

  5. C项目实践--学生成绩管理系统

    1.功能需求分析 学生成绩管理系统是对学生基本信息及成绩的管理.本程序主要实现了对学生的学号.姓名等基本信息以及各项学科成绩进行增加.删除.修改.查询和保存到磁盘文件等操作.主要功能描述如下: (1) ...

  6. 从零开始的C程序设计大作业——学生成绩管理系统

    前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...

  7. 【学生成绩管理系统】 大二c语言作业

    几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...

  8. [项目记录] 用c语言完成的一个学生成绩管理系统

    一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...

  9. 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念

    1 成绩管理系统概述 1.1  管理信息系统的概念  管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...

随机推荐

  1. jQuery自定义alert,confirm方法及样式

    学过JavaScript的都知道,alert().confirm()都是window对象特有的方法,而这两个方法我们平时使用的频率也很高,但是比较扎心的就是他自带的样式太... 因此,我整理了一个比较 ...

  2. Match-----Correlation-----find_ncc_model_exposure

    * This example program shows how to use HALCON's correlation-based* matching. In particular it demon ...

  3. Smart Contract - Hello World

    [编写Smart Contract] 1.包含头文件. #include <eosiolib/eosio.hpp> #include <eosiolib/print.hpp> ...

  4. ucore-lab1-练习5report

    实验5--实现函数调用堆栈跟踪函数 需要完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址. 一.函数堆栈 ...

  5. AI大道理头尾标识

    标题 点击上方“AI大道理”,选择“置顶”公众号 重磅干货,深入讲解AI大道理 —————— 正文 —————— 浅谈则止,深入理解AI大道理 扫描下方“AI大道理”,选择“关注”公众号 欢迎加入!

  6. 【python原理解析】gc原理初步解析

    python的gc是会用到:引用计数.标记-清除和分代收集,首先说明一下什么是引用计数 可以通过sys模块中的getrefcount()方法获取某个对象的引用计数 python本身的数据类型有基础类型 ...

  7. 在当前目录打开DOS命令窗口

    Windows7系统:Shift + 鼠标右键 Windows10系统:Shift + 鼠标右键打开Power shell,在Power shell的命令窗口中输入:start cmd

  8. JAVA初学者的JDB 尝试

    使用JDB调试简单递归程序 跟着娄老师的博客学习, 首先在终端使用Ctrl+Shift+T打开三个标签,方便操作. 使用Vim编辑自己的程序,练习程序如下 1 public class Factori ...

  9. TUN/TAP编程实现

    其实关于这两种设备的编程,基本上属于八股文,大家一般都这么干. 启动设备之前 有的linux 并没有将tun 模块编译到内核之中,所以,我们要做的第一件事情就是检查我们的系统是否支持 TUN/TAP ...

  10. redis使用规范文档 20170522版

    运维redis很久了,一直是口头给rd说各种要求,尝试把这些规范总结成文档 摘选一些可能比较通用的规则如下: 强制:所有的key设置过期时间(最长可设置过期时间10天,如有特殊要求,联系dba说明原因 ...