博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言学生管理系统链表(实现文件的读入读出功能)
阅读量:4624 次
发布时间:2019-06-09

本文共 19598 字,大约阅读时间需要 65 分钟。

大一期末作业终于告一段落

学生管理系统可以用来管理班级学生,能够对学生信息(包括姓名、性别、年龄、成绩等)进行增加、删除、更改、查询等操作。

该软件将学生信息保存在文件中,直接对文件中的数据进行增删改查操作,除了能够培养您的编程思维,还能让你深入了解文件操作。

废话不多说,下面贴代码(在VS2012环境下实测可以运行  在dev环境下测试可以运行)

 

#define LG (sizeof(struct student))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;//存放统计的男生数int time=3000;//定义全局变量暂停时间float JY(float a)//成绩校验函数{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)// 链表创建函数{struct student *head;//头指针 struct student *p1,*p2,*p3;// 其他指针 int mm=0;int m=1;n=0;p1=p2=(struct student *)malloc(LG); // 开辟内存空间 if(p1==NULL){printf("开辟内存空间失败\n");}//内存空间开辟后最后一定要释放printf("请先输入学号(输入0退出录入)\n");printf(" ");p1->xuhao=m;m++;scanf("%d",&p1->num);if(p1->num!=0){printf(" 请输入您的姓名\n");printf(" ");scanf("%s",&p1->name);printf(" 你好,%s!",p1->name);printf("请输入您的性别male or female\n");//mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型printf(" ");scanf("%s",&p1->sex); mm=sexJY(p1->sex);if(mm==1){ printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)\n");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");_sleep(1000);printf("-----------------------------------------------------------------------------------------------------------------\n");} } head=NULL;while(1){n=n+1;if(n==1) {head=p1; } else {p3=(struct student *)malloc(LG);printf("请先输入学号(输入0退出录入)\n");printf(" ");p3->xuhao=m;m++;scanf("%d",&p3->num);if(p3->num!=0){printf(" 请输入您的姓名\n");printf(" ");scanf("%s",&p3->name);printf(" 你好,%s!",p3->name);printf("请输入您的性别male or female\n");printf(" ");scanf("%s",&p3->sex); mm=sexJY(p3->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型if(mm==1){printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)\n");printf(" 第一科的成绩是:");scanf("%f",&p3->score[0]); p3->score[0]=JY(p3->score[0]);//校验第一科的成绩	printf(" 第二科的成绩是:");scanf("%f",&p3->score[1]);p3->score[1]=JY(p3->score[1]);//校验第二科的成绩printf(" 第三科的成绩是:");scanf("%f",&p3->score[2]);p3->score[2]=JY(p3->score[2]);//校验第三科的成绩printf(" 录入完毕\n");_sleep(1000);printf("-----------------------------------------------------------------------------------------------------------------\n");p2->next=p3;p2=p3;printf("%d",n);}}else{n--;break;}}}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("\n ----------------------------------------------- 学生成绩管理系统-----------------------------------------------\n"); printf("\n");printf("\n");printf(" ===========================\n");printf(" = 请先输入数据 =\n");printf(" ===========================\n");printf(" 请输入学生的信息,包含姓名、性别、年龄 、语文成绩、数学成绩、外语成绩。\n \n \n");printf(" ---------------------------------------------------------------------------------------------------------------\n "); printf("\n");}void body2()//界面设计{printf("\n ----------------------------------------- 学生成绩管理系统-----------------------------------------------\n"); printf("\n");printf("\n");printf(" ==========================\n");printf(" = 欢迎 =\n");printf(" 该系统共有%d个学生\n",n);printf(" ===========================\n");}int showdata(struct student *head)//功能界面,{struct student *p;int sexJY(char *sex);//性别校验函数void *dell(struct student *head);//摧毁函数struct student *del(struct student *head);struct student *del2(struct student *head);//删除功能2long int search(struct student *head);//查找功能int showdata3(struct student *head);//系统设置void print1(struct student *head);//打印功能1void print2(struct student *head);//打印功能2void print3(struct student *head);//打印功能3void out1(struct student *head);//输出到文件功能struct student *add(struct student *head);//添加功能void cont(struct student *head);//计算功能1void change1(struct student*head);//修改功能struct student* input1();//外部导入功能//void input1(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("\n");printf("\n");printf("\n---------- 学生成绩管理系统------------\n"); printf("\n");printf(" 1 ======================\n");printf(" = 主菜单 =\n");printf(" ======================\n");printf("\n");printf(" 请根据需要选择操作\n");printf("\n");printf(" 选择查询的方式\n");printf(" (0) 输入0退出该系统\n");printf(" (1)增加一个同学信息 \n");printf(" (2)删除一个同学信息 \n");printf(" (3)修改一个学生信息 \n");//完成printf(" (4)计算学生的三科平均分并且给予等级 \n");//完成printf(" (5)显示所有学生的信息 \n");//完成//printf(" (6) 设置系统背景 \n");//完成printf(" (6) 数据存盘 \n");//完成printf(" (7) 查找一个学生的信息\n");printf(" (8) 统计男生的人数\n");printf(" (9) 局部显示学生的信息\n");printf(" (10) 系统设置\n");//printf(" (11) 选择显示时间\n");//printf(" (12) 删除所有学生的数据\n");//printf(" (13) 数据存盘\n ");printf(" 请选择1-10\n");scanf("%d",&j);//选择不同的功能if(j==0){break;}if(j>=1&&j<=10){switch(j){case 1:add(p);_sleep(time);system("cls");//清屏操作 break;case 2: del(p);_sleep(time);system("cls"); break;case 3:print3(p);change1(p);break;// change1(p,ii);system("cls"); break;case 4:cont(p);//rank(stu);_sleep(time);system("cls"); break;case 5:print3(p);_sleep(time);	break;case 6:out1(p);_sleep(time);break;/* case 6:printf("请选择颜色\n");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("请输入要查找的学生学号");search(p);_sleep(time);break;case 8:TJ(p);//计算男生人数_sleep(time);break;case 9:showdata2(p);_sleep(time);// _sleep(5000); break;case 10://系统设置showdata3(p);_sleep(time);break;/* case 11:printf("输入暂停时间(s),默认3s\n");scanf("%d",&time);time=time*1000;_sleep(time);break;*//*case 12:printf("正在摧毁链表\n");dell(p);time=time*1000;_sleep(time);*//*case 13:out1(p);_sleep(time);*/}}else{printf("输入错误\n");_sleep(time);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//	long int search(struct student *head,long int i);//查找功能void print1(struct student *head);//打印功能1void print2(struct student *head);//打印功能2void print3(struct student *head);//打印功能3void cont(struct student *head);//计算功能1void 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 ======================\n");printf(" = 副菜单 =\n");printf(" ======================\n");printf(" 选择查询的方式\n");printf("\n 1.显示所有学生的成绩\n");printf("\n 2.显示所有学生的学号性别\n");printf("\n 3.显示所有学生的所有信息\n");printf(" 请选择1-3\n");scanf("%d",&iii);switch (iii){case 1:print2(p);_sleep(1000);break;case 2:print1(p);_sleep(1000);break;case 3:print3(p);_sleep(1000);break;default:printf("输入错误,返回主菜单\n");break;}return 0;}//二级菜单 int showdata3(struct student *head)//系统设置选项{struct student *p;int iii;int o;p=head;system("cls");//清屏printf(" 1 ======================\n");printf(" = 副菜单 =\n");printf(" ======================\n");printf(" 选择查询的方式\n");printf("\n (1). 设置系统背景 \n");printf("\n (2). 修改系统延时 \n");printf("\n (3). 删除链表所有数据并重新读入\n");printf(" 请选择1-2\n");scanf("%d",&iii);switch (iii){case 1:printf("请选择颜色\n");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;}_sleep(1000);break;case 2:printf("输入暂停时间(s),默认3s\n");scanf("%d",&time);time=time*1000;_sleep(time);break;case 3:printf("正在摧毁链表\n");dell(p);time=time*1000;_sleep(1000);break;default:printf("输入错误,返回主菜单\n");break;}return 0;}void print1(struct student *head){struct student *p;p=head;if(head==NULL){exit(0);}printf("------------------------------------------------------------------------------------------------------------------\n");do{printf("\n 姓名:%s,学号%d,%s\n\n",p->name,p->num,p->sex);//姓名,学号p=p->next;}while(p!=NULL);}//不同显示数据的方式 第一种void print2(struct student *head)//显示所有学生的成绩{struct student *p;p=head;if(head==NULL){exit(0);}printf("------------------------------------------------------------------------------------------------------------------\n");do{printf("\n\n 姓名%s,语文:%3.1f,数学:%3.1f,外语:%3.1f\n",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;if(head==NULL){exit(0);}printf("------------------------------------------------------------------------------------------------------------------------------------------");while(p!=NULL){printf("\n\n序号 %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\n",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;//定义指针if(head==NULL){exit(0);}printf("输入想要修改的学生的学号:\n");scanf("%ld",&i);do{	//printf("test1");if(p->num==i)//当结点跳转到该学生时修改成绩{printf("开始修改信息\n");printf("请先输入学号\n");printf(" ");scanf("%ld",&p->num);if(p->num!=0){printf(" 请输入您的姓名\n");printf(" ");scanf("%s",&p->name);printf(" 你好,%s!",p->name);printf("请输入您的性别male or female\n");printf(" ");scanf("%s",&p->sex); printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)\n");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(" 录入完毕\n");printf("-----------------------------------------------------------------------------------------------------------------\n");break; } p=p->next;//需要把下一个结点赋值给p}} while(p->next!=NULL);   }void cont(struct student *head)//计算学生等级函数{struct student *p;int i=0;p=head;if(head==NULL){exit(0);}printf("------------------------------------------------------------------------------------------------------------------\n");printf("----------------------------------------计算中----------------------------------------\n");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\n",i+1);p->DJ='A';}if(p->averange>=60&&p->averange<=89){printf(" 等级为B\n",i+1);p->DJ='B';}if(p->averange>=0&&p->averange<=60){printf(" 等级为C\n",i+1);p->DJ='C';}if(p->averange>100||p->averange<0){printf(" incorrect\n");}i=i+1;p=p->next;}while(p!=NULL);}long int search(struct student *head)//通过学号来查找学生的信息{struct student *p;long jj;scanf("%ld",&jj);p=head;if(head==NULL){exit(0);}do{if(jj==p->num){printf("\n\n学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f 等级%c\n",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->DJ);return 0;}p=p->next;}while(p->next!=NULL);//遍历链表结点printf("无该生信息\n");return 0; }struct student *del(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针{int i,j;struct student *p1,*p2;//定义两个结构体指针if(head==NULL){exit(0);}p1=head;//p2=head;//p2指针依然指向headprintf("删除第几个节点的数据\n");scanf("%d",&i);//获得节点数据for(j=1;j
next;//p1向后移动一个表}//此时指向删除数据的上一个位置if(p1==head)//如果此时依然指向链表的头 则链表向后移动一位{// head=p1->next;//则通过p1向后一移动一位,链表向后移动了一位但是指针没动head = p1->next;//逻辑完全正确啊// free(p1);printf("当前正在删除一个结点数据\n");//return head;}else//否则{p2->next=p1->next;//把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。//把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。}while(head!=NULL){printf("\n\n序号 %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\n",head->DJ);head=head->next;} //删除第二行数据,之后的链条直接中断需要把链条接上free(p1);//释放n=n-1;printf("\n**********删除中 稍后*********\n"); return head;//返回}struct student*nsert(struct student *head){struct student *p1,*p,*q;int i = 1;int jj;int mm;int nn;if(head==NULL){exit(0);}printf("要插入的位置(尾插)1-%d:",n);scanf("%d",&jj);//所要插入第几位学生信息if(jj>=1&&jj<=n){p = head->next ;p1 = (struct student *)malloc(sizeof(struct student));printf("请先输入学号(输入0退出录入)\n");printf(" ");scanf("%ld",&p1->num);if(p1->num!=0){p1->xuhao=jj+1;printf(" 请输入您的姓名\n");printf(" ");scanf("%s",&p1->name);printf(" 你好,%s!",p1->name);printf("请输入您的性别male or female\n");printf(" ");scanf("%s",&p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型if(mm==1){printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)\n");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=n+1;//系统学生数自增1printf("-----------------------------------------------------------------------------------------------------------------\n");}}if(1 == jj){struct student*q = head->next ;head->next = p1;p1 ->next = q; }elsewhile( p ){if(i == (jj-1)){struct student*q = p->next ;p->next = p1;p1->next = q;}p = p->next ;i++;}return p;}else{printf("\n---------录入错误---------\n");printf("请重试\n");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("性别错误请重新输入\n");scanf("%s",sex);}}}int TJ(struct student *head){int sexJY2(char *sex);int mm;int nn;struct student *p;if(head==NULL){exit(0);}p=head;do{ nn=sexJY((char*)p->sex);//强制转换if(nn==1){man++;}p=p->next;//一直向下指直到}while(p!=NULL);printf("\n男生人数为:%d\n",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("\n");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\n");if(n==3){system("color 04");system("cls");while(1){printf("快滚出老子的魔仙堡!!!!\n");_sleep(1000);}return 0;}}}}struct student *add(struct student *head){struct student *p,*p1,*p2;int i = 1;int jj;int mm;int nn;p=head;printf("输入要插入的位置1-%d: ",n);scanf("%d",&i);jj=i;p1=(struct student*)malloc(LG);//开辟p1内存空间p2=(struct student*)malloc(LG);//开辟p2内存空间printf("请先输入学号(输入0退出录入)\n");printf(" ");scanf("%ld",&p1->num);if(p1->num!=0){p1->xuhao=jj+1;printf(" 请输入您的姓名\n");printf(" ");scanf("%s",&p1->name);printf(" 你好,%s!",p1->name);printf("请输入您的性别male or female\n");printf(" ");scanf("%s",&p1->sex); mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型if(mm==1){printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)\n");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");printf("-----------------------------------------------------------------------------------------------------------------\n");}}if(i==1)//如果插入点为头部head 则{p2=head->next;head->next=p1;p1->next=p2;n=n+1;//系统学生数自增1return head;}else{p=head;if(i==n){//如果输入等于nwhile(p->next!=NULL){p=p->next;}p->next=p1;p1->next=NULL;//插入函数写完后一定要把指针指向空//printf("%d",p1->xuhao);n=n+1;return head;}else{//如果不是头也不是尾巴//则从中间插while(i--){p=p->next;}// printf("已找到");p2=p->next;p->next=p1;p1->next=p2;n=n+1;return head;}}}void *dell(struct student *head){struct student *p=head;free(p);printf("\n\n链表已摧毁\n\n");}int choose(int i){printf("\n ----------------------------------------------- 学生成绩管理系统-----------------------------------------------\n"); printf("\n");printf("\n");printf(" 请选择信息录入的方式\n");printf(" ===========================\n");printf(" = (1)手动输入 =\n");printf(" = (2)通过外部导入信息 =\n");printf(" ===========================\n");printf(" 请选择:");while(1){scanf("%d",&i);if(i==1||i==2){//printf("%d",n);return i;}else{printf("\n 请输入一个有效的值:");}}}void load(){printf("\n该功能还在完善中\n 敬请期待\n");}//实现输出输入文件的功能void out1(struct student *head){FILE *out;struct student *p;char outfile[20];char ch;int i;ch=getchar();if((out=fopen("stu.txt","wb"))==NULL){printf(" 找不到输出文件");exit(0);}p=head;while(p!=NULL){if(fwrite(p,LG,1,out)!=1) { printf("\n写入数据出错\n"); fclose(out); return; } p=p->next;} fclose(out); } struct student *input1 () { struct student *head = NULL; struct student *p1, *p2;//s = p1;p = p2; FILE *fp; if((fp=fopen("stu.txt","rb+"))==NULL) { printf("打开文件出错\n"); exit(0); } while(!feof(fp)) { if((p1=(struct student*)malloc(LG))==NULL){ printf("内存申请出错\n"); fclose(fp); exit(0); } if(fread(p1,LG,1,fp)!=1){ free(p1); break; } if(head==NULL) {head=p2=p1;n=n+1;} else{ p2->next=p1; p2=p1;n=n+1;} } fclose(fp); return (head); }

 

  

 

  登陆界面

 

 

实现文件的读入功能

 

 

主菜单的设计  还有相关的二级菜单

#include
#include
#include
#include
#include
#include"xyf.h"int main(void){ struct student *p; int m=1;//注意要修改回来 int zz=0; //system("cls"); //m=in(); if(m==1) { system("color 07"); zz=choose(zz); switch (zz) {case 1: body(); //data(p); p=creat(); showdata(p); break;case 2: printf("\n -----------------------------------------------正在导入-----------------------------------------------\n"); p=input1(); showdata(p); break; } } _sleep(1000); 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
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.链表+指针学生成绩管理系统 2016级物联网2班1.代码优化3.框架4.增加功能5.输出定向文件*/

  

转载于:https://www.cnblogs.com/a986771570/p/7051129.html

你可能感兴趣的文章
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
PHP中获取当前页面的完整URL
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
MySql【Error笔记】
查看>>
JS线程Web worker
查看>>
学习记事
查看>>
java 子类重写父类的方法应注意的问题
查看>>
[LevelDB] LevelDB理论基础
查看>>
自动化测试 Appium之Python运行环境搭建 Part2
查看>>
sql server 实现多表连接查询
查看>>
Python标准库:内置函数getattr(object, name[, default])
查看>>