鱼C论坛

 找回密码
 立即注册
查看: 446|回复: 3

[已解决]通讯录管理系统

[复制链接]
发表于 2023-12-18 14:42:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有大佬能帮我设计一个通讯录管理系统么,内容:九大模块((主函数main(),菜单函数Menu(),退出选单函数Quit(),创建数据函数Create(),增减数据函数Add(),查找函数Find(),修改函数Alter(),删除函数Delete(),显示所有记录函数List())加上四个辅助功能函数(初始化链表函数InitList(),保存函数save(),获取链表长度函数GetLength(),统计性别函数Statis_sex())。主要内容:首先定义结构体,定义主函数,定义链表初始化函数,用主函数调用链表初始化函数构建链表 head,接下来的所有操作基于链表head,调用Create()函数以将文件里面的数据写出并赋给链表,链表里面每个结点的属性为定义的结构体类型,然后调用Menu()函数以显示欢迎界面和菜单。
最佳答案
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 100typedef struct Contact {    char name[MAX_NAME_LENGTH];    char phone[MAX_PHONE_LENGTH];    char email[MAX_EMAIL_LENGTH];    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[MAX_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[MAX_NAME_LENGTH];    printf("请输入要查找的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            printf("姓名:%s\n", contacts[i].name);            printf("电话:%s\n", contacts[i].phone);            printf("邮箱:%s\n", contacts[i].email);            printf("性别:%c\n", contacts[i].gender);                        found = 1;            break;        }    }        if (!found) {        printf("未找到该联系人!\n");    }}void Alter(Contact contacts[], int count) {    char name[MAX_NAME_LENGTH];    printf("请输入要修改的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            printf("请输入新电话:");            scanf("%s", contacts[i].phone);            printf("请输入新邮箱:");            scanf("%s", contacts[i].email);            printf("请输入新性别(M/F):");            scanf(" %c", &contacts[i].gender);                        printf("修改成功!\n");            found = 1;            break;        }    }        if (!found) {        printf("未找到该联系人!\n");    }}void Delete(Contact contacts[], int *count) {    char name[MAX_NAME_LENGTH];    printf("请输入要删除的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < *count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            for (int j = i; j < *count - 1; j++) {                strcpy(contacts[j].name, contacts[j + 1].name);                strcpy(contacts[j].phone, contacts[j + 1].phone);                strcpy(contacts[j].email, contacts[j + 1].email);                contacts[j].gender = contacts[j + 1].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[i].name);        printf("电话:%s\n", contacts[i].phone);        printf("邮箱:%s\n", contacts[i].email);        printf("性别:%c\n\n", contacts[i].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[i].gender == 'M' || contacts[i].gender == 'm') {            male_count++;        } else if (contacts[i].gender == 'F' || contacts[i].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[i].name, contacts[i].phone, contacts[i].email, contacts[i].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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-18 14:47:49 | 显示全部楼层
需要一个能在vs6.0环境中正常运行的通讯录管理系统
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 100typedef struct Contact {    char name[MAX_NAME_LENGTH];    char phone[MAX_PHONE_LENGTH];    char email[MAX_EMAIL_LENGTH];    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[MAX_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[MAX_NAME_LENGTH];    printf("请输入要查找的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            printf("姓名:%s\n", contacts[i].name);            printf("电话:%s\n", contacts[i].phone);            printf("邮箱:%s\n", contacts[i].email);            printf("性别:%c\n", contacts[i].gender);                        found = 1;            break;        }    }        if (!found) {        printf("未找到该联系人!\n");    }}void Alter(Contact contacts[], int count) {    char name[MAX_NAME_LENGTH];    printf("请输入要修改的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            printf("请输入新电话:");            scanf("%s", contacts[i].phone);            printf("请输入新邮箱:");            scanf("%s", contacts[i].email);            printf("请输入新性别(M/F):");            scanf(" %c", &contacts[i].gender);                        printf("修改成功!\n");            found = 1;            break;        }    }        if (!found) {        printf("未找到该联系人!\n");    }}void Delete(Contact contacts[], int *count) {    char name[MAX_NAME_LENGTH];    printf("请输入要删除的联系人姓名:");    scanf("%s", name);        int found = 0;    for (int i = 0; i < *count; i++) {        if (strcmp(contacts[i].name, name) == 0) {            for (int j = i; j < *count - 1; j++) {                strcpy(contacts[j].name, contacts[j + 1].name);                strcpy(contacts[j].phone, contacts[j + 1].phone);                strcpy(contacts[j].email, contacts[j + 1].email);                contacts[j].gender = contacts[j + 1].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[i].name);        printf("电话:%s\n", contacts[i].phone);        printf("邮箱:%s\n", contacts[i].email);        printf("性别:%c\n\n", contacts[i].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[i].gender == 'M' || contacts[i].gender == 'm') {            male_count++;        } else if (contacts[i].gender == 'F' || contacts[i].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[i].name, contacts[i].phone, contacts[i].email, contacts[i].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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表