临时占坑 大一实习 学生信息管理系统

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
using namespace std;
struct STU
{
    int id;
    char name[20];
    char sex;
    double score[5];
    double ave,sum;
    int _rank;
}data[100];
int cmp_upid(const STU&a,const STU&b)
{
    return a.id < b.id;
}
int cmp_downid(const STU&a,const STU&b)
{
    return a.id > b.id;
}
int cmp_upname(const STU&a,const STU&b)
{
    return strcmp(a.name,b.name) < 0;
}
int cmp_downname(const STU&a,const STU&b)
{
    return strcmp(a.name,b.name) > 0;
}
int cmp_uprank(const STU&a,const STU&b)
{
    return a._rank < b._rank;
}
int cmp_downrank(const STU&a,const STU&b)
{
    return a._rank > b._rank;
}
int num_stu = 0,tmp = 0;
char filename[20];
void app()
{
    cin>>data[num_stu].id>>data[num_stu].name>>data[num_stu].sex;
    cin>>data[num_stu].score[0]>>data[num_stu].score[1]>>data[num_stu].score[2]>>data[num_stu].score[3]>>data[num_stu].score[4];
    data[num_stu].sum = data[num_stu].score[0] + data[num_stu].score[1] + data[num_stu].score[2] + data[num_stu].score[3] + data[num_stu].score[4];
    data[num_stu].ave = data[num_stu].sum / 5.0;
    data[num_stu]._rank = 1;
    num_stu ++;
    return ;
}
int find_id()
{
    int id,flag = 0;
    cin>>id;
    for(int i = 0;i < num_stu;i ++)
    {
        if(data[i].id == id)
        {
            flag = 1;
            cout<<data[i].id<<" "<<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<<endl;
            return i;
        }
    }
    if(!flag)
        cout<<">_< 该信息不存在"<<endl;
    return 0;
}
int find_name()
{
    char name[20],flag = 0;
    cin>>name;
    for(int i = 0;i < num_stu;i ++)
    {
        if(strcmp(data[i].name,name) == 0)
        {
            cout<<data[i].id<<" "<<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<<endl;
            return i;
        }
    }
    if(!flag)
        cout<<">_< 该信息不存在"<<endl;
    return 0;
}
int find_rank()
{
    int _rank,flag = 0;
    cin>>_rank;
    for(int i = 0;i < num_stu;i ++)
    {
        if(data[i]._rank == _rank)
        {
            cout<<data[i].id<<" "<<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<<endl;
            return i;
        }
    }
    if(!flag)
        cout<<">_< 该信息不存在"<<endl;
    return 0;
}
void change()
{
    cout<<"1.学号 2.姓名 3.排名"<<endl;
    cout<<"请输入查找修改类型:"<<endl;
    int n ,i;
    cin>>n;
    switch(n-1)
    {
        case 0: cout<<"原关键字:";i = find_id(); break;
        case 1: cout<<"原关键字:";i = find_name(); break;
        case 2: cout<<"原关键字:";i = find_rank(); break;
    }
    cout<<"输入新的学生信息:"<<endl;
    cin>>data[i].id>>data[i].name>>data[i].sex;
    cin>>data[i].score[0]>>data[i].score[1]>>data[i].score[2]>>data[i].score[3]>>data[i].score[4];
    data[i].sum = 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 / 5.0;
    data[i]._rank = 1;
    cout<<"学生信息修改成功:"<<endl;
    cout<<data[i].id<<" "<<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<<endl;
    return ;
}
void _find()
{
    cout<<"1.学号 2.姓名 3.排名"<<endl;
    cout<<"请输入查找类型:"<<endl;
    int n ;
    cin>>n;
    switch(n-1)
    {
        case 0:cout<<"原关键字:"; find_id(); break;
        case 1:cout<<"原关键字:"; find_name(); break;
        case 2:cout<<"原关键字:"; find_rank(); break;
    }
//cout<<data[i].id<<" "<<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<<endl;
}
void _delete()
{
    cout<<"1.学号 2.姓名 3.排名"<<endl;
    cout<<"请输入查找删除类型:"<<endl;
    int n ,i;
    cin>>n;
    switch(n-1)
    {
        case 0: cout<<"原关键字:";i = find_id(); break;
        case 1: cout<<"原关键字:";i = find_name(); break;
        case 2: cout<<"原关键字:";i = find_rank(); break;
    }
    for(int j = i+1;j < num_stu-1;j ++)
    {
        data[j-1] = data[j];
    }
    num_stu -- ;
    return ;
}
void _sort()
{
    cout<<"1.学号 2.名称 3.名次"<<endl;
    cout<<"1.升序 2.降序"<<endl;
    cout<<"请输入排序类型及其方式"<<endl;
    int n,m;
    cin>>n>>m;
    switch(n-1)
    {
        case 0:
        {
            if(m == 1)
                sort(data,data+num_stu,cmp_upid);
            if(m == 2)
                sort(data,data+num_stu,cmp_downid);
        }
        case 1:
        {
            if(m == 1)
                sort(data,data+num_stu,cmp_upname);
            if(m == 2)
                sort(data,data+num_stu,cmp_downname);
        }
        case 2:
        {
            if(m == 1)
                sort(data,data+num_stu,cmp_uprank);
            if(m == 2)
                sort(data,data+num_stu,cmp_downrank);
        }
    }
    for(int i = 0;i < num_stu;i ++)
    {
        data[i]._rank = i + 1;
    }
    return ;
}
void save_file(char *filename)
{
    FILE *fp = fopen(filename,"at");
    for(int i = tmp;i < num_stu;i ++)
    {
        fprintf(fp,"%d %s %c %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",data[i].id,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 = num_stu;
    return ;
}
void show()
{
    for(int i = 0;i < num_stu;i ++)
        cout<<data[i].id<<" "<<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<<endl;
    return ;
}
void read_file(char *filename)
{
    char temp;
    FILE *fp;
    fp = fopen(filename,"r");
    while((temp = fgetc(fp))!=EOF)
    {
        printf("%c",temp);
    }
    fclose(fp);
    return ;
}
void build_file()
{
    cout<<"输入学生信息文档名称: ";
    cin>>filename;
    fopen(filename,"wb");
}
int main()
{
    int n;
    while(1)
    {
        cout<<"        学生信息管理系统          "<<endl;
        cout<<"1.增加学生信息  6.对学生信息进行排序"<<endl;
        cout<<"2.修改学生信息  7.保存学生信息至记录文件"<<endl;
        cout<<"3.显示学生信息  8.从记录文件读取学生信息"<<endl;
        cout<<"4.查询学生信息  9.新建学生信息文件"<<endl;
        cout<<"5.删除学生信息  10.运行结束"<<endl;
        cout<<"请输入操作编号: ";
        cin>>n;
        switch(n-1)
        {
            case 0: app(); break;
            case 1: change(); break;
            case 2: show(); break;
            case 3: _find(); break;
            case 4: _delete(); break;
            case 5: _sort(); break;
            case 6: save_file("student.txt"); break;
            case 7: read_file("student.txt"); break;
            case 8: build_file(); break;
            case 9: return 0;
        }
        cout<<endl;
        cout<<"-----------------------------这是分割线----------------------------------"<<endl;
        cout<<endl;
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值