通讯录管理系统
有大佬能帮我设计一个通讯录管理系统么,内容:九大模块((主函数main(),菜单函数Menu(),退出选单函数Quit(),创建数据函数Create(),增减数据函数Add(),查找函数Find(),修改函数Alter(),删除函数Delete(),显示所有记录函数List())加上四个辅助功能函数(初始化链表函数InitList(),保存函数save(),获取链表长度函数GetLength(),统计性别函数Statis_sex())。主要内容:首先定义结构体,定义主函数,定义链表初始化函数,用主函数调用链表初始化函数构建链表 head,接下来的所有操作基于链表head,调用Create()函数以将文件里面的数据写出并赋给链表,链表里面每个结点的属性为定义的结构体类型,然后调用Menu()函数以显示欢迎界面和菜单。当然可以帮你设计一个通讯录管理系统!下面是一个简单的实现:
# 定义联系人结构体
class Contact:
def __init__(self, name, phone, email, gender):
self.name = name
self.phone = phone
self.email = email
self.gender = gender
# 初始化链表
def InitList():
return []
# 创建联系人
def Create():
name = input("请输入姓名:")
phone = input("请输入电话:")
email = input("请输入邮箱:")
gender = input("请输入性别:")
return Contact(name, phone, email, gender)
# 添加联系人
def Add(contact_list):
contact = Create()
contact_list.append(contact)
print("添加成功!")
# 查找联系人
def Find(contact_list):
name = input("请输入要查找的联系人姓名:")
for contact in contact_list:
if contact.name == name:
print("姓名:", contact.name)
print("电话:", contact.phone)
print("邮箱:", contact.email)
print("性别:", contact.gender)
return
print("未找到该联系人!")
# 修改联系人
def Alter(contact_list):
name = input("请输入要修改的联系人姓名:")
for contact in contact_list:
if contact.name == name:
contact.phone = input("请输入新电话:")
contact.email = input("请输入新邮箱:")
contact.gender = input("请输入新性别:")
print("修改成功!")
return
print("未找到该联系人!")
# 删除联系人
def Delete(contact_list):
name = input("请输入要删除的联系人姓名:")
for contact in contact_list:
if contact.name == name:
contact_list.remove(contact)
print("删除成功!")
return
print("未找到该联系人!")
# 显示所有记录
def List(contact_list):
for contact in contact_list:
print("姓名:", contact.name)
print("电话:", contact.phone)
print("邮箱:", contact.email)
print("性别:", contact.gender)
print()
# 统计性别
def Statis_sex(contact_list):
male_count = 0
female_count = 0
for contact in contact_list:
if contact.gender == "男":
male_count += 1
elif contact.gender == "女":
female_count += 1
print("男性人数:", male_count)
print("女性人数:", female_count)
# 保存数据到文件
def Save(contact_list):
with open("contact.txt", "w") as f:
for contact in contact_list:
f.write(contact.name + "," + contact.phone + "," + contact.email + "," + contact.gender + "\n")
# 获取链表长度
def GetLength(contact_list):
return len(contact_list)
# 菜单函数
def Menu():
print("-----------------------")
print("通讯录管理系统")
print("1. 添加联系人")
print("2. 查找联系人")
print("3. 修改联系人")
print("4. 删除联系人")
print("5. 显示所有记录")
print("6. 统计性别")
print("7. 保存")
print("8. 退出")
print("-----------------------")
# 主函数
def main():
contact_list = InitList()
while True:
Menu()
choice = input("请输入您的选择:")
if choice == '1':
Add(contact_list)
elif choice == '2':
Find(contact_list)
elif choice == '3':
Alter(contact_list)
elif choice == '4':
Delete(contact_list)
elif choice == '5':
List(contact_list)
elif choice == '6':
Statis_sex(contact_list)
elif choice == '7':
Save(contact_list)
elif choice == '8':
break
else:
print("无效的选项,请重新输入!")
main()
这只是一个简单的通讯录管理系统,你可以根据需求进行扩展、添加更多功能,比如按照姓名排序、按照电话号码查询等等。希望能对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 需要一个能在vs6.0环境中正常运行的通讯录管理系统
offmyface 发表于 2023-12-18 14:47
需要一个能在vs6.0环境中正常运行的通讯录管理系统
当然可以!下面是能在VS 6.0环境中正常运行的一个通讯录管理系统的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_PHONE_LENGTH 20
#define MAX_EMAIL_LENGTH 50
#define MAX_CONTACTS 100
typedef struct Contact {
char name;
char phone;
char email;
char gender;
} Contact;
void Menu();
void Create(Contact contacts[], int *count);
void Add(Contact contacts[], int *count);
void Find(Contact contacts[], int count);
void Alter(Contact contacts[], int count);
void Delete(Contact contacts[], int *count);
void List(Contact contacts[], int count);
void Statis_sex(Contact contacts[], int count);
void Save(Contact contacts[], int count);
void Load(Contact contacts[], int *count);
int main() {
Contact contacts;
int count = 0;
Load(contacts, &count);
Menu();
int choice;
do {
printf("\n请输入您的选择:");
scanf("%d", &choice);
switch(choice) {
case 1: Create(contacts, &count); break;
case 2: Add(contacts, &count); break;
case 3: Find(contacts, count); break;
case 4: Alter(contacts, count); break;
case 5: Delete(contacts, &count); break;
case 6: List(contacts, count); break;
case 7: Statis_sex(contacts, count); break;
case 8: Save(contacts, count); break;
case 9: break;
default: printf("无效的选项,请重新输入!\n"); break;
}
} while (choice != 9);
return 0;
}
void Menu() {
printf("-----------------------\n");
printf("通讯录管理系统\n");
printf("1. 创建数据\n");
printf("2. 增加数据\n");
printf("3. 查找数据\n");
printf("4. 修改数据\n");
printf("5. 删除数据\n");
printf("6. 显示所有记录\n");
printf("7. 统计性别\n");
printf("8. 保存数据\n");
printf("9. 退出系统\n");
printf("-----------------------\n");
}
void Create(Contact contacts[], int *count) {
if (*count == MAX_CONTACTS) {
printf("通讯录已满,无法创建更多的联系人。\n");
return;
}
printf("请输入姓名:");
scanf("%s", contacts[*count].name);
printf("请输入电话:");
scanf("%s", contacts[*count].phone);
printf("请输入邮箱:");
scanf("%s", contacts[*count].email);
printf("请输入性别(M/F):");
scanf(" %c", &contacts[*count].gender);
(*count)++;
printf("创建成功!\n");
}
void Add(Contact contacts[], int *count) {
if (*count == MAX_CONTACTS) {
printf("通讯录已满,无法添加更多的联系人。\n");
return;
}
printf("请输入姓名:");
scanf("%s", contacts[*count].name);
printf("请输入电话:");
scanf("%s", contacts[*count].phone);
printf("请输入邮箱:");
scanf("%s", contacts[*count].email);
printf("请输入性别(M/F):");
scanf(" %c", &contacts[*count].gender);
(*count)++;
printf("添加成功!\n");
}
void Find(Contact contacts[], int count) {
char name;
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, name) == 0) {
printf("姓名:%s\n", contacts.name);
printf("电话:%s\n", contacts.phone);
printf("邮箱:%s\n", contacts.email);
printf("性别:%c\n", contacts.gender);
found = 1;
break;
}
}
if (!found) {
printf("未找到该联系人!\n");
}
}
void Alter(Contact contacts[], int count) {
char name;
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, name) == 0) {
printf("请输入新电话:");
scanf("%s", contacts.phone);
printf("请输入新邮箱:");
scanf("%s", contacts.email);
printf("请输入新性别(M/F):");
scanf(" %c", &contacts.gender);
printf("修改成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到该联系人!\n");
}
}
void Delete(Contact contacts[], int *count) {
char name;
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < *count; i++) {
if (strcmp(contacts.name, name) == 0) {
for (int j = i; j < *count - 1; j++) {
strcpy(contacts.name, contacts.name);
strcpy(contacts.phone, contacts.phone);
strcpy(contacts.email, contacts.email);
contacts.gender = contacts.gender;
}
(*count)--;
printf("删除成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到该联系人!\n");
}
}
void List(Contact contacts[], int count) {
for (int i = 0; i < count; i++) {
printf("姓名:%s\n", contacts.name);
printf("电话:%s\n", contacts.phone);
printf("邮箱:%s\n", contacts.email);
printf("性别:%c\n\n", contacts.gender);
}
}
void Statis_sex(Contact contacts[], int count) {
int male_count = 0;
int female_count = 0;
for (int i = 0; i < count; i++) {
if (contacts.gender == 'M' || contacts.gender == 'm') {
male_count++;
} else if (contacts.gender == 'F' || contacts.gender == 'f') {
female_count++;
}
}
printf("男性人数:%d\n", male_count);
printf("女性人数:%d\n", female_count);
}
void Save(Contact contacts[], int count) {
FILE *file = fopen("contact.txt", "w");
if (file == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < count; i++) {
fprintf(file, "%s %s %s %c\n", contacts.name, contacts.phone, contacts.email, contacts.gender);
}
fclose(file);
printf("保存成功!\n");
}
void Load(Contact contacts[], int *count) {
FILE *file = fopen("contact.txt", "r");
if (file == NULL) {
printf("无法打开文件!\n");
return;
}
while (!feof(file) && (*count) < MAX_CONTACTS) {
fscanf(file, "%s %s %s %c\n", contacts[*count].name, contacts[*count].phone, contacts[*count].email, &contacts[*count].gender);
(*count)++;
}
fclose(file);
printf("加载成功!\n");
}
请注意,由于VS 6.0是一个很旧的IDE,部分代码可能会有兼容性问题,可能需要进行适当的调整。另外,此代码没有添加输入验证和错误处理,请根据需要自行添加。
希望能对你有所帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]