请按照案例写一个会员信息管理系统

请写一个代码管理会员信息,会员余位为2。录入会员信息并可选择功能查询。(注:malloc,calloc,realloc,free等函数希望可以用上;用户输入数字1~7,即转入相应的功能)具体案例如下:

img

img

img

img

img


时间紧急,付费请教!

代码如下,完全按照案例编写。
如有帮助,望采纳!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct _member {
    char first_name[20];
    char last_name[20];
    int number;
    int joined;
    int fee[5];
} Member;

typedef struct _node {
    Member member;
    struct _node *next;
} Node;

Node *create_head()
{
    Node *head = (Node *)malloc(sizeof(Node));
    if(head == NULL) {
        return NULL;
    }
    head->next = NULL;
    return head;
}

void free_head(Node *head)
{
    if(head == NULL) {
        return;
    }
    Node *p = head;
    Node *q = p;
    while(p) {
        q = p->next;
        free(p);
        p = q;
    }
}

void add(Node *head)
{
    if(head == NULL) {
        return;
    }
    int n = 0;
    Node *node = (Node *)malloc(sizeof(Node));
    node->next = NULL;
    printf("Give the first and last name > ");
    scanf("%s %s", node->member.first_name, node->member.last_name);
    printf("Give member number > ");
    scanf("%d", &node->member.number);
    printf("Give year joined > ");
    scanf("%d", &node->member.joined);
    printf("Give fee for year 2017 > ");
    scanf("%d", &node->member.fee[0]);
    printf("Give fee for year 2018 > ");
    scanf("%d", &node->member.fee[1]);
    printf("Give fee for year 2019 > ");
    scanf("%d", &node->member.fee[2]);
    printf("Give fee for year 2020 > ");
    scanf("%d", &node->member.fee[3]);
    printf("Give fee for year 2021 > ");
    scanf("%d", &node->member.fee[4]);
    for(int i=0; i<5; i++) {
        if(node->member.fee[i] == 0) {
            n++;
        }
    }
    printf("Free slots %d\n", n);
    Node *p = head;
    while(p) {
        if(p->member.number == node->member.number) {
            printf("\n");
            printf("Add failed, member number is exist!\n");
            printf("\n");
            break;
        }
        if(p->next == NULL) {
            p->next = node;
            break;
        }
        p = p->next;
    }
}

void remove(Node *head)
{
    if(head == NULL) {
        return;
    }
    int number;
    printf("Give member number to remove > ");
    scanf("%d", &number);
    Node *pre = head;
    Node *p = head->next;
    while(p) {
        if(p->member.number == number) {
            pre->next = p->next;
            free(p);
            p = NULL;
            break;
        }
        pre = p;
        p = p->next;
    }
}

void update(Node *head)
{
    if(head == NULL) {
        return;
    }
    int number, select;
    printf("Give member number to update > ");
    scanf("%d", &number);
    Node *p = head->next;
    while(p) {
        if(p->member.number == number) {
            break;
        }
        p = p->next;
    }
    if(p == NULL) {
        return;
    }
    printf("\n");
    printf("1 Change last name\n");
    printf("2 Change member number\n");
    printf("3 Change year joined\n");
    printf("4 Change member fees\n");
    printf("Select > ");
    scanf("%d", &select);
    if(select == 1) {
        printf("Give new last name > ");
        scanf("%s", p->member.last_name);
    }
    else if(select == 2) {
        printf("Give new member number > ");
        scanf("%d", &p->member.number);
    }
    else if(select == 3) {
        printf("Give new year joined > ");
        scanf("%d", &p->member.joined);
    }
    else if(select == 4) {
        printf("Give new fee for year 2017 > ");
        scanf("%d", &p->member.fee[0]);
        printf("Give new fee for year 2018 > ");
        scanf("%d", &p->member.fee[1]);
        printf("Give new fee for year 2019 > ");
        scanf("%d", &p->member.fee[2]);
        printf("Give new fee for year 2020 > ");
        scanf("%d", &p->member.fee[3]);
        printf("Give new fee for year 2021 > ");
        scanf("%d", &p->member.fee[4]);
        int n = 0;
        for(int i=0; i<5; i++) {
            if(p->member.fee[i] == 0) {
                n++;
            }
        }
        printf("Free slots %d\n", n);
    }
}

void print_member(Node *head)
{
    if(head == NULL) {
        return;
    }
    int number;
    printf("Give member number > ");
    scanf("%d", &number);
    printf("\n");
    printf("********************************\n\n");
    Node *p = head->next;
    while(p) {
        if(p->member.number == number) {
            break;
        }
        p = p->next;
    }
    if(p) {
        printf("First name: %s\n", p->member.first_name);
        printf("Last name:  %s\n", p->member.last_name);
        printf("Member num: %d\n", p->member.number);
        printf("Joined:     %d\n", p->member.joined);
        printf("\n");
    }
    else {
        printf("Not found, cannot print data!\n");
        printf("\n");
    }
    printf("********************************\n");
}

void print_register(Node *head)
{
    if(head == NULL) {
        return;
    }
    printf("********************************\n\n");
    Node *p = head->next;
    while(p) {
        printf("First name: %s\n", p->member.first_name);
        printf("Last name:  %s\n", p->member.last_name);
        printf("Member num: %d\n", p->member.number);
        printf("Joined:     %d\n", p->member.joined);
        printf("\n");
        p = p->next;
    }
    printf("********************************\n");
}

void search(Node *head)
{
    if(head == NULL) {
        return;
    }
    int select;
    printf("1 Search first name\n");
    printf("2 Search last name\n");
    printf("3 Search member number\n");
    printf("4 Search year joined\n");
    printf("Select > ");
    scanf("%d", &select);
    printf("\n");
    if(select == 1) {
        char name[20];
        printf("Give first name > ");
        scanf("%s", name);
        Node *p = head->next;
        while(p) {
            if(strcmp(p->member.first_name, name) == 0) {
                printf("\n");
                printf("First name: %s\n", p->member.first_name);
                printf("Last name:  %s\n", p->member.last_name);
                printf("Member num: %d\n", p->member.number);
                printf("Joined:     %d\n", p->member.joined);
                printf("\n");
            }
            p = p->next;
        }
    }
    else if(select == 2) {
        char name[20];
        printf("Give last name > ");
        scanf("%s", name);
        Node *p = head->next;
        while(p) {
            if(strcmp(p->member.last_name, name) == 0) {
                printf("\n");
                printf("First name: %s\n", p->member.first_name);
                printf("Last name:  %s\n", p->member.last_name);
                printf("Member num: %d\n", p->member.number);
                printf("Joined:     %d\n", p->member.joined);
                printf("\n");
            }
            p = p->next;
        }
    }
    else if(select == 3) {
        int number;
        printf("Give member number > ");
        scanf("%d", &number);
        Node *p = head->next;
        while(p) {
            if(p->member.number == number) {
                printf("\n");
                printf("First name: %s\n", p->member.first_name);
                printf("Last name:  %s\n", p->member.last_name);
                printf("Member num: %d\n", p->member.number);
                printf("Joined:     %d\n", p->member.joined);
                printf("\n");
            }
            p = p->next;
        }
    }
    else if(select == 4) {
        int joined;
        printf("Give year joined > ");
        scanf("%d", &joined);
        Node *p = head->next;
        while(p) {
            if(p->member.joined == joined) {
                printf("\n");
                printf("First name: %s\n", p->member.first_name);
                printf("Last name:  %s\n", p->member.last_name);
                printf("Member num: %d\n", p->member.number);
                printf("Joined:     %d\n", p->member.joined);
            }
            printf("\n");
            p = p->next;
        }
    }
}

void menu()
{
    int select, running = 1;
    Node *head = create_head();
    while(running == 1) {
        printf("1 Add new member\n");
        printf("2 Remove a member\n");
        printf("3 Updata member\n");
        printf("4 Print member\n");
        printf("5 Print register\n");
        printf("6 Search\n");
        printf("7 End\n");
        printf("Select > ");
        scanf("%d", &select);
        printf("\n");
        switch (select) {
        case 1:
            add(head);
            break;
        case 2:
            remove(head);
            break;
        case 3:
            update(head);
            break;
        case 4:
            print_member(head);
            break;
        case 5:
            print_register(head);
            break;
        case 6:
            search(head);
            break;
        case 7:
            running = 0;
            break;
        default:
            break;
        }
        printf("\n");
    }
    free_head(head);
}

int main()
{
    menu();

    return 0;
}

可以看看这位博主写的系统:

会员信息管理系统_二十二画小生的博客-CSDN博客 欢迎大佬指点!!亲测可用!#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;string.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;ctype.h&amp;amp;amp;gt;#include&am https://blog.csdn.net/weixin_43343116/article/details/87619464?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167068555316800215010329%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167068555316800215010329&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-87619464-null-null.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v1&utm_term=%E4%BC%9A%E5%91%98%E4%BF%A1%E6%81%AF%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4187

如有帮助,还请采纳!谢谢!

会员管理系统(C语言)
如有帮助,望采纳

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define L 50
#define G 10
char adminname[5]="admin";//管理员账号和密码,也可写入文件中
char adminpassword[10]="123";

typedef struct node{
    int num;
    char name[L];
    char password[L];
    long int money;
    char grade[G];
    struct node *next;
}node;

//全局的。
node *user_head;//用户头指针
node *user_end;//用户尾指针---方便插入
node *userGR;//登录时,指向用户

//文件函数
node* Rcreatelink();
void save();

//登陆函数
int search(char name[L],char password[L]);
int login();
void boundar();

//管理员函数
void looklook();
void increase();
void revise();
void adminmenu();
void admin();

//用户函数
void user();
void usermenu();
//通过金额自动生成会员等级
void zidongsc(node *q);

void zidongsc(node *q)
{
    char grade[6][50]={"普通","白银","黄金","铂金","钻石","黑金"};
    int num;
    num=q->money/1000;
    if(num<=3)
        strcpy(q->grade,grade[0]);
    else if(num<=6)
        strcpy(q->grade,grade[1]);
    else if(num<=9)
        strcpy(q->grade,grade[2]);
    else if(num<=12)
        strcpy(q->grade,grade[3]);
    else if(num<=15)
        strcpy(q->grade,grade[4]);
    else
        strcpy(q->grade,grade[5]);
}

node* Rcreatelink()
{
    int num,money;
    char name[L],password[L],grade[G];
    node *head =(node*)malloc(sizeof(node));
    node *p;
    FILE *fp = fopen("user.txt","W+");//不存在user.txt则自动创建user.txt文件    
    p = head;
    //p=user_head;
    if(fp==NULL)
    {
        printf("打开文件失败!");        
    }
    else
    {
        while(fscanf(fp,"%d %s %s %d %s",&num,name,password,&money,grade)!=EOF)//读出  EOF就是文件结尾
        {
           node *q = (node*)malloc(sizeof(node));
           q->num = num;
           strcpy(q->name,name);
           strcpy(q->password,password);
           q->money=money;
           strcpy(q->grade,grade);
           p->next=q;
           p=q;
        }
        p->next=NULL;
        user_end = p; 
    }
    fclose(fp);
    return head;
}

void save()
{
    node* temp = user_head->next;
    FILE* fp = fopen("user.txt", "w");
    //setbuf(fp,NULL);
    while (temp)
    {
        fprintf(fp,"%d %s %s %d %s ",temp->num,temp->name,temp->password,temp->money,temp->grade);
        //fflush(fp);
        temp = temp->next;
    }
    fclose(fp);
}

int sreach(char name[],char password[])//通过文件查找是否存在该用户
{
    node *p;
    p=user_head->next;
    if((strcmp(name,adminname)==0)&&(strcmp(password,adminpassword)==0))
        return 1;
    while(p)//
    {
        
        if(strcmp(name,p->name)==0&&strcmp(password,p->password)==0)
        {
            userGR = p;
            return 2;
        }
        p=p->next;
    }
    return 0;
}

int login()
{
    int flag;
    char a[L],c[L];
    printf("\t\t\t-----------------------\n");
    printf("\t\t\t+---- 登 陆 页 面 ----+\n");
    printf("\t\t\t-----------------------\n");
    printf("\t\t\t+会员名 ");
    scanf("%s",&a);
    printf("\t\t\t+密码   ");
    scanf("%s",&c);
    printf("\t\t\t-----------------------\n");
    flag = sreach(a,c);
    return flag;
}

void boundar()
{
    int FL;
    FL=login();
    while(FL==0)
    {
        system("cls");
        printf("\t\t\t用户名或密码错误!\n");
        printf("\t\t\t请重新输入!\n");
        FL=login();
    }
    
    if(FL==1)
    {
        printf("\t\t\t登陆成功!\n");
        system("cls");
        admin();//管理员
    
    }
    else if(FL==2)
    {
        printf("\t\t\t登陆成功!\n");
        system("cls");
        user();//用户
    }
}

void looklook()
{
    int a,num;
    node *p;
    p = user_head->next;
    printf("看全部会员信息(1),查看某特定会员(2)\n");
    scanf("%d",&a);
    if(a==1)
    {
        printf("********************************************************\n");
        printf("| 编号 |会 员 名|   密 码   |消费金额| 会员等级 |\n");
        while(p!=NULL)
        {
            printf("|%4d  |%-8s| %-10s| %6d |   %s   |\n",p->num,p->name,p->password,p->money,p->grade);
            p=p->next;
        }
        if(p==NULL)
        {
            printf("\t\t\t无会员信息!\n");
            printf("\t\t\t请前往录入(添加)会员信息\n");
        }
    }
    else
    {
        printf("查看会员编号:");
        scanf("%d",&num);
        while(p)
        {
            if(p->num==num)
            {
                printf("********************************************************\n");
                printf("| 编号 |会 员 名|   密 码   |消费金额| 会员等级 |\n");
                printf("|%4d  |%-8s| %-10s| %6d |   %s   |\n",p->num,p->name,p->password,p->money,p->grade);
            }
            p=p->next;
        }
    }
}
void increase()
{
    int i,n;
    int num,money;
    char name[L],password[L];
    node *p = user_end  ;
    printf("想要添加几人信息:");
    scanf("%d",&n);
    printf("********************************************************\n");
    printf("编号 会员名   密码   消费金额(根据金额生成会员等级)\n");
    for(i=0;i<n;i++)
    {
        node *r = (node *)malloc(sizeof(node));
        scanf("%d %s %s %d",&num,name,password,&money);
        r->num=num;
        strcpy(r->name,name);
        strcpy(r->password,password);
        r->money=money;
        zidongsc(r);
        p->next = r;
        r->next=NULL;
        p=r;
    }
    p->next=NULL;
    user_end = p;
    save();
}
void revise()
{
    int c,d,e=-1;
    int money;
    char name[L],password[L];
    node *p,*q;
    p=user_head;
    q=p->next;
    printf("\t\t\t1.修改  2.删除\n");
    printf("\t\t\t请输入想要进行操作:");
    scanf("%d",&c);
    if(c==1)
    {
        printf("\t\t\t请输入修改会员编号:");
        scanf("%d",&d);
        while(q)
        {
            if(q->num==d)
            {
                while(e!=0)
                {
                    system("cls");
                    printf("\t\t\t请输入要修改信息:\n");
                    printf("1.会员名\n");
                    printf("2.会员密码\n");
                    printf("3.消费金额\n");
                    printf("0.退出\n");
                    scanf("%d",&e);
                    switch(e)
                    {
                    case 1:
                        printf("修改前会员名:%s\n",q->name);
                        printf("想要修改会员名:");
                        scanf("%s",name);
                        strcpy(q->name,name);
                        printf("\n修改成功");
                        break;
                    case 2:
                        printf("修改前会员密码:%s\n",q->password);
                        printf("想要修改密码:");
                        scanf("%s",password);
                        strcpy(q->password,password);
                        printf("\n修改成功");
                        break;
                    case 3:
                        printf("修改前消费金额:%d\n",q->money);
                        printf("想要修改金额:");
                        scanf("%d",&money);
                        q->money=money;
                        printf("\n修改成功!\n");
                        zidongsc(q);
                        break;
                        //会员等级就不需要修改了,通过函数自动生成。
                    case 0:
                        break;
                    }
                    
                }
            }
            q=q->next;    
        }
    }
    else
    {
        system("cls");
        printf("请输入想要删除的编号:");
        scanf("%d",&d);
        while(p)
        {
            if(q->num==d)
            {
                p->next=q->next;
                printf("删除成功!\n");
            }
            q=q->next;
            p=p->next;
        }
        save();
    }
}
void adminmenu()
{
    int a=-1;
    while(a!=0)
    {
        printf("\t\t\t 您具有以下功能:\n");
        printf("\t\t\t*1.查看会员信息\n");
        printf("\t\t\t*2.添加会员信息\n");
        printf("\t\t\t*3.修改会员信息\n");
        printf("\t\t\t*0.退出\n");
        printf("\t\t\t*");
        scanf("%d",&a);
        switch(a)
        {
        case 1:
            system("cls");
            looklook();
            break;
        case 2:
            system("cls");
            increase();
            save();
            break;
        case 3:
            system("cls");
            revise();
            save();
            break;
        case 0:
            break;
        }
    }
}
void admin()
{
    printf("\t\t\t欢迎您,管理员\n");
    adminmenu();
}

void usermenu()
{
    int a;
    char password[L]={0};
    printf("您拥有查看个人信息和修改密码的权限!\n");
    printf("您的个人信息如下\n:");
    printf("---------------------------------------------------\n");
    printf("| 编号 |会 员 名|   密 码   |消费金额| 会员等级 |\n");
    printf("|%4d  |%-8s| %-10s| %6d |   %s   |\n",userGR->num,userGR->name,userGR->password,userGR->money,userGR->grade);
    printf("如果想要修改密码请输入(1)");
    scanf("%d",&a);
    if(a==1)
    {
        printf("您的原始密码为:%s",userGR->password);
        printf("请输入修改的密码:");
        scanf("%s",password);
        strcpy(userGR->password,password);
        printf("修改成功!\n");
    }
    save();
}

void user()
{
    printf("欢迎您,%s会员\n",userGR->grade);
    usermenu();
    printf("再见!");
}

main()
{    
    node *head=Rcreatelink();
    user_head = NULL;
    user_head = head;
    boundar();
    printf("感谢您的使用!");
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632