2019-06-25 学生成绩管理系统(期末课设)

#include<stdio.h>//标准输入输出函数库 
#include<stdlib.h>//标准函数库 
#include<string.h>//字符串函数库 
#include<conio.h>//屏幕操作函数库
typedef struct node//定义学生信息的结构体 
{
    char num[41];//学号 
    char name[41];//姓名 
    char sex[4];//性别 
    int score[3] ;//数学 英语 计算机 
    float aver; //平均成绩 
    float sum; //总成绩 
}student;
student stu[101]; 
int stuSize;//定义一个全局变量 
void Menu();//操作主界面 
void Input();//声明输入函数 
void Save();//声明保存函数 
void order();//声明排序函数 
void Analysis();//声明统计函数 
void selet();//声明查询函数 
void delet();//声明删除函数 
void insert();//声明添加函数 
void print();//声明输出函数 
void Update();//声明更新函数 
void amend();//声明修改函数 
void see();//声明查看文件 
int openl();//声明打开文件 
void welcome();//声明个人信息 
int main()
{
    system("color 3E"); //设计文本颜色
    printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t========== 欢迎进入学生成绩管理系统!!!==========\n\n");
    printf("\n\n\t\t\t\t   =============  按任意键继续!!!============\n\n\n");
    getch(); 
    Menu();
    return 0;
}
void Menu()//主菜单 
{
    system("cls");
    printf("\n\t\t\t\t\t=========== 学生成绩管理系统 ===========\n\n");
    printf("\t\t\t\t\t----------------------------------------\n\n");
    printf("\t\t\t\t\t==========   1    输入记录   ===========\n\n");
    printf("\t\t\t\t\t==========   2    查询记录   ===========\n\n");
    printf("\t\t\t\t\t==========   3    更新记录   ===========\n\n");
    printf("\t\t\t\t\t==========   4    统计记录   ===========\n\n");
    printf("\t\t\t\t\t==========   5    输出记录   ===========\n\n");
    printf("\t\t\t\t\t==========   6    个人信息   ===========\n\n");
    printf("\t\t\t\t\t==========   7    打开文件   ===========\n\n");
    printf("\t\t\t\t\t==========   0    退出系统   ===========\n\n");
    printf("\t\t\t\t\t----------------------------------------\n\n");
    printf("\t\t\t\t\t请输入你的选择-->>");
    int a;
    scanf("%d",&a);
    switch (a)
    {
        case 0:return;//退出系统 
        case 1:Input();break;//输入 
        case 2:selet();break;//查询 
        case 3:Update();break;//更新 
        case 4:Analysis();break;//统计 
        case 5:print();break;//输出 
        case 6:welcome();break;//个人信息 
        case 7:see();break; //打开文件 
        default:printf("信息输入有误!请检查后重新输入\n");
        getch();
    }
    
}
void Update()//更新 
{
    system("cls");
    printf("\n\t\t\t\t\t======== 更新记录 =========\n\n");
    printf("\t\t\t\t\t---------------------------\n\n");
    printf("\t\t\t\t\t=======1  添加学生 ========\n\n");
    printf("\t\t\t\t\t=======2  删除学生 ========\n\n");
    printf("\t\t\t\t\t=======3  修改学生 ========\n\n");
    printf("\t\t\t\t\t=======4  成绩排序 ========\n\n");
    printf("\t\t\t\t\t=======0    退出   ========\n\n");
    printf("\t\t\t\t\t---------------------------\n\n");
    printf("\t\t\t\t\t请输入你的选择-->\n");
    int a;
    scanf("%d",&a);
    switch (a)
    {
        case 0:Menu();//返回主菜单 
        case 1:insert();break;//添加 
        case 2:delet();break;//删除 
        case 3:amend();break;//修改 
        case 4:order();break;//排序 
        default:printf("信息输入有误!请检查后重新输入\n");
        getch();
        Menu(); 
    }
}
 void amend()//修改 
 {
    int i;
    char a;
    char name[20];  
    system("CLS");
    printf("\t\t\t输入学生名字:\n");
    scanf("%s",&name);  
    system("CLS");
    printf("\t学号\t姓名\t性别\t数学\t英语\t计算机\t平均成绩\t总成绩\n");
    for(i=0;i<stuSize;i++)
    if(strcmp(stu[i].name,name)==0)
    { 
        printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
        stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
        getch();
        printf("是否修改?(y or n)");
        getchar();
        scanf("%c",&a);
        if(a=='y') //是否修改该信息
        {
        printf("输入学生信息:");
        printf("\n\t\t\t----------------\n");
        printf("\t\t\t学号:");
        scanf("%s",&stu[i].num); //输入学号
        printf("\t\t\t姓名:");
        scanf("%s",&stu[i].name); //输入姓名
        printf("\t\t\t性别:");
        scanf("%S",&stu[i].sex); //输入性别
        printf("\t\t\t数学:");
        scanf("%d",&stu[i].score[0]); //输入英语成绩
        printf("\t\t\t英语:");
        scanf("%d",&stu[i].score[1]); //输入数学成绩
        printf("\t\t\t计算机:");
        scanf("%d",&stu[i].score[2]); //输入语文成绩  
        stu[i].aver=((float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2])/3;//计算平均成绩
        stu[i].sum=(float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2];//计算总成绩
        printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver); //输出平均成绩
        printf("\t\t\t总成绩=%4.1f\n",stu[i].sum); //输出总成绩
        }
            else
        printf("退出");
        Save();
        getch();
    }
    Menu();
    Save();
    getch();
}
void insert()//添加 
{   
    system("cls");//清屏 
    int i,n; 
    printf("要添加的学生的数量:\n");
    scanf("%d",&n);
    for(i=stuSize;i<stuSize+n;i++)
    {
    printf("\n\t\t\t----------------\n");
    printf("\t\t\t学号:");
    scanf("%s",&stu[i].num); /*输入学号*/
    printf("\t\t\t姓名:");
    scanf("%s",stu[i].name); /*输入姓名*/
    printf("\t\t\t性别:");
    scanf("%S",&stu[i].sex); /*输入性别*/
    printf("\t\t\t数学:");
    scanf("%d",&stu[i].score[0]); /*输入英语成绩*/
    printf("\t\t\t英语:");
    scanf("%d",&stu[i].score[1]); /*输入数学成绩*/
    printf("\t\t\t计算机:");
    scanf("%d",&stu[i].score[2]); /*输入计算机成绩*/
    stu[i].aver=((float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2])/3;/*计算平均成绩*/
    stu[i].sum=(float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2];/*计算总成绩*/
    printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver); /*输出平均成绩*/
    printf("\t\t\t总成绩=%4.1f\n",stu[i].sum); /*输出总成绩*/
}
    stuSize+=n; 
    printf("\n\n\t\t\t按任意键返回菜单!!"); 
    getch();
    Save(); 
}
void delet()//删除 
{
    int i;
    char a;
    char name[20];
    system("CLS");
    printf("\t\t\t输入学生名字:\n");
    scanf("%s",name);
    system("CLS");
    printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
    for(i=0;i<stuSize;i++)
        if(strcmp(stu[i].name,name)==0)
        
        {printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
        stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
        getch();
        printf("是否删除?(y or n)");
        getchar();
        scanf("%c",&a);
        if(a=='y') /*是否删除该信息*/
        {for(;i<stuSize;i++)
            stu[i]=stu[i+1];
        stuSize--;
        printf("已经删除信息");
}
        else
        printf("退出");
        getch();
        }
    Save();
}
void Input()//输入 
{   system("cls"); 
    int i;
    printf("要输入的学生的数量\n");
    scanf("%d",&stuSize);
    for(i=0;i<stuSize;i++)
    {
    printf("\n\t\t\t----------------\n");
    printf("\t\t\t学号:");
    scanf("%s",&stu[i].num); /*输入学号*/
    printf("\t\t\t姓名:");
    scanf("%s",&stu[i].name); /*输入姓名*/
    printf("\t\t\t性别:");
    scanf("%S",&stu[i].sex); /*输入性别*/
    printf("\t\t\t数学:");
    scanf("%d",&stu[i].score[0]); /*输入英语成绩*/
    printf("\t\t\t英语:");
    scanf("%d",&stu[i].score[1]); /*输入数学成绩*/
    printf("\t\t\t计算机:");
    scanf("%d",&stu[i].score[2]); /*输入语文成绩*/
    stu[i].aver=((float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2])/3;/*计算平均成绩*/
    stu[i].sum=(float)stu[i].score[0]+(float)stu[i].score[1]+(float)stu[i].score[2];/*计算总成绩*/
    printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver); /*输出平均成绩*/
    printf("\t\t\t总成绩=%4.1f\n",stu[i].sum); /*输出总成绩*/
}
printf("\n\n\t\t\t按任意键返回菜单!!"); 
    getch();
    Save();
    Menu();
}
void Analysis()//统计 
{
    system("cls");
    double sum[3];
    int i,k;
    int ma[3],mi[3];
    int cnt[3][5];
    memset(cnt,0,sizeof(cnt));
    ma[0]=stu[0].score[0];
    ma[1]=stu[0].score[1];
    ma[2]=stu[0].score[2];
    mi[0]=stu[0].score[0];
    mi[1]=stu[0].score[1];
    mi[2]=stu[0].score[2];
    for(i=0;i<stuSize;++i){
        for(k=0;k<3;++k){
            if(ma[k]<stu[i].score[k]) ma[k]=stu[i].score[k];
            if(mi[k]>stu[i].score[k]) mi[k]=stu[i].score[k];
            sum[k]+=stu[i].score[k];
            if(stu[i].score[k]<60)
                    cnt[k][0]++;
            else if(stu[i].score[k]<69)
                    cnt[k][1]++;
            else if(stu[i].score[k]<79)
                    cnt[k][2]++;
            else if(stu[i].score[k]<89)
                    cnt[k][3]++;
            else if(stu[i].score[k]<=100)
                    cnt[k][4]++;        
        }
    }

    printf("\t数学\t最高分 :%d\t最低分 :%d\t不及格人数:%d\t60-69分人数: %d\n\n\t\t70-79分人数: %d\t80-89分人数: %d\t90分以上人数: %d\n\n\n",ma[0],mi[0],cnt[0][0],cnt[0][1],cnt[0][2],cnt[0][3],cnt[0][4]);
    printf("\t英语\t最高分 ;%d\t最低分 :%d\t不及格人数:%d\t60-69分人数: %d\n\n\t\t70-79分人数: %d\t80-89分人数: %d\t90分以上人数: %d\n\n\n",ma[1],mi[1],cnt[1][0],cnt[1][1],cnt[1][2],cnt[1][3],cnt[1][4]);
    printf("\t计算机\t最高分 :%d\t最低分 :%d\t不及格人数:%d\t60-69分人数: %d\n\n\t\t70-79分人数: %d\t80-89分人数: %d\t90分以上人数: %d\n\n\n\n",ma[2],mi[2],cnt[2][0],cnt[2][1],cnt[2][2],cnt[2][3],cnt[2][4]);
    printf("\t按任意键返回菜单!!!");
    getch();
    Menu();;
    
}
void selet()//查询 
{   
    system("cls");
    printf("\t\t\t\t\t1     姓名查询 \n\t\t\t\t\t2     学号查询 \n\t\t\t\t\t  ");
    printf("请选择要查询的方式-->\n");
    int ch,i;
    scanf("%d",&ch);
    if(ch==1){
        int i=0;
        printf("请输出姓名:\n");
        char name[41];
        scanf("%s",name);
        for(i=0;i<stuSize;i++){
            if(!strcmp(stu[i].name,name)){
                printf("\t学号\t姓名\t性别\t数学\t英语\t计算机\t平均成绩\t总成绩\n");
                printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
                stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
                
            }
        }
    } 
    else if(ch==2){
        int i=0;
        printf("请输出学号:\n");
        char name[41];
        scanf("%s",name);
        for(i=0;i<stuSize;i++){
            if(!strcmp(stu[i].num,name)){
            printf("\t学号\t姓名\t性别\t数学\t英语\t计算机\t平均成绩\t总成绩\n");
            printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
            }
        }
    }
    printf("是否继续查询?(Y/N)(不区分大小写)\n");
    char s; 
    while (1)
    {
        getchar();
        gets(&s);
        if (s=='Y'||s=='N'||s=='y'||s=='n')
            break;
        else puts("信息有误!请检查后重新输入\n");
        Menu();
        system("cls"); 
    }
    if(s=='Y'||s=='y')
        selet();
    else if(s=='N'||s=='n')
        system("cls");
    Menu();
}
void print()//输出函数 
{
system("CLS");
stuSize=openl();
int i;
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i<stuSize;i++) //输出所有的学生信息
{
    printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
    stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
}
    printf("\n\n\n\t\t\t按任意键返回菜单");
    getch();
        Menu();
   }
void welcome() //我的个人信息函数
{
    system("CLS");
    printf("\n\n\t\t\t\t-------------制作者-------------\n\n"); /*在屏幕上输出一下信息*/
    printf("\t\t\t\t--------姓名  高凡  ------------\n\n");
    printf("\t\t\t\t--------性别  女    ------------\n\n");
    printf("\t\t\t\t--------学号  18060212127  -----\n");
    printf("\n\n\t\t按任意键返回主菜单!!!");
    getch(); /*按任意键返回主函数*/
    Menu();
}
void Save() //建立保存文件函数
{
    system("CLS");
    FILE *fp; //定义文件型指针
    int i;
    if((fp=fopen("student.txt","wb"))==NULL) //打开输出文件
    {
        printf("不能打开文件!\n");
        return; //终止程序
    }
    for(i=0;i<stuSize;i++) //向student文件中写入信息
    if(fwrite(&stu[i],sizeof(student),1,fp)!=1)
    printf("文件写入错误\n");
    fclose(fp); //关闭文件
    printf("\n\n\n\n\t\t\t学生信息保存成功!\n");
    printf("\n\n\n\n\t\t\t按任意键返回菜单!!");
    getch();
    Menu();
}
int openl() /*定义打开文件函数*/
{
system("CLS");
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(student),1,fp);
fclose(fp);
return(i-1);
}
void see() //打开并查看文件
{
system("CLS");
int i;
stuSize=openl();
printf("文件打开成功!\n");
printf("按任意键查看!\n");
getch();
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i<stuSize;i++) //输出所有的学生信息
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单!!!");
getch();
Menu();
}
void order()//成绩排序(冒泡) 
{
    system("cls"); 
    int i,j;
    struct node temp;
    for(i=0;i<stuSize;i++)
        { 
        for(j=0;j<stuSize-i-1;j++)
        {
            if(stu[i].sum>stu[i+1].sum)
            {
                temp=stu[i+1];stu[i+1]=stu[i];stu[i]=temp;//引用变量temp交换数值 使总分按小到大排出 
            }
        
         } 
    }
        printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
        for(i=0;i<stuSize;i++)
        printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
        stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].sum);
        getch();
        Save();
    printf("\n\n\n\t\t\t按任意键返回菜单!!!");
    Menu();
    
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容