目录
题面
2037. 个人信息管理系统
描述
小张是同学会的负责人,但是复杂的联系信息让他很头痛,请你帮他写一个个人信箱的管理系统(人数小于30人),每个人包含3项信息:
姓名 (小于20个字符) 性别(Female = 女, Male = 男) 生日(年月日)
每个人用一个结构体表示,同时支持以下操作:
add Tim Male 1993 12 22
添加一个名为Tim的男生,出生年月日位1993-12-22
name Tim
返回姓名为Tim的人的所有信息
sex Male
返回所有男生的信息(sex Female返回女生信息)
quit
退出系统
输入
用户指令
输出
输出结果
输入样例 1
add Tim Male 1993 12 22 add Britney Female 1992 2 23 add Freddy Male 1989 4 22 name Britney sex Male quit
输出样例 1
Britney Female 1992-2-23 Tim Male 1993-12-22 Freddy Male 1989-4-22
思路
按题意模拟
重点
主要考察对结构体的掌握,涉及知识点也比较多,导致实践起来麻烦。
但整体并不难。
代码
#include <ctype.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define sd struct data // 方便定义结构体变量
char command[10]; // 定义命令语句
struct data { // 创建数据结构体
char *name;
char *sex;
char *birth;
};
sd db[100]; // database
int num = 0; // db数据数量
// 添加函数
void add() {
char *name;
char *sex;
char *birth;
name = (char *)malloc(100 * sizeof(char));
sex = (char *)malloc(100 * sizeof(char));
birth = (char *)malloc(100 * sizeof(char));
scanf("%s%s", name, sex);
getchar();
fgets(birth, 1000, stdin);
for (int i = 0; i < 2; i++) {
birth[strcspn(birth, " ")] = '-'; // 将输入形式转换成database中保存的形式
}
birth[strcspn(birth, "\n")] = 0; // 去除末尾换行符(fgets会读取换行符)
db[num].name = name;
db[num].sex = sex;
db[num].birth = birth;
num++;
}
// 输出函数
void print(sd a) { printf("%s %s %s\n", a.name, a.sex, a.birth); }
// 检索函数
void search() {
if (!strcmp(command, "name")) { // 以name检索
char temp[100];
scanf("%s", temp);
for (int i = 0; i < num; i++) {
if (!strcmp(temp, db[i].name)) {
print(db[i]);
}
}
} else if (!strcmp(command, "sex")) { // 以sex检索
char temp[100];
scanf("%s", temp);
for (int i = 0; i < num; i++) {
if (!strcmp(temp, db[i].sex)) {
print(db[i]);
}
}
}
}
int solve() {
if (!strcmp(command, "add")) {
add();
return 0;
} else if (!strcmp(command, "quit")) {
return 1;
} else {
search();
return 0;
}
return 0;
}
int main() {
while (1) { // 一直循环直到输入quit
scanf("%s", command);
if (solve()) { // 输入quit,solve出1,结束循环
break;
}
}
return 0;
}
标签:char,name,ZJGSU,db,birth,sex,2037,工商大学,Male
From: https://blog.csdn.net/Kyrie_xiang/article/details/144517889