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++结合文件操作和链表实现学生成绩管理系统
- c++学生成绩管理系统 文件操作
- <C++>简单的学生成绩管理系统
- c++学生成绩管理系统
- 用C++写的学生成绩管理系统(比较简单的没有使用链表,只是用到了类和对象)
- C++--学生成绩管理系统
- 基于链表的学生成绩管理系统——C++二进制文件读写string对象时出现的错误
- C++基础知识复习之--顺序表学生成绩管理系统
- C++课程设计:学生成绩管理系统
- 简易学生成绩管理系统(c++)
- C++课程设计:学生成绩管理系统
- C++作业(学生成绩管理系统)
- C++学生成绩管理系统
- 学生成绩信息管理系统(c++)
- 使用C++名单在文档处理和学生成绩管理系统相结合
- 学生成绩管理系统(c++)控制台应用程序
- C++ 课程设计学生成绩管理系统源代码
- C++学生成绩管理系统
- 用C++写学生成绩管理系统