完成简单学生管理系统

1> 定义班级类型(存储学生的数组、班级现有人数)、定义学生类型(学号、姓名、分数)

2> 定义一个班级,完成初始化

3> 完成学生信息的添加

4> 定义函数完成输出所有学生信息

5> 定义函数完成输出最高成绩学生的信息

6> 定义函数完成按成绩排序功能

7> 定义函数完成,要求用户输入一个名字,查找是否是该班级的学生,如果是输出“该学生在该班级”,如果不是输出“查 找失败”

头文件:

#ifndef __H1_H__
#define __H1_H__#define MAX 20typedef struct
{int num;char name[20];int score;
}stu;typedef struct
{stu s[MAX];int len;
}class;class *create();void add(class* c);void output(class* s);// 最值
void max(class* s);//排序
void sort(class* s);//查找
void serch(class* c, char mz[]);#endif

源文件:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "h1.h"// 创建
class* create()
{class* s = (class* )malloc(sizeof(class));if(NULL == s){printf("创建失败\n");s = NULL;}s->len =0;printf("创建成功\n");return s;
}// 添加
void add(class *c) // 添加 学生结构体 函数
{stu k;printf("请输入学生学号:\n");scanf("%d",&k.num);printf("请输入学生姓名:\n");scanf("%s",k.name);printf("请输入学生分数:\n");scanf("%d",&k.score);if(NULL==c || c->len >= MAX){printf("添加失败\n");return;}c->s[c->len] = k;c->len ++;printf("添加成功!\n");
}// 输出
void output(class *c)
{printf("学生信息如下:\n");printf("学号\t姓名\t成绩\n");for(int i = 0; i < c->len; i++){printf("%d\t%s\t%d\n",c->s[i].num,c->s[i].name,c->s[i].score);}
}// 最值
void max(class* c)
{printf("学生成绩最高者信息如下:\n");printf("学号\t姓名\t成绩\n");stu max = c->s[0];for(int i = 0; i < c->len; i++){if(max.score < c->s[i].score){max.score = c->s[i].score;max.num = c->s[i].num;strcpy(max.name, c->s[i].name);}}printf("%d\t%s\t%d\n",max.num,max.name,max.score);
}// 排序
void sort(class* c)
{for(int i=1; i<c->len; i++){for(int j=0; j<c->len-i; j++){if(c->s[j].score<c->s[j+1].score){stu t= c->s[j];c->s[j] = c->s[j+1];c->s[j+1] = t;}}}
printf("排序后的信息:\n");
output(c);
}//查找
void serch(class* c, char mz[])
{int count = 0;for(int i=0; i<c->len; i++){if(strcmp(c->s[i].name,mz) == 0){count++;}}if(count){printf("该学生在该班级\n");}else{printf("查找失败\n");}
}

主函数测试:

#include <stdio.h>
#include "h1.h"int main(int argc, const char *argv[])
{class *s = create();// 添加add(s);add(s);add(s);// 输出output(s);//最值max(s);// 排序sort(s);serch(s, "ss");free(s);s=NULL;return 0;
}

测试结果:

ubuntu@ubuntu:1$ ./a.out
创建成功
请输入学生学号:
1
请输入学生姓名:
a
请输入学生分数:
88
添加成功!
请输入学生学号:
2
请输入学生姓名:
ss
请输入学生分数:
66
添加成功!
请输入学生学号:
3
请输入学生姓名:
v
请输入学生分数:
77
添加成功!
学生信息如下:
学号  姓名  成绩
1   a   88
2   ss  66
3   v   77
学生成绩最高者信息如下:
学号  姓名  成绩
1   a   88
排序后的信息:
学生信息如下:
学号  姓名  成绩
1   a   88
3   v   77
2   ss  66
该学生在该班级

2022081班李亚楠20220913相关推荐

  1. 2022081班李亚楠20220905

    1.使用指针实现 strcpy.strcat 函数的功能 #include <stdio.h>int main(int argc, const char *argv[]) {/***使用指 ...

  2. 2022081班李亚楠20220914

    //选择排序(作业) void list_select_sort(seqlist *S);//按位置查找,输出数据(作业) void list_search_pos(seqlist *S, int p ...

  3. 2022081班李亚楠20220920

    1.中序遍历:ADEFGHMZ       后序遍历:AEFDHZMG 2.前序遍历: GDAFEMHZ       中序遍历: ADEFGHMZ 1.前序遍历: GDAFEMHZ 2.后序遍历:AE ...

  4. 2022081班李亚楠20220926

    1.通过命令行传参给shell脚本文件传入两个字符串,把数值分别赋值给两个变量,实现两个变量的数值交换,然后输出两个变量的数值. #!/bin/bash #交换两个变量的值#从外部传参给变量 var1 ...

  5. 2022081班李亚楠20220901

    1.通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩 #include <stdio.h>int main(int argc, const ...

  6. 2022081班李亚楠20220902

    1.从终端中输入一串字符,求出空格的个数: ab_cd_e_\n --->遇到\n表示输入结束         ---->数组中存储ab_cd_e ----->求出空格个数 #inc ...

  7. 2022081班李亚楠20220829

    1.从终端输入一个字符:如果是大写的 转换成小写,如果是小写的 转换成大写,如果是 0-9   按照 %d  输出对应整型的  0-9,其他字符 转换成 #并输出. #include <stdi ...

  8. 2022081班李亚楠20220927

    1.复习今日内容 2.在终端输入一个文件名,判断文件是否为空,如果不为空,判断文件是否是普通文件,如果是普通文件,就判断是否具有写权限,没有写权限,就加上写权限,并在文件最后追加一行"hel ...

  9. 2022081班李亚楠20220915

    //尾删 (作业) int list_delete_tail(LinkList L); //尾删 (作业) int list_delete_tail(LinkList L) {if(NULL==L | ...

最新文章

  1. 赠书 | 2021年中国数字政府发展指数排名出炉!你的家乡名列第几?
  2. Linux内存映射mmap原理分析
  3. python的相对路径导入问题
  4. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
  5. Visual Studio Code 玩MS SQL
  6. Hadoop ecosystem
  7. 02 unix文件系统和命令
  8. 六级词汇打卡第一天(一)
  9. 兰州网络教育计算机基础考试,2017年兰州事业单位公共基础备考:计算机基础知识...
  10. HTML页面跳转及传递参数
  11. 统计学习方法详解之第十三章 无监督学习概论
  12. css文字抖动解决办法
  13. H5分享页面(1)——web端二次分享配置内容
  14. Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
  15. 2022 CSP-J1 CSP-S1 第1轮 初赛 攻略 总结 心得体会 注意事项 游记
  16. GO TO SHEN ZHEN
  17. 当代最值得收藏的画家作品_名人名画推荐,值得收藏的当代画家作品
  18. 五、Zabbix — 监控报警那点事儿
  19. y4m格式和yuv、bmp格式互转
  20. JAVA从入门到入土(引入篇)

热门文章

  1. V 2 heartbeat V2(HA)
  2. 软件架构中的架构模式和最佳实践:探索和实践
  3. neovim中并行运行宏的快捷操作与lua脚本实现
  4. ACP考试关键词(一)
  5. arch安装软件出错
  6. Linux下游戏大作赏析
  7. 织梦批量添加TAG标签自动匹配标题添加TAG标签(支持发布过文章)
  8. 华大HC32-(02)-系统时钟和基本定时器
  9. UI组件库Kendo UI for Vue中文入门指南(四)
  10. Floyd 弗洛伊德算法的实现