过程化学生成绩管理系统(大一学年末)

大一学年末的程序设计

过程化学生成绩管理系统



#include <stdio.h>

#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>


int menu();                  //主菜单函数
void input();                //录入功能
void save();                 //保存文件
void look();                 //浏览系统
void chaxt();               //查询功能
void chaxh();               //按学号查询
void chacj();               //按成绩查询


int chaxuncd(); //查询菜单
int open();              //打开文件
void change();           //修改函数
void zsum();   //求和


struct teach            //定义结构体
{
int xh; //输入学号
int sk; //上课出勤
    int jc; //教材持有
    int zy; //作业
    int bj; //课堂笔记
    int nl; //过程能力
}tea[200];


int n=200;  //全局变量
int main()
{
int xh,flag=0; //定义局部变量
while(1) //while循环
{
system("color 3f");  //操作菜单背景颜色
xh=menu(); //调用子函数显示主菜单
switch(xh)
{
case 1:system("cls");input();break; //序号为1时调用录入子函数
case 2:system("cls");look();break; //序号为2时调用浏览子函数
case 3:system("cls");chaxt();break; //序号为3时调用查询子函数菜单
case 4:system("cls");change();break; //序号为4时调用修改子函数
case 5:system("cls");zsum();break; //序号为5时调用计算求和子函数
case 6:system("cls");exit(0); //序号为6时结束程序
default:system("cls");putchar('\a');
printf("\n\t\t输入有误,请重新输入:\n");break; //输入不是对应的序号时,输出有错误
}
}
return 0;
}
int menu()  //主菜单子函数
{
int xh;
printf("\n");
printf("\t                                                                      \n"); 
printf("     ~~~~~~~~~~~~          欢迎使用过程化教学管理系统          ~~~~~~~~~~~~\n"); 
printf("     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~                                              ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~          欢迎使用过程化教学管理系统          ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~                                              ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               1.考核成绩信息录入             ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               2.分数浏览功能                 ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               3.分数查询功能                 ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               4.分数修改功能                 ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               5.计算功能                     ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~               6.退出系统                     ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~                                              ~~~~~~~~~~~~\n");
printf("     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("                                                                           \n"); 
printf("\t\t请输入序号进行选择:");
scanf("%d", &xh); 
return xh;
}
void input() //录入子函数
{   
int i;
printf("\n\t  (*^__^*)   请输入要录入成绩的总人数:");
scanf("%d",&n);
printf("\n  ~~~~~~~~~~~~ 请按提示输入分数信息:\n");
for(i=0;i<n;i++) //进入for循环
{
printf("\n\t  (*^__^*)   请输入第%d个人的信息\n",i+1);
printf("\n\t  (*^__^*)   请输入学生学号:");
scanf("%d",&tea[i].xh);
printf("\n\t  (*^__^*)   请输入上课出勤分数:");
scanf("%d",&tea[i].sk);
printf("\n\t  (*^__^*)   请输入教材持有分数:");
scanf("%d",&tea[i].jc);
printf("\n\t  (*^__^*)   请输入作业分数:");
        scanf("%d",&tea[i].zy);
printf("\n\t  (*^__^*)   请输入课堂笔记分数:");
scanf("%d",&tea[i].bj);
printf("\n\t  (*^__^*)   请输入过程能力分数:");
scanf("%d",&tea[i].nl);
printf("     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
printf("\n  ~~~~~~~~~~~~  按回车键保存\n");
getch(); //再按任意键才执行下一步
save(); //执行保存文件子函数
system("cls"); //清屏
}


void save() //保存文件子函数
{
FILE*fp; //定义指针变量
int j;
if((fp=fopen("teach.txt","a"))==NULL) //如果在当前目录下进行“追加”操作 打开 文件teach失败
{
printf("\n  ~~~~~~~~~~~~  文件打开失败!!!");
return; //表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值!
}
for(j=0;j<n;j++)
if(fwrite(&tea[j],sizeof(struct teach),1,fp)!=1) //在teach文件上进行写操作后返回值不等于1为真
{printf("\n  ~~~~~~~~~~~~  文件保存错误!!!");}
printf("\n  ~~~~~~~~~~~~  保存成功,按任意键返回");
getch(); //再按任意键才执行下一步
fclose(fp); //关闭文件
}
int open() 
{
int i;
FILE *fp;
if((fp=fopen("teach.txt","r"))==NULL) //如果在当前目录下进行“读”操作 打开 文件teach失败
{
printf("\n\t\t文件打开失败!!!");
printf("\n\t\t按任意键返回:\n\n");
getch();
return (-1); //执行该函数失败!
}
for(i=0;!feof(fp);i++) //进行循环,并判断文件指针是否已经到达文件尾部的
fread(&tea[i],sizeof(struct teach),1,fp); //在teach文件上进行写操作后返回值不等于1为真
fclose(fp); //关闭文件
return (i-1);
}


void look() //浏览子函数
{
int i;
FILE *fp;
if((fp=fopen("teach.txt","r"))==NULL) //如果在当前目录下进行“读”操作 打开 文件teach失败
{
printf("\n\t\t文件打开失败!!!");
printf("\n\t\t按任意键返回:\n\n");
getch(); //再按任意键才执行下一步
return ;
}

printf("                              成绩信息:                            \n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("  上课出勤   教材持有     作业    课堂笔记     过程化能力\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    for(i=0;!feof(fp);i++) //进行循环,并判断文件指针是否已经到达文件尾部的
{
fprintf(fp,"%d%d%d%d%d%",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl); //格式化读该文件
// fread(&tea[i],sizeof(struct teach),1,fp);
if(tea[i].sk==0 && tea[i].jc==0 && tea[i].zy==0 && tea[i].bj==0 && tea[i].nl==0)
break;
printf("    %-10d%-12d%-12d%-11d%-10d%\n",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl); 
};
fclose(fp); //关闭文件
    printf("\n\n\n\t\t\t   按任意键返回菜单:");
getch(); //再按任意键才执行下一步
printf("\n\n");
system("cls"); //清除所有显示的信息
}
void chaxt()
{
int xh;
while(1) //进入while循环
{
xh=chaxuncd(); //查询子函数菜单显示
switch(xh)
{
case 1:system("cls");chaxh();break; //序号为1时进入学号查询子函数
case 2:system("cls");chacj();break; //序号为2时进入成绩查询子函数
default:putchar('\a');
printf("\n\t\t输入有误,请重新输入:\n");break;
}
printf("\n\t\t查询完毕,按任意键返回主菜单");
getch(); //再按任意键才执行下一步
break;
}
system("cls"); //清除所有显示的信息
}


int chaxuncd() //查询菜单子函数
{
int xh;
    printf("\n\n\n\n");
printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t\t┣               成绩信息查询:   ┫\n");
printf("\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf("\t\t┣               1.按学号查询          ┫\n");
printf("\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf("\t\t┣               2.按成绩查询 ┫\n");
    printf("\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("\n\n\n\t\t请输入你的选择:");
scanf("%d",&xh);
return xh;
}
void chaxh() //查询学号子函数
{
int i,m=0;
int xh;
n=open(); //调用打开文件子函数
printf("\n\n\n\n\t\t请输入要查询的学号:");
scanf("%d",&xh);
printf("\n\n");
printf("                              成绩信息:                            \n");
    printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("   上课出勤   教材持有     作业    课堂笔记     过程化能力\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    for(i=0;i<n;i++)
if(tea[i].xh==xh) //判断是否有输入的学号
{
m++;
printf("    %-10d%-12d%-12d%-11d%-10d%\n",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl); 
}  
if(m==0) //若没有输入的学号则m=0
printf("\t\t没有该学号成绩!!!");
}


void chacj() //查询成绩子函数
{
int i,m=0;
int type;
n=open(); //调用打开文件子函数
printf("\t\t请输入要查询的成绩:");
scanf("%d",&type);
printf("\n\n");
printf("                              成绩信息:                            \n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("    上课出勤   教材持有     作业    课堂笔记     过程化能力\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
for(i=0;i<n;i++)
if(tea[i].sk==type)//
{
m++;
printf("     %-10d%-12d%-12d%-11d%-10d%\n",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl); 
}  
if(m==0)
printf("\t\t没有该成绩信息!!!");
getch();
system("cls");
}


void change()
{
int i,m=0,j,a;
int name;
FILE *fp; //定义文件指针
n=open(); //调用打开文件子函数
if(n==-1)
return; //打开失败则返回菜单
else
{
printf("\n\t\t\t  输入要修改成绩的学号:");
scanf("%d",&name);
printf("                             成绩信息:                            \n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("    上课出勤   教材持有     作业    课堂笔记     过程化能力\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
for(i=0;i<n;i++)

if(tea[i].xh==name) //判断输入学号
{
j=i;  //如果找到这个学号就记住这个学号的位置
m++;
printf("    %-10d%-12d%-12d%-11d%-10d%\n",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl);
}
if(m==0)
{
printf("\n\n\t\t没有该成绩\n\n\t\t按任意键返回菜单");
getch();
system("cls");
printf("\n\n");
return;
}
else
{
printf("\n\t\t\t   选择要修改的成绩信息:");
printf("\n\n\t\t\t----------------------------\n");
printf("\n\t\t\t\t1. ----上课出勤分数");
printf("\n\t\t\t\t2. ----教材持有分数");
printf("\n\t\t\t\t3. ----作业分数");
printf("\n\t\t\t\t4. ----课堂笔记分数");
printf("\n\t\t\t\t5. ----过程能力分数");
printf("\n\n\t\t\t----------------------------\n\n\t\t\t\t");
scanf("%d",&a);
switch(a)
{
case 1 : printf("\n\t\t\t\t新上课出勤分数:");scanf("%d",&tea[j].sk);break;
case 2 : printf("\n\t\t\t\t新教材持有分数:");scanf("%d",&tea[j].jc);break;
case 3 : printf("\n\t\t\t\t新作业分数:");scanf("%d",&tea[j].zy);break;
case 4 : printf("\n\t\t\t\t新课堂笔记分数:");scanf("%d",&tea[j].bj);break;
case 5 : printf("\n\t\t\t\t新过程能力分数:");scanf("%d",&tea[j].nl);break;
default:system("cls");putchar('\a');
printf("\n\t\t输入有误,请重新输入:\n");break;
}
printf("\n\n\t\t\t\t是否确定修改?\n\n\n\t\t\t\t确认请按Y\n\n\n\t\t\t\t\t");
a=getch();
if(a=='y'||a=='Y')
{
fp=fopen("teach.txt","w"); //一定要先打开文件。
for(i=0;i<n;i++)
if(fwrite(&tea[i],sizeof(struct teach),1,fp)!=1)
printf("\n\n\t\t文件写入错误!\n");
fclose(fp);
printf("\n\n\t\t\t\t修改成功!\n");
printf("\n\n\t\t\t\t操作成功!");
printf("\n\n\t\t\t\t按任意键返回菜单:");
getch();
system("cls");
}
else
{
printf("\n\n\t\t\t\t操作取消!\n");
printf("\n\n\t\t\t按任意键返回菜单:");
getch();
system("cls");
}
}
}
}


void zsum()
{
int i,sum,m=0;
int type;

n=open();
printf("\n\n\n\n\t\t请输入要求和计算的学号:");
scanf("%d",&type);
printf("\n\n");
printf("                              成绩信息:                            \n");
    printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("   上课出勤   教材持有     作业    课堂笔记     过程化能力\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"); 
for(i=0;i<n;i++)
if(tea[i].xh==type)
{
m++;
printf("     %-10d%-12d%-12d%-11d%-10d%\n",tea[i].sk,tea[i].jc,tea[i].zy,tea[i].bj,tea[i].nl); 
printf(" 成绩总和: ");
sum=tea[i].sk+tea[i].jc+tea[i].zy+tea[i].bj+tea[i].nl;
printf("%d",sum);
}  
if(m==0)
printf("\t\t没有该成绩信息!!!");
getch();
system("cls");
}

猜你喜欢

转载自blog.csdn.net/Zwjue_/article/details/80910839