C语言小练习 微型学生管理系统
很简陋,没有做输入校验,以写出来为第一目的,中间出了不少问题,尤其是结构体内字符串赋值的时候(理解不透彻),字符串比较用strcmp不能直接==判定,逻辑也很重要,不然会出现莫名其妙的问题。
涉及知识:结构体 数组 字符串
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <ctype.h>
5
6 #define NAME_MAX_LEN 20
7 #define STUDENTS_MAX_NUMBER 100
8
9 typedef struct
10 {
11 int stuId;
12 char name[NAME_MAX_LEN];
13 int score;
14 int flag;
15 int age;
16 } Student;
17
18 int add(Student stu, Student stus[])
19 {
20 for(int i=0; i<STUDENTS_MAX_NUMBER; i++)
21 {
22 if(stus[i].flag == 0)
23 {
24 // stus[i].name = stu.name; 刚开始这么写有问题,stus[i].name时字符串常量不能在=左边
25 strcpy(stus[i].name,stu.name);
26 stus[i].score = stu.score;
27 stus[i].age = stu.age;
28 stus[i].flag = 1; // 当前学生属性设置完毕,改变状态
29 return 0;
30 }
31 }
32 return 1;
33 }
34
35 int update(Student stu, Student stus[])
36 {
37 for(int i=0; i<STUDENTS_MAX_NUMBER; i++)
38 {
39 if(strcmp(stus[i].name,stu.name) == 0) // 之前直接用 == 判断,不报错,运用有bug,找了半天问题
40 {
41 stus[i].score = stu.score;
42 return 0;
43 }
44 }
45 return 1;
46 }
47
48 int search(Student stu, Student stus[])
49 {
50 for(int i=0; i<STUDENTS_MAX_NUMBER; i++)
51 {
52 if(strcmp(stus[i].name,stu.name) ==0 && stus[i].flag == 1)
53 {
54 fprintf(stdout,"学号:%d 姓名:%s 分数:%d 年龄:%d\n",stus[i].stuId,stu.name,stu.score,stu.age);
55 return 0;
56 }
57 }
58 fprintf(stdout,"查无此人!\n");
59 return 1;
60 }
61
62 int delete(Student stu, Student stus[])
63 {
64 for(int i=0; i<STUDENTS_MAX_NUMBER; i++)
65 {
66 if(strcmp(stus[i].name,stu.name) == 0)
67 {
68 stus[i].flag = 0;
69 return 0;
70 }
71 }
72 fprintf(stdout,"该学生不存在!\n");
73 return 1;
74 }
75
76 int showlist(Student stus[])
77 {
78 fprintf(stdout,"**************************\n");
79 fprintf(stdout,"学生名单\n");
80 for(int i=0; i<STUDENTS_MAX_NUMBER; i++)
81 {
82 if(stus[i].flag == 1)
83 {
84 fprintf(stdout,"学号:%d 姓名:%s 分数:%d 年龄:%d\n",stus[i].stuId,stus[i].name,stus[i].score,stus[i].age);
85 }
86 }
87 fprintf(stdout,"**************************\n");
88 return 0;
89 }
90
91 int main(void)
92 {
93 int option;
94 int tag = 1;
95 Student stu;
96 Student stus[STUDENTS_MAX_NUMBER]; // 结构体数组
97
98 for(int i=0; i<STUDENTS_MAX_NUMBER; i++) //所有学生id和状态初始化
99 {
100 stus[i].stuId = i;
101 stus[i].flag = 0;
102 }
103
104 while(tag)
105 {
106 fprintf(stdout,"===========================\n");
107 fprintf(stdout,"欢迎进入学生管理系统\n\n");
108 fprintf(stdout,"1:添加\n\n");
109 fprintf(stdout,"2:修改分数\n\n");
110 fprintf(stdout,"3:学生个人信息查询\n\n");
111 fprintf(stdout,"4:删除\n\n");
112 fprintf(stdout,"5:显示学生名单\n\n");
113 fprintf(stdout,"0:退出系统\n\n");
114 fprintf(stdout,"===========================\n");
115 fprintf(stdout,"请输入选项:");
116
117 //option = getchar();
118 scanf("%d",&option);
119 switch(option)
120 {
121 case 1:
122 fprintf(stdout,"请输入学生姓名:");
123 scanf("%s",stu.name);
124 fprintf(stdout,"请输入学生分数:");
125 scanf("%d",&stu.score);
126 fprintf(stdout,"请输入学生年龄:");
127 scanf("%d",&stu.age);
128 add(stu,stus);
129 break;
130 case 2:
131 fprintf(stdout,"请输入学生姓名:");
132 scanf("%s",stu.name);
133 fprintf(stdout,"请输入新的分数:");
134 scanf("%d",&stu.score);
135 update(stu,stus);
136 break;
137 case 3:
138 fprintf(stdout,"请输入要查询学生姓名:");
139 scanf("%s",stu.name);
140 search(stu,stus);
141 break;
142 case 4:
143 fprintf(stdout,"请输入要删除学生姓名:");
144 scanf("%s",stu.name);
145 delete(stu,stus); // 当前学生标记状态标记为0
146 break;
147 case 5:
148 showlist(stus);
149 break;
150 case 0:
151 tag = 0;
152 break;
153 default:
154 fprintf(stdout,"输入选项有误,请重新输入!\n\n");
155 break;
156 }
157 }
158
159 exit(0);
160 }
C语言小练习 微型学生管理系统的更多相关文章
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念
1 成绩管理系统概述 1.1 管理信息系统的概念 管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...
- #007 C语言大作业学生管理系统第四天
第四天还差恢复已删除学生功能 对于我来说,已经开始很复杂了. 小细节太重要了,边写边出错 1 #include<stdio.h> #include<stdlib.h> #inc ...
- #006 C语言大作业学生管理系统第三天
还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...
- c语言之学生管理系统
0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...
- 学生管理系统(C语言简单实现)
仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2.实训目的及要求 3. 源码 4.实验小结 1 .实训名称 实训12:文件 2. ...
- #004 C语言大作业学生管理系统试着做
链表不会用 文件不会使 在这种情况下就边写边做 希望这个月能做完这个作业 #include<stdio.h> #include<stdlib.h> #include<st ...
- C语言小程序-基于链表的学生信息管理
程序支持增加.查询.删除.存盘和读取操作 一 程序定义和函数声明 头文件studentsys.h定义如下 /* student management system by list */ #ifndef ...
随机推荐
- [对对子队]团队任务拆解Alpha
Alpha阶段主要目标 完成游戏场景的基本实现(不要求美术资源) 完成游戏UI的基本实现(不要求美术资源) 制作第一部分的关卡(顺序语句,制作3-5关) 完成第一部分关卡和游戏基本逻辑的测试 任务分解 ...
- Manjaro / ArchLinux 安装网易云音乐解决搜索不能输入中文方法
0. 安装网易云音乐 yay -S netease-cloud-music 1.先安装qcef这个软件包. sudo yay -S qcef 2.编辑/opt/netease/netease-clou ...
- 21.6.21 test
\(NOI\) 模拟赛 字符串滚出 \(OI\) 看到题目名称,\(T1\) 串,\(T2\) 两个串,\(T3\) K个串,我 \(\cdots\),血压已经上来了. \(T1\) 写了 \(O(n ...
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- vcs命令
转载:VCS_weixin_34256074的博客-CSDN博客 timing check相关的: +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是 ...
- hdu 5018 Revenge of GCD
题意: 给你两个数:X和Y .输出它们的第K大公约数.若不存在输出 -1 数据范围: 1 <= X, Y, K <= 1 000 000 000 000 思路: 它俩的公约数一定是gcd ...
- 当src获取不到图片,onerror可指定一张默认的图片
<img src="img/789.png" onerror="javascript:this.src='img/123.png';" alt=" ...
- zabbix 监控redis 挂掉自动重启 并发送企业微信
1.创建redis监控项[配置]-[主机]-[监控项]-创建监控项,监控6379端口(注意关闭防火墙或者开启防火墙端口6379) redis配置文件设置允许任何地址监听: 添加监控项 2.创建redi ...
- 三(二)、AOP配置
一.AOP的配置(注解) 步骤一.导入jar包: 处理那5个jar包之外,还需要导入: aopalliance aspectjweaver spring-aop spring-aspects 步骤二. ...
- 使用python操作HDF5文件
HDF Hierarchical Data Format,又称HDF5 在深度学习中,通常会使用巨量的数据或图片来训练网络.对于如此大的数据集,如果对于每张图片都单独从硬盘读取.预处理.之后再送入网络 ...