| 这个是老师的源程序的思路,没用到指针,我改了一下,主要就是界面的美化工作了,呵呵,感觉还可以吧,以下的程序在DEV-C++下编译通过,若要在VC下编译,请把主函数开关的int main改为main |
| #include <stdio.h> #include <stdlib.h> #include <string.h> int count=0; //计算学员的人数 struct student { int id; char name[20]; float cj[3]; float avg; }s[50]; //定义一个50个元素的结构数组 void input(){ //录入函数 int i,j; char var; system("cls"); //系统清屏 printf("\n\t\t\t\t 添加学员\n"); printf("\n--------------------------------------------------------------------------------\n"); for(i = count;i<50;i++){ printf("请输入第%d位学员的信息:\n",i+1); printf("学号:"); scanf("%d",&s[i].id); printf("姓名:"); fflush(stdin); gets(s[i].name); printf("三门成绩:\n"); for(j=0;j<3;j++) { printf("成绩%d:",j+1); fflush(stdin); scanf("%f",&s[i].cj[j]); } printf("\n"); s[i].avg=(s[i].cj[0] + s[i].cj[1] + s[i].cj[2]) / 3; count++; //学生人数加1 printf("是否继续输入学员信息(y/n)?"); fflush(stdin); var = getchar(); if(var == 'n') break; } } void display() //查看函数 { int i; system("cls"); //系统清屏 printf("\n\t\t\t\t 查看学员\n"); printf("\n--------------------------------------------------------------------------------\n"); printf("\t\t学号\t姓名\t语文\t数学\t英语\t平均成绩\n"); for(i = 0;i<count;i++) { printf("\t\t %d\t %s\t %.1f\t %.1f\t %.1f\t %.1f\n",s[i].id,s[i].name,s[i].cj[0],s[i].cj[1],s[i].cj[2],s[i].avg); } printf("\n"); system("pause"); } void sort() //排序函数 { int i,j; struct student temp; system("cls"); //系统清屏 for(i=0;i<count;i++) { for(j=0;j<count-i-1;j++) { if(s[j].avg<s[j+1].avg) { temp = s[j]; s[j] = s[j+1]; s[j+1] = temp; } } } printf("排序完成,请返回主菜单用查看功能查看排序结果.\n"); system("pause"); } void insert() //插入函数 { int i,j; struct student temp; system("cls"); //系统清屏 printf("\n\t\t\t\t 插入学员\n"); printf("\n--------------------------------------------------------------------------------\n"); printf("请输入插入学员的信息:\n"); printf("学号:"); scanf("%d",&temp.id); printf("姓名:"); fflush(stdin); gets(temp.name); printf("三门成绩:\n"); for(j=0;j<3;j++) { printf("成绩%d:",j+1); fflush(stdin); scanf("%f",&temp.cj[j]); } printf("\n"); temp.avg=(temp.cj[0] + temp.cj[1] + temp.cj[2]) / 3; for(i=0;i<count;i++){ if(temp.avg>s[i].avg) break; } for(j=count;j>i;j--){ s[j] = s[j-1]; } s[i] = temp; count++; printf("插入完成,请返回主菜单用查看功能查看插入结果.\n"); system("pause"); } void del() //删除函数 { system("cls"); //系统清屏 printf("\n\t\t\t\t 删除学员\n"); printf("\n--------------------------------------------------------------------------------\n"); int i,j,no,flag=0; printf("请输入要删除学生的学号:"); scanf("%d",&no); for(i=0;i<count;i++){ if(s[i].id == no){ flag = 1; break; } } if(flag == 1){ for(j=i;j<count-1;j++){ s[j] = s[j+1]; } count--; printf("删除完成,请返回主菜单用查看功能查看删除结果.\n"); }else{ printf("没有该学员的信息\n"); } system("pause"); } void found() //查找函数 { system("cls"); //系统清屏 printf("\n\t\t\t\t 查找学员\n"); printf("\n--------------------------------------------------------------------------------\n"); int no; int i,flag=0; printf("请输入要查询的学生的学号:"); scanf("%d",&no); for(i = 0;i<count;i++){ if(no==s[i].id){ flag = 1; break; } } if(flag == 1){ printf("你要查找的学员信息是:\n"); printf("\n--------------------------------------------------------------------------------\n"); printf("\t\t学号\t姓名\t语文\t数学\t英语\t平均成绩\n"); printf("\t\t %d\t %s\t %.1f\t %.1f\t %.1f\t %.1f\n",s[i].id,s[i].name,s[i].cj[0],s[i].cj[1],s[i].cj[2],s[i].avg); }else{ printf("没有你要找的学员\n"); } printf("\n"); system("pause"); } int main() { int select; do{ system("cls"); //系统清屏 printf("\n\t\t\t 学生成绩管理系统\n"); printf("\n--------------------------------------------------------------------------------\n"); printf("\t\t\t 0. 退出程序\n "); printf("\t\t\t 1. 添加学员\n "); printf("\t\t\t 2. 查看学员\n "); printf("\t\t\t 3. 排序学员\n "); printf("\t\t\t 4. 插入学员\n "); printf("\t\t\t 5. 删除学员\n "); printf("\t\t\t 6. 查找学员\n "); printf("\n-------------------------------------------------------------------------------\n\n"); do{ printf("\t\t\t请输入你要执行的功能:"); scanf("%d",&select); if(select<0 || select>6) printf("\t\t\t输入错误,请输入0~6的数\n"); }while(select<0 || select>6); //如果选择项不在0~6之间则重输 switch (select) { case 0: exit(0); case 1: input(); break; //录入函数 case 2: display(); break; //查看函数 case 3: sort(); break; //排序函数 case 4: insert(); break; //插入函数 case 5: del(); break; //删除函数 case 6: found(); break; //查找函数 } }while(1); } |