学生成绩管理系统[通俗易懂]

学生成绩管理系统

大家好,又见面了,我是全栈君。

#include<iostream>
#include<string>
#include<fstream>
#include<cstdlib>

using namespace std;
enum {SUBJECT=5};//一共五门

typedef struct
{
char subject[10];//科目名称
int score;//科目成绩
}markinfo;

typedef struct studentnode
{
markinfo mark[SUBJECT];
int totalmark;
char name[10];//学生姓名
studentnode * next;
}studentnode;

class student 
{
studentnode * head;
public:
student();
int addstudent();
~student();
int countmark();
int sortbymark();
int save();
int show();
int display();
int readfiletolist();
int searchbyname();
};
student::student() //用构造函数来初始化。

{head=new studentnode;head->next=NULL;}//1.输入学生姓名、成绩等数据,并保存在链表中。int student::addstudent(){studentnode * p;int i;char check;system("cls");cout<<"**********************"<<endl;cout<<"请输入学生信息:"<<endl;do{p=new studentnode;cin.ignore();cout<<"姓名:";gets(p->name);i=0;p->totalmark=0;do{cout<<"科目:";gets(p->mark[i].subject);cout<<"成绩(0--100):";do{cin>>p->mark[i].score;}while(p->mark[i].score>100||p->mark[i].score<0);p->totalmark=p->totalmark+p->mark[i].score;getchar();}while(++i!=SUBJECT);if(head->next==NULL){head->next=p;p->next=NULL;}else {p->next=head->next;head->next=p;}cout<<"继续加入?y or n :";check=getchar();}while(check!='n' &&check!='N');return 0;}//2.计算每位学生总成绩。int student::countmark(){studentnode * p=head->next;if(p==NULL){cout<<"没有学生,请又一次输入"<<endl;system("pause");return 0;}else {cout<<"***************"<<endl;cout<<"学生成绩汇总:"<<endl;while(p){cout<<"姓名:"<<p->name<<" 总成绩:"<<p->totalmark<<endl;p=p->next;}}system("pause");return 0;}//4.输出全部学生成绩到一个文件里。int student::save(){char address[35];int i;studentnode * p=head->next;cout<<"请输入保存的地址"<<endl;cin.ignore(); gets(address);ofstream fout;fout.open(address,ios::app|ios::out);while(p){fout<<"*";fout<<p->name<<"*";i=0;while(i!=SUBJECT){fout<<p->mark[i].subject<<"*";fout<<p->mark[i].score;i++;}//fout<<"*";p=p->next;}fout.flush();fout.close();cout<<"已经保存。请查阅";system("pause");return 0;}student::~student() //析构函数{studentnode * p,* s;p=head->next;while(p){s=p->next;delete p;p=s;}delete head;}//3.依照总成绩大小对记录进行排序int student::sortbymark(){studentnode *move1=head->next;studentnode *move2,*max,*pre1,*pre2,*maxpre,*s=move1;if(head->next==NULL){cout<<"没有记录,请加入"<<endl;system("pause");return 0;}for(pre1=head,max=move1,maxpre=pre1;move1->next!=NULL;pre1=move1,maxpre=pre1,move1=move1->next,max=move1){for(pre2=move1,move2=move1->next;move2!=NULL;pre2=move2,move2=move2->next)if(move2->totalmark>max->totalmark){maxpre=pre2;max=move2;}if(move1->next==max) //交换max和move1。

{pre1->next=max;move1->next=max->next;max->next=move1;move1=max;} else{s=move1->next;move1->next=max->next;max->next=s;maxpre->next=move1;pre1->next=max;move1=max;}}cout<<"已经依照从大到小排序"<<endl;system("pause");return 0;}//5输出输入的信息int student::show(){studentnode * p=head->next;int i;if(head->next==NULL){cout<<"没有学生记录,请加入"<<endl;system("pause"); return 0;}else {while(p){cout<<"姓名:"<<p->name;i=1;while(i!=SUBJECT+1){cout<<"科目:"<<p->mark[i-1].subject;cout<<" 成绩:"<<p->mark[i-1].score;i++;}cout<<endl;p=p->next;}}system("pause");return 0;}//6:从文件按读取记录int student::display(){ifstream fin;char buf[100];char str[25];cout<<"请输入路径及文件名称:"<<endl;cin.ignore();gets(str);fin.open(str);if(!fin){cout<<"没有此文件"<<endl;system("pause");return 0;}while(fin){fin.getline(buf,sizeof(buf));cout<<buf<<endl;}system("pause");return 0;}//8从文件里读取数据,并将数据保存在链表中int student::readfiletolist(){ifstream fin;int i;char str[25];cout<<"请输入路径及文件名称:"<<endl;cin.ignore();gets(str);fin.open(str);if(!fin){cout<<"没有此文件"<<endl;system("pause");return 0;}studentnode * p;fin.ignore(100,'*');while(fin){p=new studentnode;p->totalmark=0;fin.getline(p->name,100,'*');i=0;while(i!=SUBJECT){fin.getline(p->mark[i].subject,100,'*');fin>>p->mark[i].score;p->totalmark+=p->mark[i].score;i++;}if(head->next==NULL){head->next=p;p->next=NULL;} else{p=head->next;head->next=p;}}cout<<"信息已经保存在链表中"<<endl;system("pause");return 0;}//9依据姓名进行查找int student::searchbyname(){if(head->next==NULL){cout<<"没有学生,请加入或者从文件里读取"<<endl;system("pause");return 0;}studentnode * p=head->next;char findname[10];int i;cout<<"请输入姓名:";cin.ignore();gets(findname);while(p){if(!strcmp(p->name,findname)){cout<<"经查找。找到该生信息例如以下:"<<endl<<endl;cout<<"姓名:"<<p->name;i=1;while(i!=SUBJECT+1){cout<<"科目:"<<p->mark[i-1].subject;cout<<" 成绩:"<<p->mark[i-1].score;i++;}cout<<endl;system("pause");return 1;}p=p->next;}cout<<"没有此学生,请加入或者从文件里读取"<<endl;system("pause");return 0;}int showmenu(){int choice;char * menu[9]={ "1:输入学生成绩保存到链表\n","2:计算每位学生总成绩\n","3:依照总成绩大小对记录进行排序\n","4:输出全部学生成绩到一个文件里\n","5:显示新输入的学生信息\n","6:从文件里读取信息\n","7:将文件信息保存在链表中\n","8:依据姓名查找学生记录\n","9:结束程序\n"};cout<<" "<<"*****************************************************"<<endl;cout<<" *"<<" "<<"学生成绩管理系统"<<" *"<<endl;cout<<" "<<"*****************************************************"<<endl;for(choice=0;choice<9;choice++)cout<<" "<<menu[choice];cout<<" "<<"*****************************************************"<<endl;cout<<"please choose to continue"<<endl;do{cin>>choice;}while(choice>9||choice<1);return choice;}int main(){int menuitem,flag=1;student stu;while(flag){system("cls");menuitem=showmenu();switch(menuitem){case 1:{stu.addstudent();break;}case 2:{stu.countmark();break;}case 3:{stu.sortbymark();break;}case 4:{stu.save();break;}case 5:{stu.show();break;}case 6:{stu.display();break;}case 7:{stu.readfiletolist();break;}case 8:{stu.searchbyname();break;}case 9:{flag=0;break;}}}return 0;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115232.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月7日 上午11:00
下一篇 2022年2月7日 上午11:00


相关推荐

  • python jinja2_Python模块学习 – jinja2

    python jinja2_Python模块学习 – jinja2转置 https www cnblogs com dachenzi p 8242713 html 模板要了解 jinja2 那么需要先理解模板的概念 模板在 Python 的 web 开发中广泛使用 它能够有效的将业务逻辑和页面逻辑分开 使代码可读性增强 并且更加容易理解和维护 模板简单来说就是一个其中包涵占位变量表示动态的部分的文件 模板文件在经过动态赋值后 返回给用户 gt 可以理解为渲染

    2025年5月21日
    6
  • QQ盗号核心编程[通俗易懂]

    QQ盗号核心编程[通俗易懂]QQ盗号核心编程作者:未知来源:CnXHacker.Net

    2022年6月14日
    52
  • intellijidea激活码_通用破解码

    intellijidea激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    89
  • Python画图爱心_python语言画爱心

    Python画图爱心_python语言画爱心都说程序员不浪漫,上次看到一个程序员小哥给自己老婆开发了一个专属的APP。其实程序员还有更多美好的事情可以做,比如,给你喜欢的妹纸,用代码的方式去表白(当然可能还有一些前戏啥的,自己结合实际场景再渲染下),直接上代码:print’\n’.join([”.join([(‘loveyou'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y…

    2025年9月24日
    7
  • 三、Eurake 服务注册与发现「建议收藏」

    三、Eurake 服务注册与发现「建议收藏」3、Eurake服务注册与发现3.1基于Springboot构建Eurake服务在第二节中《Springboot项目构建》 中的第三步中选择如下组件: 左侧选择 cloudDiscovery 在其子组件中选择 EurakeServer ,我们在这里面还可以看到 EurakeDiscovery 、ZookeeperDiscovery 等组件。其中EurakeDisco

    2022年6月10日
    59
  • linux 下gz文件解压命令,Linux解压gz文件的命令怎么写

    linux 下gz文件解压命令,Linux解压gz文件的命令怎么写Linux解压gz文件的命令怎么写发布时间:2020-11-1713:39:53来源:亿速云阅读:122作者:小新小编给大家分享一下Linux解压gz文件的命令怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!gz文件是一种压缩文件,以.gz或者.tar.gz(.tgz)为扩展名,在Linux、UNIX和OSX下常见…

    2022年5月20日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号