c语言学生管理系统链表(dev vs2012下可以运行)

 

 

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个同学的语文平均成绩。\n",i+1);
printf("请先输入学号(输入0退出录入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&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);
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");
} 
} 
//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退出录入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&p1->num);
if(p1->num!=0)
{
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");
}
} 
}
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);//性别校验函数
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("\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)创建一个链表 \n");//完成
printf(" (1)增加一个同学信息 \n");//完成
printf(" (2)删除一个同学信息 \n");//完成
printf(" (3)修改一个学生信息 \n");//完成
printf(" (4)计算学生的三科平均分并且给予等级 \n");//完成
printf(" (5)显示所有学生的信息 \n");//完成
printf(" (6) 设置系统背景 \n");//完成
printf(" (7) 查找一个同学的信息 \n");//完成
printf(" (8) 统计男生的人数\n");
printf(" (9) 局部显示所有学生的信息\n");
//	printf(" (10) 删除所有的学生成绩并重新录入\n");
printf(" 请选择1-9\n");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("请选择颜色\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("请输入要查找的学生学号");
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("输入错误\n");
_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 ======================\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:
print1(p);
_sleep(5000);
break;
case 2:
print2(p);
_sleep(5000);
break;
case 3:
print3(p);
_sleep(5000);
break;
default:
printf("输入错误\n");
break;
}return 0;}//二级菜单 
void print1(struct student *head)
{
struct student *p;
p=head;
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;
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;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;//定义指针printf("输入想要修改的学生的学号:\n");
scanf("%ld",&i);
//printf("%ld",p->num);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;
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);}
int search(struct student *head,long int i)//通过学号来查找学生的信息
{
struct student *p;
p=head;
while(p->next!=NULL)//遍历链表结点
{
if(i==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;
}printf("无该生信息\n");
return 0;}
struct student *del(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针
{
int i,j;
struct student *p1,*p2;//定义两个结构体指针
p1=head;//
p2=head;//p2指针依然指向head
printf("删除第几个节点的数据\n");
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("当前正在删除一个结点数据\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 *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指针依然指向headdo
{p1=p1->next;}while(p1==NULL);
p1=(struct student *)malloc(LG);//开辟内存空间,
/*printf("请先输入学号\n");
printf(" ");
("%ld",&p1->num);
if(p1->num!=0)
{
printf(" 请输入您的姓名\n");
printf(" ");
scanf("%s",&p1->name);
printf(" 你好,%s!",p1->name);
printf("请输入您的性别male or female\n");printf(" ");
scanf("%s",&p1->sex); 
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");} 
//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退出录入)\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;//系统学生数自增1
printf("-----------------------------------------------------------------------------------------------------------------\n");
}
}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("\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;
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 *add2(struct student *head)
{
int i;//存放选择参数 
struct student *p1,*p2;
p1=(struct student *)malloc(LG);
p1=head; 
scanf("%d".&i);//输入要插入的地点
{
printf("请先输入学号(输入0退出录入)\n");
printf(" ");
p1->xuhao=m;
m++;
scanf("%ld",&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);
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=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下测试可以运行*/

  

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽象工厂设计模式解释

抽象工厂设计模式是工厂设计模式的另一种形式。 这种模式可以被视为“超级工厂”或“工厂工厂”。 抽象工厂设计模式&#xff08;属于“四人帮”的一部分&#xff09;属于“创新设计模式”类别&#xff0c;它提供了一种封装一组具有公共链接的工厂的方法&#xff0c;而无需突出…

app账号退不出去_最新!多交的税可以退,同学,你今天退税了吗?

4.3 号 更新。1、有知友留言&#xff0c;已经收到退税了。2、部分地区陆续开放申报了&#xff0c;建议大家不要着急。3、大家耐心一点&#xff0c;该是你的就是你的&#xff0c;退税这个事多退少补&#xff0c;建议大家在白天上班时间去APP上看看&#xff0c;毕竟相关公务人员也…

课时77.序选择器(掌握)

CSS3中新增的选择器最具代表性的就是序选择器。 1.同级别的第几个 1. :first-child 选中同级别中的第一个标签 注意点&#xff1a;不区分类型 但是我们这里有一个注意点&#xff0c;如果我们在第一个p之前加一个h1&#xff0c;则第一个p就不变红了&#xff0c;因为我们…

Gulp——文件压缩和文件指纹

先看下文件指纹添加成功发布后的“成果”。 首先介绍下gulp的文件压缩&#xff08;压缩css和js&#xff09; &#xff08;下面介绍的代码移步这里&#xff09; 我的文件目录如下&#xff1a; &#xff08;标红部分是生成的处理后的文件&#xff09; 如何使用gulp&#xff0c;请…

Java 7:使用NIO.2进行文件过滤-第2部分

大家好。 这是使用NIO.2系列进行文件过滤的第2部分。 对于那些尚未阅读第1部分的人 &#xff0c;这里有个回顾。 NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API&#xff0c;您可以执行与java.io相同的操作&#xff0c;以及许多出色的功能&#xff0c;例如&a…

课时76.兄弟选择器(掌握)

我们先来明确一点&#xff0c;什么是兄弟&#xff1f; 比如&#xff0c;head和body是兄弟&#xff0c;必须是同级关系&#xff0c;如果是嵌套关系&#xff0c;儿子&#xff0c;孙子则不可以。 1.相邻兄弟选择器 CSS2 作用&#xff1a;给指定选择器后面紧跟的那个选择器选中的…

24v开关电源维修技巧_康佳LED液晶彩电KPS+L1900C301电源板原理与维修

康佳液晶彩电采用的KPSL1900C3-01型电源板&#xff0c;编号为34007728&#xff0c;版本号为35015686集成电路采用FAN7530FSGM300FSFR1700组合方案&#xff0c;输出5.1VSB/4A、24V/4A、12V/4A电压。应用于康佳LED47IS988PD、LED42M11PD、LED46MS92DC、LED42IS988PDE、LED42X5000…

课时71.后代选择器(掌握)

1.什么是后代选择器&#xff1f; 作用&#xff1a;找到指定标签的所有后代标签&#xff0c;设置属性。 首先你要明确什么是后代&#xff1f; 你的儿子&#xff0c;孙子&#xff0c;重孙子等&#xff0c;只要有你的血脉的&#xff0c;都是你的后代。 我们先来举个例子 我们想…

java小球碰撞界面设计_JavaScript实现小球碰撞特效

JavaScript实现小球碰撞特效。类似自由落体运动。实现原理非常简单&#xff0c;就是动态的改变每个元素的坐标。使用radius属性将图片圆角化。使用left&#xff0c;top属性动态的改变小球的位置。碰撞反弹球&#xff0c;当碰撞到容器的边缘后&#xff0c;进行反弹&#xff0c;反…

es6常用基础合集

es6常用基础合集 在实际开发中&#xff0c;ES6已经非常普及了。掌握ES6的知识变成了一种必须。尽管我们在使用时仍然需要经过babel编译。 ES6彻底改变了前端的编码风格&#xff0c;可以说对于前端的影响非常巨大。值得高兴的是&#xff0c;如果你熟悉ES5&#xff0c;学习ES6并不…

java接口开发_如果你想学好Java,这些你需要了解

01基本知识  在学习Java之前&#xff0c;您需要了解计算机的基本知识&#xff0c;然后再学习Java。同时&#xff0c;您需要熟悉DOS命令、Java概述、JDK环境安装配置、环境变量配置。JDK和环境变量配置完成后&#xff0c;就可以编写Java程序了。02编程格式  此时&#xff0c…

从Java程序生成QR码图像

如果您精通技术和小工具&#xff0c;则必须了解QR码。 这些天&#xff0c;到处都可以找到它-在博客&#xff0c;网站&#xff0c;甚至在某些公共场所。 这在移动应用程序中非常流行&#xff0c;在移动应用程序中&#xff0c;您可以使用QR Code扫描仪应用程序扫描QR Code&#x…

课时67.标签选择器(掌握)

通过上节课的学习我们明白了如何通过十六进制来表示颜色 例如&#xff1a;红色的几种表示方法 我们发现在学习CSS当中的一些属性的时候&#xff0c;它都有一些套路 只要知道属性的名称&#xff0c;属性有什么作用&#xff0c;它有哪些取值&#xff0c;这个属性有什么注意点 …

Java 7:使用NIO.2进行文件过滤-第1部分

NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API&#xff0c;您可以执行与 java.io以及许多出色的功能&#xff0c;例如&#xff1a;访问文件元数据和监视目录更改等。 显然&#xff0c;由于向后兼容&#xff0c;java.io包不会消失&#xff0c;但是我们鼓励为…

课时66.颜色控制属性下(理解)

今天来讲解十六进制控制属性的方法&#xff0c;其实用十六进制表示的方式本质就是rgb&#xff0c;只不过它们的格式不一样而已&#xff0c;十六进制中是通过每两位表示一种颜色的方式来给颜色赋值。 如 #FF0000 FF----r 00----g 00----b 修改前两位相当于修改rgb中的第一…

课时57.HTML被废弃的标签(掌握)

1.为什么HTML中有一部分标签会被废弃&#xff1f; 因为当前HTML中的标签只有一个作用&#xff0c;就是用来添加语义&#xff0c;而早期的HTML标签中有一部分标签是没有语义的 有一部分标签是用来修改样式的 所以这部分标签就被淘汰了 <br><hr><font> <…

课时55.详情和概要标签(理解)

1.什么是详情和概要标签&#xff1f; 作用&#xff1a;利用summary标签来描述概要信息&#xff0c;利用details标签来描述详情信息 默认情况下是折叠展示&#xff0c;想看见详情必须点击 格式&#xff1a; <details> <summary>概要信息</summary> 详情信…

课时53.video标签(掌握)

这节课来学习一下html5中新增的标签&#xff0c;我们先来看一下&#xff0c;html5中新增了哪些标签&#xff1f; 打开W3school的网页&#xff0c;点击参考手册中的HTML/HTML5标签&#xff0c;有一个按字母顺序排列的标签&#xff0c;但凡标签后面带有5标记的&#xff0c;都是h…

Canvas制作的下雨动画

简介 在codepen上看到一个Canvas做的下雨效果动画&#xff0c;感觉蛮有意思的。就研究了下&#xff0c;这里来分享下&#xff0c;实现技巧。效果可以见下面的链接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截图&#xff1a; Canvas动画基础 大家都知道&…

在Eclipse中有效使用JUnit

最近&#xff0c;我被卷入了讨论1和一些受感染的同伴2&#xff0c;他们关于我们如何在Eclipse IDE中使用JUnit 。 令人惊讶的是&#xff0c;对话带来了并非所有人都知道的一些“技巧”。 这使我有了写这篇文章的想法&#xff0c;总结了我们的演讲。 谁知道–也许有人也有新事物…