学生成绩管理系统升级版

简介:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
struct sa
{
    int num;
    char name[105];
    char sex[3];
    double score[5];
    double ave;
    double sum;
    int rank;
}data[105];
int cmp_upid(const sa&a, const sa&b)//按学号升序
{
    return a.num<b.num;
}
int cmp_downid(const sa&a, const sa&b)//按学号降序
{
    return a.num>b.num;
}
int cmp_upname(const sa&a, const sa&b)//按名字升序
{
    return strcmp(a.name,b.name)<0;
}
int cmp_downname(const sa&a, const sa&b)//按名字降序
{
    return strcmp(a.name,b.name)>0;
}
int cmp_uprank(const sa&a, const sa&b)//按排名升序
{
    return a.sum<b.sum;
}
int cmp_downrank(const sa&a, const sa&b)//按排名降序
{
    return a.sum> b.sum;
}
int _k=0,tmp=0;//_k是总的学生数目
void sort_pe()
{
    cout<<"0.按学生学号排序:"<<endl;
    cout<<"1.按学生姓名排序:"<<endl;
    cout<<"2.按学生排名排序:"<<endl;
    int m,n;
    cin>>m;
    cout<<"1.升序:"<<endl;
    cout<<"0.降序:"<<endl;
    cin>>n;
    switch(m)
    {
        case 0:
        {
           if(n == 1)
               sort(data,data+_k,cmp_upid);
           else if(n == 0)
               sort(data,data+_k,cmp_downid);
           else
               cout<<"Sorry"<<endl;
        }
        case 1:
        {
            if(n%2 == 1)
               sort(data,data+_k,cmp_upname);
            else
               sort(data,data+_k,cmp_downname);
        }
        case 2:
        {
            if(n%2 == 1)
               sort(data,data+_k,cmp_uprank);
            else
               sort(data,data+_k,cmp_downrank);
        }
    }
    for(int i=0; i<_k; i++)
    {
         int ans=1;
            for(int j=0; j<_k; j++)
              if(data[i].sum<data[j].sum)
                ans++;
        data[i].rank=ans;
    }
}
void add()//追加
{
    printf("学号:");
    scanf("%d",&data[_k].num);
    printf("姓名:");
    cin>>data[_k].name;
    printf("性别:");
    scanf("%s",data[_k].sex);
    data[_k].sum=0.0;
    puts("5门课的成绩:");
    for(int i=0;i<5;i++)//5门课程的成绩
    {
        cin>>data[_k].score[i];
        data[_k].sum+=data[_k].score[i];
    }
    data[_k].ave=data[_k].sum/5.0;
    _k++;
    return;
}
void show()//显示在屏幕上
{
    sort_pe();
    for(int i=0; i<_k; i++)
        printf("%d %s %s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",data[i].num,data[i].name,data[i].sex,data[i].score[0],
               data[i].score[1],data[i].score[2],data[i].score[3],data[i].score[4],data[i].ave,data[i].sum,data[i].rank);
}
struct sa *Find()//查询
{
    int a;
    printf("请输入学生的学号\n");
    cin>>a;
    int flag=0;
    struct sa *p;
    for(int i=0;i<_k;i++)
    if(data[i].num==a)
    {
        printf("%d %s %s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",data[i].num,data[i].name,data[i].sex,data[i].score[0],
               data[i].score[1],data[i].score[2],data[i].score[3],data[i].score[4],data[i].ave,data[i].sum,data[i].rank);
        flag=1;
        p=&data[i];
        return p;
    }
    if(flag==0)
    {
        puts("Sorry,您输入的学号错误,请重新输入");
        return NULL;
    }
}
struct sa * xg()//数据修改
{
    int num0,j,m;
    double sc;
    printf("请输入学生的学号  输入学生的课程代号  输入学生修改后的成绩\n");
    cin>>num0>>j>>sc;
    struct sa *p;
    for(int i=0;i<_k;i++)
    {
       if(data[i].num==num0)
        {
            data[i].sum=0.0;
           for(int k=0;k<5;k++)
            {
                if(k==j)
                data[i].score[k]=sc;
                data[i].sum+=data[i].score[k];
            }
            data[i].ave=data[i].sum/3.0;
            p=&data[i];
        }
    }
    return p;
}
struct sa *del()//数据删除
{
    int num0;
    puts("请输入要删除的学号");
    cin>>num0;
    struct sa *p;
    for(int i=0;i<_k;i++)
    {
        if(data[i].num==num0)
        {
            p=&data[i];
        }
        else
        printf("%d %s %s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n",data[i].num,data[i].name,data[i].sex,data[i].score[0],
               data[i].score[1],data[i].score[2],data[i].score[3],data[i].score[4],data[i].ave,data[i].sum);
    }
    return p;
}

void save(char *filename)//保存文件
{
    FILE *fp = fopen(filename,"at");
    for(int i=tmp; i<_k; i++)
    {
        fprintf(fp,"%d %s %s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",data[i].num,data[i].name,data[i].sex,data[i].score[0],
            data[i].score[1],data[i].score[2],data[i].score[3],data[i].score[4],data[i].ave,data[i].sum,data[i].rank);
    }
    fclose(fp);
    tmp = _k;
    return ;
}
void read(char *filename)
{
    char temp;
    FILE *fp;
    fp = fopen(filename,"r");
    while((temp = fgetc(fp))!=EOF)
    {
        printf("%c",temp);
    }
    fclose(fp);
    return ;
}
void build()
{
    cout<<"请输入新建文件名称: ";
}
int main()
{
  while(1)
  {
      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<<"请选择:";
      int m;
      cin>>m;
      cout<<endl;
      switch(m)
      {
        case 0:
             return 0;
        case 1:
            add();break;
        case 2:
            xg();break;
        case 3:
            show();break;
        case 4:
            Find();break;//查询
        case 5:
            del(); break;
        case 6:
            sort_pe();break;
        case 7:
            save("学生管理系统.txt");break;
        case 8:
            read("学生管理系统.txt");break;
        case 9:
            build();break;
        default :
            puts("Sorry,您输入的编号不在操作步骤里面,请重新选择,谢谢\n");break;
      }
      cout<<endl;
      cout<<"---------------lalalalala--------------"<<endl;
      cout<<endl;
  }
    return 0;
}
目录
相关文章
|
23天前
|
Java 数据库 Android开发
花店管理系统【纯GUI】(Java课设)
花店管理系统【纯GUI】(Java课设)
15 0
|
2月前
|
存储 前端开发 Java
【JavaEE进阶】 图书管理系统开发日记——壹
【JavaEE进阶】 图书管理系统开发日记——壹
|
3月前
|
小程序 项目管理 数据安全/隐私保护
基于微信小程序的高校宿舍信息管理系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的高校宿舍信息管理系统设计与实现(源码+lw+部署文档+讲解等)
55 0
基于微信小程序的高校宿舍信息管理系统设计与实现(源码+lw+部署文档+讲解等)
|
9月前
|
数据可视化 Java
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码(二)
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码
100 0
|
6月前
|
Java 关系型数据库 MySQL
JSP网上花店购物系统myeclipse开发mysql数据库bs框架java编程网结构
JSP 网上花店购物系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
39 0
|
6月前
|
Java 关系型数据库 MySQL
JSP餐饮连锁店管理系统myeclipse开发mysql数据库BS模式java编程网页结构
JSP餐饮连锁店管理系统 是一套完善的web设计系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,二、功能介绍 (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)分店管理:对分店信息进行添加、删除、修改和查看 (3)用户管理:对用户信息进行添加、删除、修改和查看 (4)预定管理:对预定信息进行添加、删除、修改和查看 (5)预定明细管理:对预定明细信息进行添加、删除、修改和查看 (6)菜品管理:对菜品信息进行添加、删除、修改和查看 (7)菜品材料管理:对菜品材料信息使用java语言开发
28 0
|
9月前
|
数据可视化 Java 关系型数据库
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码(三)
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码
74 0
|
9月前
|
数据可视化 druid 前端开发
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码(一)
中南林业科技大学Java实验报告十二:数据库系统设计 - 从0到1搭建java可视化学生管理系统源代码
104 0
|
10月前
|
Web App开发 JavaScript 前端开发
学生宿舍管理系统的设计与实现(论文+源码)_kaic
在信息社会占据主导地位的今天,互联网的发展让人们的生活更加智能便利。设计与实现学生宿舍管理系统为管理者提供了方便智能的查询平台,对于高校管理工作向信息化、社会化、智能化的迈进有着关键作用。高校宿舍管理也必须精细化,透明化,通过宿舍管理系统来提高宿舍管理的质量和进度。此学生宿舍管理系统的开发在逻辑上由三个子系统组合而成,分别是面对管理员、学生、宿舍管理员开发的宿舍管理系统。设计一套适合各个高校特点的学生宿舍管理系统可以避免浪费人力与物力,还能够降低管理成本,实现学校管理工作现代化、科学化的管理目标,管理信息系统的设计是高校发展的必然选择,也是互联网发展趋势的具体表现。 本系统采用当下流行的前后端

热门文章

最新文章