offmyface 发表于 2023-12-18 14:42:59

通讯录管理系统

有大佬能帮我设计一个通讯录管理系统么,内容:九大模块((主函数main(),菜单函数Menu(),退出选单函数Quit(),创建数据函数Create(),增减数据函数Add(),查找函数Find(),修改函数Alter(),删除函数Delete(),显示所有记录函数List())加上四个辅助功能函数(初始化链表函数InitList(),保存函数save(),获取链表长度函数GetLength(),统计性别函数Statis_sex())。主要内容:首先定义结构体,定义主函数,定义链表初始化函数,用主函数调用链表初始化函数构建链表 head,接下来的所有操作基于链表head,调用Create()函数以将文件里面的数据写出并赋给链表,链表里面每个结点的属性为定义的结构体类型,然后调用Menu()函数以显示欢迎界面和菜单。

FishC 发表于 2023-12-18 14:43:27

当然可以帮你设计一个通讯录管理系统!下面是一个简单的实现:

# 定义联系人结构体
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 小助理,如未能正确解答您的问题,请继续追问。

offmyface 发表于 2023-12-18 14:47:49

需要一个能在vs6.0环境中正常运行的通讯录管理系统

FishC 发表于 2023-12-18 14:48:44

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]
查看完整版本: 通讯录管理系统