您的位置:首页 > 编程语言 > C语言/C++

c/c++学生成绩管理系统

2017-01-20 19:22 549 查看
**感觉自己将来要做程序员了,所以来CSDN把自己在学习过程中编的东西记录下来。
第一个程序是C语言实训的程序----学生成绩管理系统。**


Copyright ©Rushierer
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 60
typedef struct student
{
char num[10];       /*学号*/
char name[15];      /*姓名*/
int cgrade;         /*C语言成绩*/
int mgrade;         /*数学成绩*/
int egrade;         /*英语成绩*/
int total;          /*总分*/
float ave;          /*平均分*/
int mingci;         /*名次*/
}STUDENT;
typedef struct date
{
int n;              /*统计数据个数*/
}DATE;
void showMenu();                                      /*仅显示菜单*/
void Menu(STUDENT stu[],int n,DATE date[]);           /*显示主菜单*/
void showdate(STUDENT stu[],int n,DATE date[]);       /*只显示数据*/
void inputRecorde(STUDENT stu[],int n,DATE date[]);   /*从键盘输入数据*/
void displayRecord(STUDENT stu[],int n,DATE date[]);  /*显示所有数据*/
void deleteRecorde(STUDENT stu[],int n,DATE date[]);  /*删除数据*/
void searchRecorde(STUDENT stu[],int n,DATE date[]);  /*查找数据*/
void numsearch(STUDENT stu[],int n,DATE date[]);      /*按学号查找*/
void namesearch(STUDENT stu[],int n,DATE date[]);     /*按姓名查找*/
void modifyRecorde(STUDENT stu[],int n,DATE date[]);  /*修改数据*/
void insertRecorde(STUDENT stu[],int n,DATE date[]);  /*插入数据*/
void sortRecorde(STUDENT stu[],int n,DATE date[]);    /*排列数据*/

int main()
{
int choice;
STUDENT stu
;
DATE date[1];
showMenu();
stu[0].total=0;
stu[0].ave=0;
printf("请输入选项(0~7):");
scanf("%d",&choice);
printf("\n");
if(choice==1)
{
printf("请输入要记录的学生人数:");
scanf("%d",&date[0].n);
}
else if(choice==0)
choice=0;
else
{
printf("当前没有记录的数据,请录入数据!\n");
printf("\n");
printf("请输入要录入的学生人数:");
scanf("%d",&date[0].n);
choice=1;
}
switch(choice)
{
case 1:
system("cls");
inputRecorde(stu,date[0].n,date);break;
case 0:
exit(0);break;
}
return 0;

}

/*显示主菜单Menu*/
void showMenu()
{
printf("       The Students'Grade Management System     \n");
printf("  *********************Menu*********************\n");
printf("  *                                            *\n");
printf("  *   1 input  record       2 display record   *\n");
printf("  *   3 delete record       4 search  record   *\n");
printf("  *   5 modify record       6 insert  record   *\n");
printf("  *   7 sort   record       0 quit    system   *\n");
printf("  *                                            *\n");
printf("  **********************************************\n");
}
/*显示菜单2*/
void Menu(STUDENT stu[],int n,DATE date[])
{
int choice;
showMenu();
printf("请输入选项(0~7):");
scanf("%d",&choice);
switch(choice)
{
case 1:
system("cls");

4000
inputRecorde(stu,n,date);break;
case 2:
system("cls");
displayRecord(stu,n,date);break;
case 3:
system("cls");
deleteRecorde(stu,n,date);break;
case 4:
system("cls");
searchRecorde(stu,n,date);break;
case 5:
system("cls");
modifyRecorde(stu,n,date);break;
case 6:
system("cls");
insertRecorde(stu,n,date);break;
case 7:
system("cls");
sortRecorde(stu,n,date);break;
case 0:
exit(0);break;
}
}

/*从键盘输入成绩input*/
void inputRecorde(STUDENT stu[],int n,DATE date[])
{
int i=0,j;
system("cls");
printf("                   Input record                      \n");
printf("*****************************************************\n");
printf("\n");
printf("数据录入格式提示:\n");
printf("1.数据内容:学号、姓名、c语言成绩、数学成绩、英语成绩\n");
printf("2.数据间以空格做间隔,最后回车录入数据结束\n");
printf("\n");
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的数据:",i+1);
scanf("%s",stu[i].num);
scanf("%s",stu[i].name);
scanf("%d",&stu[i].cgrade);
scanf("%d",&stu[i].mgrade);
scanf("%d",&stu[i].egrade);
}
printf("\n");
printf("数据录入完成!\n");
printf("\n");
printf("1查看录入的信息  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
printf("\n");
displayRecord(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}
}

/*显示所有数据display*/
void displayRecord(STUDENT stu[],int n,DATE date[])
{
int i,j;
printf("                   Display record                    \n");
printf("*****************************************************\n");
printf("所有数据:\n");
printf("\n");
printf("      学号          姓名    c语言  数学   英语\n");
for(i=0;i<n;i++)
{
printf("%10s%15s%6d%7d%7d\n",stu[i].num,
stu[i].name,
stu[i].cgrade,
stu[i].mgrade,
stu[i].egrade);
}
printf("\n");
printf("1返回主菜单  0退出:");
scanf("%d",&j);
if(j==1)
{
system("cls");
Menu(stu,n,date);
}
else
exit(0);
}

/*只显示数据show*/
void showdate(STUDENT stu[],int n,DATE date[])
{
int i;
printf("已录入的数据:\n");
printf("\n");
printf("      学号          姓名    c语言  数学   英语\n");
for(i=0;i<n;i++)
{
printf("%10s%15s%6d%7d%7d\n",stu[i].num,
stu[i].name,
stu[i].cgrade,
stu[i].mgrade,
stu[i].egrade);
}

}

/*删除记录delete*/
void deleteRecorde(STUDENT stu[],int n,DATE date[])
{
int i,k,j;
printf("                   Delete record                     \n");
printf("*****************************************************\n");
printf("\n");
showdate(stu,n,date);
printf("已经录入%d个学生的信息,你想删除第几个的记录:",n);
scanf("%d",&k);
i=k-1;
for(;i<=n-2;i++)
{
strcpy(stu[i].num,stu[i+1].num);
strcpy(stu[i].name,stu[i+1].name);
stu[i].cgrade=stu[i+1].cgrade;
stu[i].mgrade=stu[i+1].mgrade;
stu[i].egrade=stu[i+1].egrade;
}
printf("\n");
printf("已成功删除!\n");
date[0].n=date[0].n-1;
n=n-1;
printf("\n");
printf("1显示修改后的信息  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
printf("\n");
displayRecord(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}
}

/*查找功能search*/
void searchRecorde(STUDENT stu[],int n,DATE date[])
{
int k;
printf("                   Search record                     \n");
printf("*****************************************************\n");
printf("\n");
printf("查找方式:1.按学号查找 2.按姓名查找\n");
printf("请选着查找方式(1/2):");
scanf("%d",&k);
printf("\n");
if(k==1)
{
numsearch(stu,n,date);
}
else
{
namesearch(stu,n,date);
}
}

/*按学号查找*/
void numsearch(STUDENT stu[],int n,DATE date[])
{
int i,j,k=0;
char num1[10];
printf("请输入想查找的学号:");
scanf("%s",num1);
printf("\n");
printf("查找结果:");
printf("\n");
for(i=0;i<n;i++)
{
if(strcmp(stu[i].num,num1)==0)
{
printf("%10s%15s%4d%4d%4d\n",stu[i].num,
stu[i].name,
stu[i].cgrade,
stu[i].mgrade,
stu[i].egrade);
k+=1;
}
}
if(k==0)
printf("输入的学号不存在或格式不对!\n");
printf("\n");
printf("1重新查询  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
system("cls");
searchRecorde(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}
}

/*按姓名查找*/
void namesearch(STUDENT stu[],int n,DATE date[])
{
int i,j,k=0;
char name1[15];
printf("请输入想查找的姓名:");
scanf("%s",name1);
printf("\n");
printf("查找结果:");
printf("\n");
for(i=0;i<n;i++)
{
if(strcmp(stu[i].name,name1)==0)
{
printf("%10s%15s%6d%7d%7d\n",stu[i].num,
stu[i].name,
stu[i].cgrade,
stu[i].mgrade,
stu[i].egrade);

k+=1;
}
}
if(k==0)
printf("输入的学号不存在或格式不对!\n");
printf("\n");
printf("1重新查询  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
system("cls");
searchRecorde(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}
}

/*修改记录modify*/
void modifyRecorde(STUDENT stu[],int n,DATE date[])
{
int i,k,j;
char num[10];       /*学号*/
char name[15];      /*姓名*/
int cgrade;         /*C语言成绩*/
int mgrade;         /*数学成绩*/
int egrade;         /*英语成绩*/
printf("                   Modify record                     \n");
printf("*****************************************************\n");
printf("\n");
showdate(stu,n,date);
printf("\n");
printf("已经录入%d个学生的信息,你想修改第几个学生的记录:",n);
scanf("%d",&k);
if(k>n||k<=0)
{
printf("\n");
printf("输入错误,无这条记录!\n");
printf("请重新输入你想修改第几个学生的记录:");
scanf("%d",&i);
k=i;
}
printf("\n");
printf("请输入修改后的信息:");
scanf("%s",num);
scanf("%s",name);
scanf("%d",&cgrade);
scanf("%d",&mgrade);
scanf("%d",&egrade);
strcpy(stu[k-1].num,num);
strcpy(stu[k-1].name,name);
stu[k-1].cgrade=cgrade;
stu[k-1].mgrade=mgrade;
stu[k-1].egrade=egrade;
printf("\n");
printf("修改完成!\n");
printf("\n");
printf("1显示修改后的信息  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
printf("\n");
displayRecord(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}

}

/*插入数据insert*/
void insertRecorde(STUDENT stu[],int n,DATE date[])
{
int i,k,j;
char num[10];       /*学号*/
char name[15];      /*姓名*/
int cgrade;         /*C语言成绩*/
int mgrade;         /*数学成绩*/
int egrade;         /*英语成绩*/
printf("                   Insert record                     \n");
printf("*****************************************************\n");
printf("\n");
showdate(stu,n,date);
printf("\n");
printf("你想在第几个数据之后插入数据:");
scanf("%d",&k);
if(k>n||k<=0)
{
printf("\n");
printf("输入错误!\n");
printf("请重新输入你想在第几个数据之后插入数据:");
scanf("%d",&i);
k=i;
}
printf("\n");
printf("请输入插入的信息:");
scanf("%s",num);
scanf("%s",name);
scanf("%d",&cgrade);
scanf("%d",&mgrade);
scanf("%d",&egrade);
for(i=n;k+1<=i;i--);
{
strcpy(stu[i].num,stu[i-1].num);
strcpy(stu[i].name,stu[i-1].name);
stu[i].cgrade=stu[i-1].cgrade;
stu[i].mgrade=stu[i-1].mgrade;
stu[i].egrade=stu[i-1].egrade;
}
strcpy(stu[k].num,num);
strcpy(stu[k].name,name);
stu[k].cgrade=cgrade;
stu[k].mgrade=mgrade;
stu[k].egrade=egrade;
date[0].n=date[0].n+1;
n=n+1;
printf("\n");
printf("插入完成!\n");
printf("\n");
printf("1显示修改后的信息  2返回主菜单  0退出:");
scanf("%d",&j);
switch(j)
{
case 1:
printf("\n");
displayRecord(stu,n,date);break;
case 2:
system("cls");
Menu(stu,n,date);break;
case 0:
exit(0);break;
}

}

/*对数据排序sort*/
void sortRecorde(STUDENT stu[],int n,DATE date[])
{
int i,j;
STUDENT temp;
printf("                    Sort record                      \n");
printf("*****************************************************\n");
printf("\n");
showdate(stu,n,date);
printf("\n");
printf("排序后的数据:\n");
for(i=0;i<n;i++)
{
stu[i].total=stu[i].cgrade+stu[i].mgrade+stu[i].egrade;
stu[i].ave=(float)stu[i].total/3;
}
for(j=1;j<n;j++)
for(i=0;i<n-j;i++)
if(stu[i].total>stu[i+1].total)
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
printf("\n");
printf("      学号          姓名    c语言  数学   英语  平均分   总分   名次\n");
j=0;
for(i=n-1;i>-1;i--)
{
j++;
printf("%10s%15s%6d%7d%7d%8.2f%7d%7d\n",stu[i].num,
stu[i].name,
stu[i].cgrade,
stu[i].mgrade,
stu[i].egrade,
stu[i].ave,
stu[i].total,
j);
}
printf("\n");
printf("1返回主菜单  0退出:");
scanf("%d",&j);
if(j==1)
{
system("cls");
Menu(stu,n,date);
}
else
exit(0);
}


转载请咨询作者本人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 c++