C/C++单链表实现简易队员信息管理系统:添加、删除、查找、修改
C/C++单链表实现简易队员信息管理系统:添加、删除、查找、修改
本系统使用C/C++语言实现单链表,提供添加、删除、查找、修改队员信息的功能,并采用分文件编程方式,提高代码可读性和可维护性。
队员信息
每位队员的信息包括:
- 编号
- 姓名
- 年龄
- 电话号码
基本任务
- 添加队员
- 删除队员
- 按照姓名(要处理重名问题)查找队员
- 修改队员信息
- 显示所有联系人信息
代码要求
-
建项目 分文件编写(三个)
test.c //测试程序…… TeamMembers.c //放功能函数的实现…… TeamMembers.h //放头文件、函数声明…… -
变量、函数名命名规范(驼峰命名法)
-
要有基本的功能选择界面内容
代码示例
TeamMembers.h
#ifndef TEAM_MEMBERS_H
#define TEAM_MEMBERS_H
typedef struct {
int id;
char name[20];
int age;
char phone[15];
} Member;
void addMember(Member *members, int *count);
void deleteMember(Member *members, int *count);
void searchMember(Member *members, int count);
void modifyMember(Member *members, int count);
void displayMembers(Member *members, int count);
#endif
TeamMembers.c
#include <stdio.h>
#include <string.h>
#include "TeamMembers.h"
void addMember(Member *members, int *count) {
printf("Enter the member's information:\n");
printf("ID: ");
scanf("%d", &members[*count].id);
printf("Name: ");
scanf("%s", members[*count].name);
printf("Age: ");
scanf("%d", &members[*count].age);
printf("Phone: ");
scanf("%s", members[*count].phone);
(*count)++;
printf("Member added successfully!\n");
}
void deleteMember(Member *members, int *count) {
int id, i, pos = -1;
printf("Enter the ID of the member you want to delete: ");
scanf("%d", &id);
for (i = 0; i < *count; i++) {
if (members[i].id == id) {
pos = i;
break;
}
}
if (pos == -1) {
printf("Member not found.\n");
} else {
for (i = pos; i < (*count) - 1; i++) {
members[i] = members[i + 1];
}
(*count)--;
printf("Member deleted successfully!\n");
}
}
void searchMember(Member *members, int count) {
char name[20];
int i, found = 0;
printf("Enter the name of the member you want to search: ");
scanf("%s", name);
printf("Members with the name 's':\n", name);
for (i = 0; i < count; i++) {
if (strcmp(members[i].name, name) == 0) {
printf("ID: %d\n", members[i].id);
printf("Name: %s\n", members[i].name);
printf("Age: %d\n", members[i].age);
printf("Phone: %s\n", members[i].phone);
found = 1;
}
}
if (!found) {
printf("No members found.\n");
}
}
void modifyMember(Member *members, int count) {
int id, i;
printf("Enter the ID of the member you want to modify: ");
scanf("%d", &id);
for (i = 0; i < count; i++) {
if (members[i].id == id) {
printf("Enter the new information of the member:\n");
printf("Name: ");
scanf("%s", members[i].name);
printf("Age: ");
scanf("%d", &members[i].age);
printf("Phone: ");
scanf("%s", members[i].phone);
printf("Member modified successfully!\n");
return;
}
}
printf("Member not found.\n");
}
void displayMembers(Member *members, int count) {
int i;
printf("All members:\n");
for (i = 0; i < count; i++) {
printf("ID: %d\n", members[i].id);
printf("Name: %s\n", members[i].name);
printf("Age: %d\n", members[i].age);
printf("Phone: %s\n", members[i].phone);
printf("\n");
}
}
test.c
#include <stdio.h>
#include "TeamMembers.h"
#define MAX_MEMBERS 100
int main() {
Member members[MAX_MEMBERS];
int count = 0;
int choice;
do {
printf("=============== Team Member Management ===============
");
printf("1. Add Member\n");
printf("2. Delete Member\n");
printf("3. Search Member\n");
printf("4. Modify Member\n");
printf("5. Display Members\n");
printf("0. Exit\n");
printf("======================================================\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addMember(members, &count);
break;
case 2:
deleteMember(members, &count);
break;
case 3:
searchMember(members, count);
break;
case 4:
modifyMember(members, count);
break;
case 5:
displayMembers(members, count);
break;
case 0:
printf("Exiting...\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 0);
return 0;
}
说明
在此示例中,我们使用了一个Member结构体来表示每个队员的信息,包括编号、姓名、年龄和电话号码。TeamMembers.h中定义了各个功能函数的声明,TeamMembers.c中实现了这些功能函数,test.c中包含了一个简单的用户界面,通过输入选择执行不同的功能。可以根据需要添加更多的功能函数或进行其他修改。
注意:
- 本示例代码使用的是数组,为了实现单链表,需要修改代码,使用指针和动态内存分配。
- 该示例代码仅作为参考,具体的实现方式可以根据实际需求进行调整。
总结
本项目使用C/C++语言实现了一个简易的队员信息管理系统,并提供了添加、删除、查找、修改等基本功能。代码采用分文件编程方式,提高代码的可读性和可维护性。开发者可以根据实际需求对代码进行扩展和修改。
原文地址: https://www.cveoy.top/t/topic/iFK 著作权归作者所有。请勿转载和采集!