美文网首页
2019-06-25 学生成绩管理系统(期末课设)

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

作者: Sterren | 来源:发表于2019-06-25 21:35 被阅读0次
#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();
    
}

相关文章

网友评论

      本文标题:2019-06-25 学生成绩管理系统(期末课设)

      本文链接:https://www.haomeiwen.com/subject/vhkfcctx.html