设计一个学生通信录,学生通迅录的数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。 1.主要功能: (1) 能建立、修改和增删学生通讯录 (2) 能够按多种方式进行查询 2.要求:界面友好,易于操作。
时间: 2024-05-14 10:11:46 浏览: 67
非常好的问题,我可以帮你设计一个学生通信录系统。首先,需要定义一个结构体类型,包括姓名、家庭地址、邮政编码、电话号码等信息。
```
struct student {
char name[50];
char address[100];
char postalCode[10];
char phoneNumber[20];
};
```
接下来,我们可以实现主要功能,即建立、修改和增删学生通讯录,并按多种方式进行查询。
```
//添加学生信息
int addStudent(struct student s, struct student students[], int count) {
students[count] = s;
return count + 1;
}
//修改学生信息
void editStudent(struct student students[], int count) {
char name[50];
printf("请输入要修改信息的学生姓名:");
getchar();
fgets(name, sizeof(name), stdin);
for (int i = 0; i < count; i++) {
if (strcmp(name, students[i].name) == 0) {
printf("请输入新的地址:");
fgets(students[i].address, sizeof(students[i].address), stdin);
printf("请输入新的邮政编码:");
fgets(students[i].postalCode, sizeof(students[i].postalCode), stdin);
printf("请输入新的电话号码:");
fgets(students[i].phoneNumber, sizeof(students[i].phoneNumber), stdin);
printf("修改成功!\n");
return;
}
}
printf("没有找到该学生信息!\n");
}
//删除学生信息
int deleteStudent(struct student students[], int count) {
char name[50];
printf("请输入要删除信息的学生姓名:");
getchar();
fgets(name, sizeof(name), stdin);
for (int i = 0; i < count; i++) {
if (strcmp(name, students[i].name) == 0) {
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
printf("删除成功!\n");
return count - 1;
}
}
printf("没有找到该学生信息!\n");
return count;
}
//查询学生信息
void queryStudent(struct student students[], int count) {
char name[50];
printf("请输入要查询信息的学生姓名:");
getchar();
fgets(name, sizeof(name), stdin);
for (int i = 0; i < count; i++) {
if (strcmp(name, students[i].name) == 0) {
printf("姓名:%s", students[i].name);
printf("地址:%s", students[i].address);
printf("邮政编码:%s", students[i].postalCode);
printf("电话号码:%s", students[i].phoneNumber);
return;
}
}
printf("没有找到该学生信息!\n");
}
//按姓名升序排序
void sortByName(struct student students[], int count) {
struct student temp;
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (strcmp(students[i].name, students[j].name) > 0) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("排序成功!\n");
}
//按邮政编码升序排序
void sortByPostalCode(struct student students[], int count) {
struct student temp;
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (strcmp(students[i].postalCode, students[j].postalCode) > 0) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("排序成功!\n");
}
```
最后,我们需要实现一个用户界面,用于调用这些功能。界面友好,易于操作。
```
int main() {
int count = 0;
struct student students[100];
while (1) {
printf("-----------------------学生通信录-----------------------\n");
printf("1、添加学生信息\n");
printf("2、修改学生信息\n");
printf("3、删除学生信息\n");
printf("4、查询学生信息\n");
printf("5、按姓名升序排序\n");
printf("6、按邮政编码升序排序\n");
printf("7、退出学生通信录\n");
printf("请输入操作编号:");
int op;
scanf("%d", &op);
switch (op) {
case 1: {
struct student s;
getchar();
printf("请输入姓名:");
fgets(s.name, sizeof(s.name), stdin);
printf("请输入地址:");
fgets(s.address, sizeof(s.address), stdin);
printf("请输入邮政编码:");
fgets(s.postalCode, sizeof(s.postalCode), stdin);
printf("请输入电话号码:");
fgets(s.phoneNumber, sizeof(s.phoneNumber), stdin);
count = addStudent(s, students, count);
printf("添加成功!\n");
break;
}
case 2: {
editStudent(students, count);
break;
}
case 3: {
count = deleteStudent(students, count);
break;
}
case 4: {
queryStudent(students, count);
break;
}
case 5: {
sortByName(students, count);
break;
}
case 6: {
sortByPostalCode(students, count);
break;
}
case 7: {
printf("谢谢使用学生通信录,再见!\n");
return 0;
}
default: {
printf("输入不合法,请重新输入!\n");
break;
}
}
}
return 0;
}
```
这样,一个学生通信录系统就设计出来了,你觉得怎样呢?
阅读全文