结构体作业

结构体作业

 
 
 
1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日
2.
建立结构体数组,实现对多个同学的信息输入,输出

3.
实现简单的统计功能,比如统计做题数大于150的同学并输出其完整信息

4.
实现查找功能,包括按姓名、学号查找

5.
实现信息修改功能

6.
按做题数目进行排序(选作)

7.
其他功能可以自由扩展,多多益善 ^_^

8.
程序一个函数实现一个功能

9.
代码测试成功后贴在论坛上,大家互相学习借鉴
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int input();//实现学生信息的输入
int output();//实现学生信息的输出
int find();//实现学生信息的查找
int correct();//实现学生信息的修改
int sort();//实现学生成绩的排序并输出做题数超过150的学生的具体信息
int d = 0;//用于统计学生的人数,便于输出学生的信息
int find_num();//用于学号查找
int find_name();//用于姓名查找
struct date
{
 int year;
 int month;
 int day;
};
struct acmer
{
 char name[20];
 char number[20];
 char sex[2];
 char phonenumber[11];
 int sloved;
 struct date birthday;
}stu[100];
struct acmer *p=stu;
main()
{
 int n;
 printf("请按键选择功能:\n");
 printf("1、输入同学们的信息\t\t\t\t\t2、输出同学们的信息\n");
 printf("3、查找某同学的信息\t\t\t\t\t4、修改某同学的信息\n");
 printf("5、统计做出150道题的同学并输出其具体信息\t\t6、清屏\n");
 scanf("%d",&n);
 switch(n)
 {
  case 1: input();break;
  case 2: output();break;
  case 3: find();break;
  case 4: correct();break;
  case 5: sort();break;
  case 6: system("cls");return main();
 }
 return 0;
}
int input()
{
 *p = stu[0];
 printf("请输入学生的学号:");
 scanf("%s",p->number);
 printf("请输入学生的姓名:");
 scanf("%s",p->name);
 printf("请输入学生的性别(男/女):");
 scanf("%s",p->sex);
 printf("请输入学生的做题数:");
 scanf("%d",&p->sloved);
 printf("请输出学生的出生日期(年月日):");
 scanf("%d %d %d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
 printf("请输入学生的手机号:");
 scanf("%s",p->phonenumber);
 printf("是否需要继续输入(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: d++;p++;return input();
 case 0: d++;return main();
 }
}
int output()
{
 
 printf("学生 学号\t姓      名\t性别\t做题数\t出生年月日\t手  机  号\n");
 printf("----------\t----------\t--\t----\t---- -- --\t-----------\n");
 for(int i = 0;i<d;i++)
 {
  printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].sloved,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].phonenumber);
 }
 printf("是否需要返回主菜单(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: printf("\n");return main();
 case 0: break;
 }
}
int find()
{
 printf("请按需要查找\n1、学号\t\t\t2、姓名");
 int n;
 scanf("%d",&n);
 switch(n)
 {
 case 1:find_num();
 case 2:find_name();
 }
 return 0;
} 
int find_num()//用于学号查找
{
 int f;
 char str[20];
 printf("请输入学生学号:");
 scanf("%s",&str);
 for(int i =0;i<d;i++)
 {
  if(strcmp(stu[i].number,str)==0) {*p=stu[i];f = 0;
  printf("学生 学号\t姓      名\t性别\t做题数\t出生年月日\t手  机  号\n");
  printf("----------\t----------\t--\t----\t---- -- --\t-----------\n");
  printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",p->number,p->name,p->sex,p->sloved,p->birthday.year,p->birthday.month,p->birthday.day,p->phonenumber);break;}
 }
 if(f) printf("查找出错!未找到相关同学信息!");
 printf("是否需要返回主菜单(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: printf("\n");return main();
 case 0: break;
 }
}
int find_name()//用于姓名查找
{
 int f;
 char str[20];
 printf("请输入学生姓名:");
 scanf("%s",&str);
 for(int i =0;i<d;i++)
 {
  if(strcmp(stu[i].name,str)==0) {*p=stu[i];f = 0;
  printf("学生 学号\t姓      名\t性别\t做题数\t出生年月日\t手  机  号\n");
  printf("----------\t----------\t--\t----\t---- -- --\t-----------\n");
  printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",p->number,p->name,p->sex,p->sloved,p->birthday.year,p->birthday.month,p->birthday.day,p->phonenumber);break;}
 }
 if(f) printf("查找出错!");
 printf("是否需要返回主菜单(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: printf("\n");return main();
 case 0: break;
 }
}
int correct()
{
 int f;
 char str[20];
 printf("请输入要修改信息的学生的学号:");
 scanf("%s",&str);
 for(int i =0;i<d;i++)
 {
  if(strcmp(stu[i].number,str)==0) 
  {
   *p=stu[i];f = 0;
   printf("请输入学生的学号:");
   scanf("%s",p->number);
   printf("请输入学生的姓名:");
   scanf("%s",p->name);
   printf("请输入学生的性别(男/女):");
   scanf("%s",p->sex);
   printf("请输入学生的做题数:");
   scanf("%d",&p->sloved);
   printf("请输出学生的出生日期(年月日):");
   scanf("%d %d %d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
   printf("请输入学生的手机号:");
   scanf("%s",p->phonenumber);
   printf("修改成功!");
   break;
  }
 }if(f) printf("未找到相关同学信息!");
 printf("是否需要返回主菜单(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: printf("\n");return main();
 case 0: break;
 }
 
}
int sort()
{
 int f,n,i;
 printf("想要查看超过多少分的人");
 scanf("%d",&n);
 for(i = 0;i<d;i++)
 {
  if(stu[i].sloved>n) 
  {
   f = 0;
   printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].sloved,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].phonenumber);
   
  }
 }
if(f) printf("很可惜哎!没有人做题超过%d",n);
printf("是否需要返回主菜单(1/0):");
 int c;
 scanf("%d",&c);
 switch(c)
 {
 case 1: printf("\n");return main();
 case 0: break;
 }
}

原文地址:https://www.cnblogs.com/haidong/p/2348057.html