最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

学生信息管理系统C++

来源:动视网 责编:小OO 时间:2025-09-29 19:43:02
文档

学生信息管理系统C++

【学生成绩管理】  实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。能实现对学生信息的简单管理。具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。 程序运行时显示一个简单的菜单,例如:  (1):信息输入(INPUT)  (2):总分统计(COUNT)  (3):总分排序(SORT)  (4):查询(QUERY)    其中:    (1):对4个学生的信息进行输入;    
推荐度:
导读【学生成绩管理】  实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。能实现对学生信息的简单管理。具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。 程序运行时显示一个简单的菜单,例如:  (1):信息输入(INPUT)  (2):总分统计(COUNT)  (3):总分排序(SORT)  (4):查询(QUERY)    其中:    (1):对4个学生的信息进行输入;    
【学生成绩管理】

    实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。

能实现对学生信息的简单管理。

具体要求:

建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

 程序运行时显示一个简单的菜单,例如:

   (1):信息输入(INPUT)

   (2):总分统计(COUNT)

   (3):总分排序(SORT)

   (4):查询(QUERY)

     其中:

     (1):对4个学生的信息进行输入;

     (2):对每个学生的3门课程统计总分;

      (3):对4个学生的总分按降序排序并显示出来;

      (4):查询输入一个学号后,显示出该学生的有关信息;

用的大一做的系统,由保存数据结构的object.cpp 主函数 main.cpp 方法头文件use.h组成

Use.h

#ifndef USE_H_INCLUDED

#define USE_H_INCLUDED

#endif // USE_H_INCLUDED

#include

#include

void Meau()

{

     printf("-------欢迎使用学生信息管理系统-------\\n--------------------------------------\\n输入指令完成命令:         \\n1.打印信息\\n2.插入新信息\\n3.删除学生信息\\n4.查找学生\\n5.更改学生信息\\n6.排序显示学生信息\\n7.文件另存为\\ne.保存并退出\\n--------------------------------------\\n请输入指令\\n");

}

void ZhuangBSave()

{

    int T=2;

    while(T--)

    {

        system("cls");

        Meau();

        Sleep(500);

        printf("Saveing.\\r");

        Sleep(500);

        printf("Saveing..\\r");

        Sleep(500);

        printf("Saveing...\\r");

        Sleep(500);

        printf("Saveing....\\r");

        Sleep(500);

        printf("Saveing.....\\r");

    }

}

void ZhuangBExit()

{

    int c=6;

    while(c--)

    {

        printf("Saved!And he program will be close in %d second.\\r",c);

        Sleep(1000);

    }

}

Object.h

#include

#include

#include

#include

struct score

{

    long long num;

    char a[10];

    int ch;

    int ma;

    int en;

    int c;

    int ph;

    int sum;

    struct score *next;

};

void swap(score* p1,score* p2)

{

    int t;

t=p1->num;

p1->num=p2->num;

p2->num=t;

t=p1->ch;

p1->ch=p2->ch;

p2->ch=t;

t=p1->ma;

p1->ma=p2->ma;

p2->ma=t;

t=p1->en;

p1->en=p2->en;

p2->en=t;

t=p1->c;

p1->c=p2->c;

p2->c=t;

t=p1->ph;

p1->ph=p2->ph;

p2->ph=t;

    char c[10];

strcpy(c,p1->a);

strcpy(p1->a,p2->a);

strcpy(p2->a,c);

}

bool cmp0(score* p1,score* p2)

{

return p1->numnum;

}

bool cmp01(score* p1,score* p2)

{

if(p1->ch==p2->ch)

return p1->numnum;

return p1->chch;

}

bool cmp11(score* p1,score* p2)

{

if(p1->ch==p2->ch)

return p1->numnum;

return p1->ch>p2->ch;

}

bool cmp02(score* p1,score* p2)

{

if(p1->ma==p2->ma)

return p1->numnum;

return p1->mama;

}

bool cmp12(score* p1,score* p2)

{

if(p1->ma==p2->ma)

return p1->numnum;

return p1->ma>p2->ma;

}

bool cmp03(score* p1,score* p2)

{

if(p1->en==p2->en)

return p1->numnum;

return p1->enen;

}

bool cmp13(score* p1,score* p2)

{

if(p1->en==p2->en)

return p1->numnum;

return p1->en>p2->en;

}

bool cmp04(score* p1,score* p2)

{

if(p1->c==p2->c)

        return p1->numnum;

return p1->cc;

}

bool cmp14(score* p1,score* p2)

{

if(p1->c==p2->c)

return p1->numnum;

return p1->c>p2->c;

}

bool cmp05(score* p1,score* p2)

{

if(p1->ph==p2->ph)

return p1->numnum;

return p1->phph;

}

bool cmp15(score* p1,score* p2)

{

if(p1->ph==p2->ph)

return p1->numnum;

return p1->ph>p2->ph;

}

bool cmp06(score* p1,score* p2)

{

if(p1->sum==p2->sum)

return p1->numnum;

return p1->sumsum;

}

bool cmp16(score* p1,score* p2)

{

if(p1->sum==p2->sum)

return p1->numnum;

return p1->sum>p2->sum;

}

bool cmp07(score* p1,score* p2)

{

if(strcmp(p1->a,p2->a)==1)

        return 1;

    else

        return 0;

}

bool cmp17(score* p1,score* p2)

{

if(strcmp(p1->a,p2->a)==1)

        return 0;

    else

        return 1;

}

void ScoreSort(struct score *head,bool (*cmp)(score* p1,score* p2))

{

    struct score *p1,*p2;

for(p1=head; p1!=NULL; p1=p1->next)

for(p2=p1->next; p2!=NULL; p2=p2->next)

        {

            if((*cmp)(p1,p2))

            {

                swap(p1,p2);

            }

        }

}

void ScorePri(struct score *head)

{

    //int c=0;

    //system("cls");

    printf("=================================================\\n");

    struct score *pri;

    pri=head;

    while(pri!=NULL)

    {

        //printf("test %d\\n",c++);

        printf("学号:%Id      姓名:%s\\n语文:%d      数学:%d     英语:%d    \\nc语言:%d    物理:%d    \\n总成绩:%d    平均成绩:%.2lf    \\n=================================================\\n",pri->num,pri->a,pri->ch,pri->ma,pri->en,pri->c,pri->ph,pri->sum,pri->sum/5.0);

pri=pri->next;

    }

    printf("End\\n");

}

struct score *ScoreIns(struct score *head)

{

    struct score *p1,*p2,*newl;

    newl=(score*)malloc(sizeof(score));

    printf("请依次输入学号,语文,数学,英语,c语言,物理成绩\\n");

scanf("%Id%d%d%d%d%d",&newl->num,&newl->ch,&newl->ma,&newl->en,&newl->c,&newl->ph);

newl->sum=newl->ch+newl->ma+newl->en+newl->c+newl->ph;

    printf("输入学生姓名\\n");

scanf("%s",newl->a);

    if(head==NULL)

    {

        head=newl;

newl->next=NULL;

        return head;

    }

    p1=head;

p2=p1->next;

if(newl->numnum)

    {

newl->next=head;

        return newl;

    }

    while(p2!=NULL)

    {

if(newl->num>p1->num&&newl->numnum)

        {

newl->next=p2;

p1->next=newl;

            break;

        }

        p1=p2;

p2=p1->next;

    }

    if(p2==NULL)

    {

p1->next=newl;

newl->next=NULL;

    }

    return head;

}

void ZhuangBDel()

{

    Sleep(500);

    printf("删除中.\\r");

    Sleep(500);

    printf("删除中..\\r");

    Sleep(500);

    printf("删除中...\\r");

    Sleep(500);

    printf("删除中....\\r");

    Sleep(500);

    printf("删除中.....\\r");

    Sleep(500);

    printf("已删除!\\n");

}

struct score *ScoreDel(struct score *head)

{

    struct score *p1,*p2,*h;

    long long n=0;

    int flag,flag1=0;

    int ord;

    char n1[100],s[2];

    flag=0;

    printf("输入1学号查询,输入2姓名查询\\n");

    scanf("%d",&ord);

    if(ord==1)

    {

        printf("请输入学号\\n");

        scanf("%Id",&n);

    }

    else if(ord==2)

    {

        printf("请输入姓名\\n");

        scanf("%s",n1);

    }

    else

    {

        printf("Illegal input\\n");

        return head;

    }

    if(ord==1)

    {

        printf("您要删除的学生学号为%Id,是否删除?(Y/N)",n);

        scanf("%s",s);

        if(strcmp(s,"Y")!=0)

          return head;

    }

     if(ord==2)

    {

        printf("您要删除的学生姓名为%s,是否删除?(Y/N)",n1);

        scanf("%s",s);

        if(strcmp(s,"Y")!=0)

          return head;

    }

    p1=head;

p2=p1->next;

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p1->a,n1)==0))

    {

h=p1->next;

        free(p1);

        flag=1;

        ZhuangBDel();

        return h;

    }

    else

    {

if(p1->next==NULL) flag1=0;

while(flag1!=0&&p2->next!=NULL)

        {

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p2->a,n1)==0))

            {

p1->next=p2->next;

                free(p2);

                flag=1;

            }

            p1=p2;

p2=p1->next;

        }

if(flag1!=0&&p2->next==NULL)

        {

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p2->a,n1)==0))

            {

p1->next=NULL;

                free(p2);

                flag=1;

            }

        }

    }

    if(flag==0||flag1==1)

        printf("Error:Not Found!\\n");

    else

        ZhuangBDel();

    return head;

}

void ScoreSearch(struct score *head)

{

    struct score *p1;

    long long n;

    int flag;

    flag=0;

    printf("输入需要查找的学号\\n");

    scanf("%Id",&n);

for(p1=head; p1!=NULL; p1=p1->next)

    {

if(p1->num==n)

        {

            printf("姓名:%s\\n语文成绩:%d\\n数学成绩:%d\\n英语成绩:%d\\nC语言成绩:%d\\n物理成绩:%d\\n总成绩:%d\\n平均成绩:%.2lf\\n",p1->a,p1->ch,p1->ma,p1->en,p1->c,p1->ph,p1->sum,p1->sum/5.0);

            flag=1;

        }

    }

    if(flag==0)

        printf("Error:Not Found!\\n");

}

void ScoreChange(struct score *head)

{

    long long m;

    int n,a;

    char b[100];

    struct score *p1;

    printf("请输入需要修改信息的学号\\n");

    scanf("%Id",&m);

for(p1=head; p1!=NULL; p1=p1->next)

    {

if(p1->num==m) break;

    }

    if(p1==NULL)

    {

        printf("Not Found!\\n");

        return;

    }

    printf("输入1修改语文成绩\\n输入2修改数学成绩\\n输入3修改英语成绩\\n输入4修改c语言成绩\\n输入5修改物理成绩\\n输入6修改姓名\\n");

    scanf("%d",&a);

    if(a==1)

    {

        printf("该成员语文成绩为%d,请输入修改值\\n",p1->ch);

        scanf("%d",&n);

p1->ch=n;

        printf("修改成功!\\n");

    }

    else if(a==2)

    {

        printf("该成员数学成绩为%d,请输入修改值\\n",p1->ma);

        scanf("%d",&n);

p1->ma=n;

        printf("修改成功!\\n");

    }

    else if(a==3)

    {

        printf("该成员英语成绩为%d,请输入修改值\\n",p1->en);

        scanf("%d",&n);

p1->en=n;

        printf("修改成功!\\n");

    }

    else if(a==4)

    {

        printf("该成员C语言成绩为%d,请输入修改值\\n",p1->c);

        scanf("%d",&n);

p1->c=n;

        printf("修改成功!\\n");

    }

    else if(a==5)

    {

        printf("该成员物理成绩为%d,请输入修改值\\n",p1->ph);

        scanf("%d",&n);

p1->ph=n;

        printf("修改成功!\\n");

    }

    else if(a==6)

    {

        printf("该成员姓名为%s,请输入修改值\\n",p1->a);

        scanf("%s",b);

strcpy(p1->a,b);

        printf("修改成功!\\n");

    }

    else

        printf("输入错误,退出修改\\n");

}

void ScoreView(struct score *head)

{

    int a,b;

    //bool *cmp(score* p1,score* p2);

    printf("输入1按语文成绩排列\\n输入2按数学成绩排列\\n输入3按英语成绩排列\\n输入4按C语言成绩排列\\n输入5按物理成绩排列\\n输入6按总成绩排列\\n输入7按名字排列\\n");

    scanf("%d",&a);

    printf("输入0升序排列,输入1降序排列\\n");

    scanf("%d",&b);

    if(a==1&&b==0)

        ScoreSort(head,&cmp01);

    if(a==1&&b==1)

        ScoreSort(head,cmp11);

    if(a==2&&b==0)

        ScoreSort(head,cmp02);

    if(a==2&&b==1)

        ScoreSort(head,cmp12);

    if(a==3&&b==0)

        ScoreSort(head,cmp03);

    if(a==3&&b==1)

        ScoreSort(head,cmp13);

    if(a==4&&b==0)

        ScoreSort(head,cmp04);

    if(a==4&&b==1)

        ScoreSort(head,cmp14);

    if(a==5&&b==0)

        ScoreSort(head,cmp05);

    if(a==6&&b==0)

        ScoreSort(head,cmp06);

    if(a==6&&b==1)

        ScoreSort(head,cmp16);

    if(a==7&&b==0)

        ScoreSort(head,cmp07);

    if(a==7&&b==1)

        ScoreSort(head,cmp17);

    ScorePri(head);

    ScoreSort(head,cmp0);

}

void Save(score *head,char a[])

{

    FILE *fp;

    score* pri=head;

    fp=fopen(a,"w");

    while(pri!=NULL)

    {

fprintf(fp,"%Id %d %d %d %d %d ",pri->num,pri->ch,pri->ma,pri->en,pri->c,pri->ph);

fprintf(fp,"%s ",pri->a);

pri=pri->next;

    }

    return;

}

void NSave(score* head)

{

    char a[100],b[100],c[]="/",d[]=".txt";

    printf("输入另存为的地址\\n");

    scanf("%s",a);

    printf("输入文件名称\\n");

    scanf("%s",b);

    strcat(a,c);

    strcat(a,b);

    strcat(a,d);

    Save(head,a);

    return;

}

struct score *Load(score *head)

{

    //int c=0;

    FILE *fp;

    fp=fopen("E:\\\\data.txt

    if(fp==NULL)

    {

        //printf("No data\\n");

        return NULL;

    }

    freopen("E:\\\\data.txt

    score *newl,*p1,*p2;

    newl=(score*)malloc(sizeof(score));

while(scanf("%Id%d%d%d%d%d",&newl->num,&newl->ch,&newl->ma,&newl->en,&newl->c,&newl->ph)!=EOF)

    {

        //printf("test %d\\n",c++);

newl->sum=newl->ch+newl->ma+newl->en+newl->c+newl->ph;

        scanf("%s",newl->a);

        if(head==NULL)

        {

            head=newl;

newl->next=NULL;

        }

        p1=head;

p2=p1->next;

if(newl->numnum)

        {

newl->next=head;

            head=newl;

        }

        while(p2!=NULL)

        {

if(newl->num>p1->num&&newl->numnum)

            {

newl->next=p2;

p1->next=newl;

            }

            p1=p2;

p2=p1->next;

        }

        if(p2==NULL)

        {

p1->next=newl;

newl->next=NULL;

        }

        newl=(score*)malloc(sizeof(score));

    }

    free(newl);

    freopen("CON

    return head;

}

Main.cpp

#include

#include

#include

#include

#include

#include

#include "use.h"

using namespace std;

struct score *Load(score *head);

void ScorePri(struct score *head);

struct score *ScoreIns(struct score *head);

struct score *ScoreDel(struct score *head);

void ScoreSearch(struct score *head);

void ScoreChange(struct score *head);

void ScoreView(struct score *head);

void Save(score *head,char a[]);

void NSave(score* head);

int main()

{

    struct score *key;

    key=NULL;

    key=Load(key);

    char keyb;

    Meau();

    while(1)

    {

        keyb=getchar();

        if(keyb=='1')

        {

            ScorePri(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='2')

        {

            key=ScoreIns(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='3')

        {

            key=ScoreDel(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='4')

        {

            ScoreSearch(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='5')

        {

            ScoreChange(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='6')

        {

            ScoreView(key);

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='7')

        {

            NSave(key);

            ZhuangBSave();

            printf("Oo-----------------按任意键继续----------------oO\\n");

            getchar();

            getchar();

            system("cls");

            Meau();

        }

        if(keyb=='e')

        {

            char inp[]="E:\\\\data.txt";

            Save(key,inp);

            ZhuangBSave();

            ZhuangBExit();

            return 0;

        }

    }

    return 0;

}

功能界面如下:

文档

学生信息管理系统C++

【学生成绩管理】  实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。能实现对学生信息的简单管理。具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。 程序运行时显示一个简单的菜单,例如:  (1):信息输入(INPUT)  (2):总分统计(COUNT)  (3):总分排序(SORT)  (4):查询(QUERY)    其中:    (1):对4个学生的信息进行输入;    
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top