struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next; };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明 int n;//存放学生人数 int man;//存放统计的男生数 float JY(float a)//校验成绩使范围0-100 { int n=0; while(1) { if(a>100||a<0) { printf(" 输入成绩有误,范围应该0-100,请重新输入:"); scanf("%f",&a); n=n+1; } else { return a; } } } struct student *creat(void)// 创建一个结构体返回链表的指针 { int sexJY(char *sex); struct student *head;//头指针 struct student *p1,*p2; // 其他指针 int mm; int m=1; n=0; p1=p2=(struct student *)malloc(LG); // 开辟内存空间 // printf("输入第%d个同学的基础信息,并求出2个同学的语文平均成绩。 ",i+1); printf("请先输入学号(输入0退出录入) "); printf(" "); p1->xuhao=m; m++; scanf("%ld",&p1->num); if(p1->num!=0) { printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p1->name); printf(" 你好,%s!",p1->name); printf("请输入您的性别male or female "); //mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 printf(" "); scanf("%s",&p1->sex); // mm=sexJY(p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 if(mm==1) { printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p1->score[0]); p1->score[0]=JY(p1->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p1->score[1]); p1->score[1]=JY(p1->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p1->score[2]); p1->score[2]=JY(p1->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); printf("----------------------------------------------------------------------------------------------------------------- "); } } //scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]); head=NULL; //head 为空 while(p1->num!=0)//如果成员的学号不是0则创建链表函数 { n=n+1;// if(n==1) { head=p1; //如果n=1 则把结构体的头指针给它 } else p2->next=p1;//否则把第二个指针指向第一个指针的末尾 p2=p1;//调整p2指针的指向 指向p1 p1=(struct student *)malloc(LG); printf("请先输入学号(输入0退出录入) "); printf(" "); p1->xuhao=m; m++; scanf("%ld",&p1->num); if(p1->num!=0) { printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p1->name); printf(" 你好,%s!",p1->name); printf("请输入您的性别male or female "); printf(" "); scanf("%s",&p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 if(mm==1) { printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p1->score[0]); p1->score[0]=JY(p1->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p1->score[1]); p1->score[1]=JY(p1->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p1->score[2]); p1->score[2]=JY(p1->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); printf("----------------------------------------------------------------------------------------------------------------- "); } } } p2->next=NULL; return (head); }////结构体链表创建 void body() { /* char stCmd[128]; sprintf("mode con cols=%d lines=%d", height, width); system(stCmd);动态设置窗体大小 */ system("mode con cols=120 lines=40"); //system("color f4"); printf(" ----------------------------------------------- 学生成绩管理系统----------------------------------------------- "); printf(" "); printf(" "); printf(" =========================== "); printf(" = 请先输入数据 = "); printf(" =========================== "); printf(" 请输入学生的信息,包含姓名、性别、年龄 、语文成绩、数学成绩、外语成绩。 "); printf(" --------------------------------------------------------------------------------------------------------------- "); printf(" "); } void body2() { printf(" ----------------------------------------- 学生成绩管理系统----------------------------------------------- "); printf(" "); printf(" "); printf(" ========================== "); printf(" = 欢迎 = "); printf(" 该系统共有%d个学生 ",n); printf(" =========================== "); } int showdata(struct student *head)//功能界面, { struct student *p; int sexJY(char *sex);//性别校验函数 struct student *del(struct student *head); struct student *del2(struct student *head);//删除功能2 int search(struct student *head,long int i);//查找功能 void print1(struct student *head);//打印功能1 void print2(struct student *head);//打印功能2 void print3(struct student *head);//打印功能3 void cont(struct student *head);//计算功能1 void change1(struct student*head); //void change1(struct student*head, long int i)//修改功能 struct student *add(struct student *head);//插入数据 struct student*nsert(struct student *head); // void destroy1(struct student *head);//摧毁链表 int TJ(struct student *head);//男生计算功能 int i;//存放学生编号 int iii;//存放选择显示参数 int j;//存放选择参数 int o;//选择颜色参数 long int ii;//存放需要修改的学生编号 long int jj;//存放需要查找的学生编号 char a; p=head; while(1) { body2(); printf(" "); printf(" "); printf(" ---------- 学生成绩管理系统------------ "); printf(" "); printf(" 1 ====================== "); printf(" = 主菜单 = "); printf(" ====================== "); printf(" "); printf(" 请根据需要选择操作 "); printf(" "); printf(" 选择查询的方式 "); printf(" (0)创建一个链表 ");//完成 printf(" (1)增加一个同学信息 ");//完成 printf(" (2)删除一个同学信息 ");//完成 printf(" (3)修改一个学生信息 ");//完成 printf(" (4)计算学生的三科平均分并且给予等级 ");//完成 printf(" (5)显示所有学生的信息 ");//完成 printf(" (6) 设置系统背景 ");//完成 printf(" (7) 查找一个同学的信息 ");//完成 printf(" (8) 统计男生的人数 "); printf(" (9) 局部显示所有学生的信息 "); // printf(" (10) 删除所有的学生成绩并重新录入 "); printf(" 请选择1-9 "); scanf("%d",&j);//选择不同的功能 if(j>=0&&j<=10) { switch(j) { case 0: p=creat(); _sleep(5000); system("cls");//清屏操作 break;//弹出 case 1: nsert(p); _sleep(5000); system("cls");//清屏操作 break; case 2: del(p); _sleep(5000); system("cls"); break; case 3: print3(p); change1(p); break; // change1(p,ii); system("cls"); break; case 4: cont(p); //rank(stu); _sleep(5000); system("cls"); break; case 5: print3(p); _sleep(5000); break; case 6: printf("请选择颜色 "); printf("(1)天蓝色"); printf("(2)红色"); printf(" (3) 白色 "); printf(" (4) 亮白色 "); printf(" (5)绿色 "); scanf("%d",&o); switch(o) { case 1: system("color 0B"); break; case 2: system("color 0C"); break; case 3: system("color 07"); break; case 4: system("color 0F"); break; case 5: system("color 0A"); break; default://其他值均为默认 system("color 07"); break; } break; case 7: printf("请输入要查找的学生学号"); scanf("%ld",&jj); search(p,jj); _sleep(5000); break; case 8: TJ(p);//计算男生人数 _sleep(5000); break; case 9: showdata2(p); // _sleep(5000); break; /* case 10://摧毁链表 destroy1(p); break; */ } } else { printf("输入错误 "); _sleep(3000); system("cls"); } } } int showdata2(struct student *head) { struct student *p; int sexJY(char *sex);//性别校验函数 struct student *del(struct student *head); struct student *del2(struct student *head);//删除功能2 int search(struct student *head,long int i);//查找功能 void print1(struct student *head);//打印功能1 void print2(struct student *head);//打印功能2 void print3(struct student *head);//打印功能3 void cont(struct student *head);//计算功能1 void change1(struct student*head); struct student *add(struct student *head);//插入数据 struct student*nsert(struct student *head); int TJ(struct student *head);//男生计算功能 int iii;//存放学生的查询参数 p=head; system("cls");//清屏 printf(" 1 ====================== "); printf(" = 副菜单 = "); printf(" ====================== "); printf(" 选择查询的方式 "); printf(" 1.显示所有学生的成绩 "); printf(" 2.显示所有学生的学号性别 "); printf(" 3.显示所有学生的所有信息 "); printf(" 请选择1-3 "); scanf("%d",&iii); switch (iii) { case 1: print1(p); _sleep(5000); break; case 2: print2(p); _sleep(5000); break; case 3: print3(p); _sleep(5000); break; default: printf("输入错误 "); break; } return 0; }//二级菜单 void print1(struct student *head) { struct student *p; p=head; printf("------------------------------------------------------------------------------------------------------------------ "); do { printf(" 姓名:%s,学号%d,%s ",p->name,p->num,p->sex);//姓名,学号 p=p->next; }while(p!=NULL); }//不同显示数据的方式 第一种 void print2(struct student *head)//显示所有学生的成绩 { struct student *p; p=head; printf("------------------------------------------------------------------------------------------------------------------ "); do { printf(" 姓名%s,语文:%3.1f,数学:%3.1f,外语:%3.1f ",p->name,p->score[0],p->score[1],p->score[2]); p=p->next; }while(p!=NULL); }//不同显示数据的方式 第二种 void print3(struct student *head) { float a; struct student *p; p=head; printf("------------------------------------------------------------------------------------------------------------------------------------------"); while(p!=NULL) { printf(" 序号 %d 学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f",p->xuhao,p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2]);//姓名,性别 a=p->score[0]+p->score[1]+p->score[2]; printf(" 总分:%3.1f",a); printf(" 等级%c ",p->DJ); p=p->next; } } int passwd(char *name, char *pwd) { int u = 0; if (strcmp(name, "root") == 0 && strcmp(pwd, "123456") == 0) { u =1; return u; } else if (strcmp(name, "1") == 0 && strcmp(pwd, "1") == 0) { u = 1; return u; } return 0; }//密码校验函数 传递两个字符数组,一个账号,一个密码。 void change1(struct student*head) { long int i; struct student *p; p=head;//定义指针 printf("输入想要修改的学生的学号: "); scanf("%ld",&i); //printf("%ld",p->num); do { //printf("test1"); if(p->num==i)//当结点跳转到该学生时修改成绩 { printf("开始修改信息 "); printf("请先输入学号 "); printf(" "); scanf("%ld",&p->num); if(p->num!=0) { printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p->name); printf(" 你好,%s!",p->name); printf("请输入您的性别male or female "); printf(" "); scanf("%s",&p->sex); printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p->score[0]); p->score[0]=JY(p->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p->score[1]); p->score[1]=JY(p->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p->score[2]); p->score[2]=JY(p->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); printf("----------------------------------------------------------------------------------------------------------------- "); break; } p=p->next;//需要把下一个结点赋值给p } } while(p->next!=NULL); } void cont(struct student *head) { struct student *p; int i=0; p=head; printf("------------------------------------------------------------------------------------------------------------------ "); printf("----------------------------------------计算中---------------------------------------- "); do{ p->averange=((p->score[0])+(p->score[1])+(p->score[2]))/3.0; printf("第%d同学的成绩为%3.1f",i+1,p->averange); if(p->averange>=90&&p->averange<=100) { printf(" 等级为A ",i+1); p->DJ='A'; } if(p->averange>=60&&p->averange<=89) { printf(" 等级为B ",i+1); p->DJ='B'; } if(p->averange>=0&&p->averange<=60) { printf(" 等级为C ",i+1); p->DJ='C'; } if(p->averange>100||p->averange<0) { printf(" incorrect "); } i=i+1; p=p->next; }while(p!=NULL); } int search(struct student *head,long int i)//通过学号来查找学生的信息 { struct student *p; p=head; while(p->next!=NULL)//遍历链表结点 { if(i==p->num) { printf(" 学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f 等级%c ",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->DJ); return 0; } p=p->next; } printf("无该生信息 "); return 0; } struct student *del(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针 { int i,j; struct student *p1,*p2;//定义两个结构体指针 p1=head;// p2=head;//p2指针依然指向head printf("删除第几个节点的数据 "); scanf("%d",&i);//获得节点数据 for(j=1;j<i;j++) { p2=p1;//p2指向p1 p1=p1->next;//p1向后移动一个表 } //此时指向删除数据的上一个位置 if(p1==head)//如果此时依然指向链表的头 则链表向后移动一位 { // head=p1->next;//则通过p1向后一移动一位,链表向后移动了一位但是指针没动 head = p1->next;//逻辑完全正确啊 // free(p1); printf("当前正在删除一个结点数据 "); //return head; } else//否则 { p2->next=p1->next;//把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。 //把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。 } while(head!=NULL) { printf(" 序号 %d 学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f",head->xuhao,head->num,head->name,head->sex,head->score[0],head->score[1],head->score[2]);//姓名,性别 // a=p->score[0]+p->score[1]+p->score[2]; //printf(" 总分:%3.1f",a); printf(" 等级%c ",head->DJ); head=head->next; } //删除第二行数据,之后的链条直接中断需要把链条接上 free(p1);//释放 n=n-1; printf(" **********删除中 稍后********* "); return head;//返回 } /*struct student *del2(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针 { int i,j; struct student *p1,*p2; p1=head; p2=head;//把p1 p2都指向head printf("选择删除序号为多少的学生数据"); scanf("%d",&i);//获得学号 for(j=1;j<i;j++) { p2=p1;//把p2指针指向p1 p1=p1->next;//把p1指针往后挪 直到指向指定数据的上一个数据 } if(p1==head) { head=p1->next; } free(p1); }*/ /*struct student *add(struct student *head) { struct student *p1,*p2; int i,j; int m; p1=head;//尾插 p2=head;//p2指针依然指向head do { p1=p1->next; }while(p1==NULL); p1=(struct student *)malloc(LG);//开辟内存空间, /*printf("请先输入学号 "); printf(" "); ("%ld",&p1->num); if(p1->num!=0) { printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p1->name); printf(" 你好,%s!",p1->name); printf("请输入您的性别male or female "); printf(" "); scanf("%s",&p1->sex); printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p1->score[0]); p1->score[0]=JY(p1->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p1->score[1]); p1->score[1]=JY(p1->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p1->score[2]); p1->score[2]=JY(p1->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); printf("----------------------------------------------------------------------------------------------------------------- "); } //scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]); n=n+1; return head; }//插入数据函数 */ struct student*nsert(struct student *head) { struct student *p1,*p,*q; int i = 1; int jj; int mm; int nn; printf("要插入的位置(尾插)1-%d:",n); scanf("%d",&jj);//所要插入第几位学生信息 if(jj>=1&&jj<=n) { p = head->next ; p1 = (struct student *)malloc(sizeof(struct student)); printf("请先输入学号(输入0退出录入) "); printf(" "); scanf("%ld",&p1->num); if(p1->num!=0) { p1->xuhao=jj+1; printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p1->name); printf(" 你好,%s!",p1->name); printf("请输入您的性别male or female "); printf(" "); scanf("%s",&p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 if(mm==1) { printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p1->score[0]); p1->score[0]=JY(p1->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p1->score[1]); p1->score[1]=JY(p1->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p1->score[2]); p1->score[2]=JY(p1->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); n=n+1;//系统学生数自增1 printf("----------------------------------------------------------------------------------------------------------------- "); } } if(1 == jj) { struct student*q = head->next ; head->next = p1; p1 ->next = q; } else while( p ) { if(i == (jj-1)) { struct student*q = p->next ; p->next = p1; p1->next = q; } p = p->next ; i++; } return p; } else { printf(" ---------录入错误--------- "); printf("请重试 "); return head; } } int sexJY2(char *sex) { int u = 0; if (strcmp(sex, "male") == 0) { u =1; return u; } return 0; } int sexJY(char *sex) { int u = 0; while(1) { if (strcmp(sex, "male") == 0 || strcmp(sex, "female") == 0) { u =1; return u; } else { printf("性别错误请重新输入 "); scanf("%s",sex); } } } int TJ(struct student *head) { int sexJY2(char *sex); int mm; int nn; struct student *p; p=head; do { nn=sexJY((char*)p->sex);//强制转换 if(nn==1) { man++; } p=p->next;//一直向下指直到 }while(p!=NULL); printf(" 男生人数为:%d ",man); return 0; }//遍历整个链表 计算男生的人数 int in() { int i,j; int m; int n=0;//如果密码输入错误三次则跳出循环 char user[20]={'0'}; char pas[20]={'0'}; char aa[20]={' ','U','s','e','r',' ','N','a','m','e',':'};//输出账号登陆 char bb[20]={' ','P','a','s','s','w','o','r','d',':'}; system("mode con cols=45 lines=15"); while(1) { printf(" "); for(i=0;i<12;i++) { printf("%c",aa[i]); _sleep(50); } //printf(" User Name:"); gets(user);//输入账号 for(i=0;i<10;i++) { printf("%c",bb[i]); _sleep(50); } gets(pas);//如何隐藏输入的密码 安全性getch(); printf("*"); m=passwd(user,pas); if(m==1) { return m; } else { n++; printf("incorrect please try again "); if(n==3) { system("color 04"); system("cls"); while(1) { printf("快滚出老子的魔仙堡!!!! "); _sleep(1000); } return 0; } } } } /* struct student *add2(struct student *head) { int i;//存放选择参数 struct student *p1,*p2; p1=(struct student *)malloc(LG); p1=head; scanf("%d".&i);//输入要插入的地点 { printf("请先输入学号(输入0退出录入) "); printf(" "); p1->xuhao=m; m++; scanf("%ld",&p1->num); if(p1->num!=0) { printf(" 请输入您的姓名 "); printf(" "); scanf("%s",&p1->name); printf(" 你好,%s!",p1->name); printf("请输入您的性别male or female "); //mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 printf(" "); scanf("%s",&p1->sex); // mm=sexJY(p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型 if(mm==1) { printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩) "); printf(" 第一科的成绩是:"); scanf("%f",&p1->score[0]); p1->score[0]=JY(p1->score[0]);//校验第一科的成绩 printf(" 第二科的成绩是:"); scanf("%f",&p1->score[1]); p1->score[1]=JY(p1->score[1]);//校验第二科的成绩 printf(" 第三科的成绩是:"); scanf("%f",&p1->score[2]); p1->score[2]=JY(p1->score[2]);//校验第三科的成绩 printf(" 录入完毕 "); printf("----------------------------------------------------------------------------------------------------------------- "); } } if(i==1) { head=p1->next;//把头指针想后移动 } for(j=0;j<i;j++) { p2=p2->next; if(p2==NULL) { return head; } } else { p3=p2->next; p2->next=p1 p1->next=p3;//重构 } } */
#define LG sizeof(struct student) #define M 10 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<windows.h> #include"xyf.h" int main(void ) { struct student *p; int m=0;//注意要修改回来 //system("cls"); m=in();//密码校验 if(m==1) { system("color 07"); body(); //data(p); p=creat(); showdata(p); // showdata(p); } else { return 0; } _sleep(10000); return 0; } /*增加一个同学信息 删除一个同学信息 修改一个学生信息 查找一个学生信息(按姓名、按学号) 等级计算 统计男生人数 显示学生信息(局部或全部) 学生成绩管理系统 要求: 定义学生结构体数据类型。在此类型中,应该包括三个成员变量(学号、姓名、成绩)。 定义个学生数组保存学生的信息。用一个变量来记录学生人数。 添加学生的信息。 显示学生的信息。 删除学生的信息。 查找学生的信息,根据姓名。 统计学生的信息。 第一步:菜单界面设计 提示: 1、程序功能的展示:输出语句 2、提供用户选择功能的接口:输入语句 3、对用户输入的范围校验:if结构 4、对用户选择的响应:switch结构 5、单个函数头的定义 第二步: 1、结构体构造(函数外面的地方) 2、设计输入函数,实现一个信息的输入; 3、设计输出函数,实现一个信息的输出。 4、提示:变量的定义位置,解决数据共享问题。 方法一:定义在主函数中,通过函数参数传递的方式进行。 方法二:定义为全局变量,实现数据的共享(变量的作用域) 程序结构: //引入头文件 include //函数原型声明 void add(); //结构体定义(构造) struct A{……}; //主函数定义 int main() { } //子函数定义 void add() {……} 第三步:采用数组解决全班信息的存储、显示问题 1、采用宏定义的方式声明学生人数 2、定义数组,定义数组的数组下标采用宏定义符号 struct stu s[N]; for(int i=0;i<N;i++) { //单个数据输入代码 } 3、对数组操作,显示全班信息 第四步:结构体变量定义在主函数中,通过函数参数传递的方式进行数据共享。 1、一个数据的处理 main() { …… struct stu s; //结构体变量的定义 sr(&s); //实参传递 …… } //单个数据输入函数 void sr(struct stu * x) { //对形参变量x赋值 scanf("%d",&(*x).xh); scanf("%d",&(x->xh)); } 2、多个数据的处理 main() { …… struct stu s[10]; //结构体变量的定义 for(i=0;i<10;i++) sr(&s[i]); //实参传递 …… } //单个数据输入函数 void sr(struct stu * x) { //对形参变量x赋值 scanf("%d",&(*x).xh); scanf("%d",&(x->xh)); } */ /* /*1、声明一个结构体类型student,包含姓名、性别、年龄、语文成绩、数学成绩、外语成绩等成员。 2、编写程序:输入2个同学的基础信息,分别求出2个同学的语文平均成绩。 3、编写程序:输入10个同学的基础信息,显示同学的基础信息。 4、设计多个显示功能函数: (1)显示学生的姓名、性别 (2)显示学生的姓名、年龄 (3)显示学生的姓名、总分 编写程序:让用户有选择的查看10位同学的信息。 5、给结构体类型student新增成员:等级 设计等级测试函数:根据3科平均分计算出学生等级(A:100-90; B:89-60; C:60-0) 编写程序:让用户有选择的使用系统功能。 6、学生管理系统 7.链表+指针 学生成绩管理系统*/
/*在dev 下测试可以运行 在vs2012下测试可以运行*/