c信息管理系統

#include
#include<malloc.h>
#include<string.h>
#include<windows.h>
#define len sizeof(List)


typedef struct Node
{
    char number[13];
    char name[20];
    char sex[6];
    char age[4];
    char id[19];
    char address[50];
    struct Node *next;
}List;


List *head;


void Insert(List *temp)
{
    List *p;
    p = head;
    while(p->next != NULL)
    {
        p = p->next;
        if(strcmp(p->number, temp->number) == 0)
        {
            printf("錄入失敗!\n");
            printf("鏈表中已存在這個編號,請重新輸入!\n");
            Sleep(1000);
            return;
        }
    }
    p->next = temp;
    temp->next = NULL;


}


void Add()
{
    List *p = (List *)malloc(len);
    printf("請輸入成員的編號:");
    scanf("%s", p->number);
    printf("請輸入成員的姓名:");
    scanf("%s", p->name);
    printf("請輸入成員的性別:");
    scanf("%s", p->sex);
    printf("請輸入成員的年齡:");
    scanf("%s", p->age);
    printf("請輸入成員的身份證號:");
    scanf("%s", p->id);
    printf("請輸入成員的住址:");
    scanf("%s", p->address);
    Insert(p);
}


void Delete()
{
    List *p, *q;
    p = head;
    int num = 0;
    char name[20];
    char number[13];
    int select1, select2, select3;
    printf("==================================\n");
    printf("1.按編號刪除          2.按名字刪除\n");
    printf("==================================\n");
path_D:
    printf("請選擇你要執行的方案(1~2):");
    scanf("%d", &select1);
    switch(select1)
    {
        case 1:
    path_D1:
            q = p->next;
            printf("請輸入你要刪除的成員編號:");
            scanf("%s", number);
            while(q != NULL)
            {
                if(strcmp(q->number, number) == 0)
                {
                    free(q);
                    p->next = q->next;
                    printf("該結點已經成功刪除...\n");
                    num++;
                }
                q = q->next;
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select2);
                switch(select2)
                {
                    case 1:goto path_D1;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        case 2:
            printf("這個方案暫時存在不明問題,請選擇第一個方案...\n");
            Sleep(1000);
            goto path_D;
/*
    path_D2:
            q = p->next;
            printf("請輸入你要刪除的成員姓名:");
            scanf("%s", name);
            while(q != NULL)
            {
                if(strcmp(q->name, name) == 0)
                {
                    free(q);
                    p->next = q->next;
                    printf("該結點已經成功刪除...\n");
                    num++;
                }
                q = q->next;
            }
            else
            {
                printf("鏈表爲空,請先添加信息...\n");
                Sleep(1000);
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select3);
                switch(select3)
                {
                    case 1:goto path_D2;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        default:printf("沒得這個方案,重新選...\n");goto path_D;
*/
    }
}


void Modify()
{
    List *p, *q;
    p = head;
    int num = 0;
    char name[20];
    char number[13];
    int select1, select2, select3;
    printf("==================================\n");
    printf("1.按編號修改          2.按名字修改\n");
    printf("==================================\n");
path_M:
    printf("請選擇你要執行的方案(1~2):");
    scanf("%d", &select1);
    switch(select1)
    {
        case 1:
    path_M1:
            q = p->next;
            printf("請輸入你要修改的成員編號:");
            scanf("%s", number);
            while(q != NULL)
            {
                if(strcmp(q->number, number) == 0)
                {
                    printf("請輸入修改後成員的編號:");
                    scanf("%s", q->number);
                    printf("請輸入修改後成員的姓名:");
                    scanf("%s", q->name);
                    printf("請輸入修改後成員的性別:");
                    scanf("%s", q->sex);
                    printf("請輸入修改後成員的年齡:");
                    scanf("%s", q->age);
                    printf("請輸入修改後成員的身份證號:");
                    scanf("%s", q->id);
                    printf("請輸入修改後成員的住址:");
                    scanf("%s", q->address);
                    printf("該結點已經成功修改...\n");
                    num++;
                }
                q = q->next;
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select2);
                switch(select2)
                {
                    case 1:goto path_M1;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        case 2:
    path_M2:
            q = p->next;
            printf("請輸入你要修改的成員姓名:");
            scanf("%s", name);
            while(q != NULL)
            {
                if(strcmp(q->name, name) == 0)
                {
                    printf("請輸入修改後成員的編號:");
                    scanf("%s", q->number);
                    printf("請輸入修改後成員的姓名:");
                    scanf("%s", q->name);
                    printf("請輸入修改後成員的性別:");
                    scanf("%s", q->sex);
                    printf("請輸入修改後成員的年齡:");
                    scanf("%s", q->age);
                    printf("請輸入修改後成員的身份證號:");
                    scanf("%s", q->id);
                    printf("請輸入修改後成員的住址:");
                    scanf("%s", q->address);
                    printf("該結點已經成功修改...\n");
                    num++;
                }
                q = q->next;
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select3);
                switch(select3)
                {
                    case 1:goto path_M2;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        default:printf("沒得這個方案,重新選...\n");goto path_M;
    }
}


void Search()
{
    List *p, *q;
    p = head;
    int num = 0;
    char name[20];
    char number[13];
    int select1, select2, select3;
    printf("==================================\n");
    printf("1.按編號查找          2.按名字查找\n");
    printf("==================================\n");
path_S:
    printf("請選擇你要執行的方案(1~2):");
    scanf("%d", &select1);
    switch(select1)
    {
        case 1:
    path_S1:
            q = p->next;
            printf("請輸入你要查找的成員編號:");
            scanf("%s", number);
            while(q != NULL)
            {
                if(strcmp(q->number, number) == 0)
                {
                    printf("\n編號\t\t姓名\t性別\t年齡\t身份證號\t\t家庭住址\n\n");
                    printf("%-12s\t%-5s\t%-3s\t", q->number, q->name, q->sex);
                    printf("%-2s\t%-20s\t%-s\n", q->age, q->id, q->address);
                    num++;
                }
                q = q->next;
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select2);
                switch(select2)
                {
                    case 1:goto path_S1;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        case 2:
    path_S2:
            q = p->next;
            printf("請輸入你要查找的成員姓名:");
            scanf("%s", name);
            while(q != NULL)
            {
                if(strcmp(q->name, name) == 0)
                {
                    printf("\n編號\t\t姓名\t性別\t年齡\t身份證號\t\t家庭住址\n\n");
                    printf("%-12s\t%-5s\t%-3s\t", q->number, q->name, q->sex);
                    printf("%-2s\t%-20s\t%-s\n", q->age, q->id, q->address);
                    num++;
                }
                q = q->next;
            }
            if(num == 0)
            {
                printf("沒得這個結點,想好了再來...\n");
                Sleep(1000);
                printf("1.繼續   2.回到主界面\n");
                printf("選擇你要執行的功能:");
                scanf("%d", &select3);
                switch(select3)
                {
                    case 1:goto path_S2;
                    case 2:printf("請稍候...");return;
                    default:printf("選擇有誤,系統將回到主界面...\n");Sleep(500);return;
                }
            }
            break;
        default:printf("沒得這個方案,重新選...\n");goto path_S;
    }
}


void Count()
{
    List *temp;
    temp = head;
    int num = 0;
    while(temp->next != NULL)
    {
        num++;
        temp = temp->next;
    }
    printf("本條鏈表中共有%d個記錄!", num);
}


void Show()
{
    float second;
    List *p;
    p = head->next;
    printf("你需要暫停幾秒來瀏覽:  ");
    scanf("%f", &second);
    printf("\n編號\t\t姓名\t性別\t年齡\t身份證號\t\t家庭住址\n\n");
    while(p != NULL)
    {
        printf("%-12s\t%-5s\t%-3s\t", p->number, p->name, p->sex);
        printf("%-2s\t%-20s\t%-s\n", p->age, p->id, p->address);
        p = p->next;
    }
    Sleep(second*1000);
}


void Exit()
{
    int i;
    char str[36] = "試用期結束啦,大爺下次記得帶錢來喲~";
    printf("\n");
    for(i = 0; i <= 35; i++)
    {
        printf("%c", str[i]);
        Sleep(150);
    }
    printf("\n");
    exit(0);
}


void Save()
{
    FILE *fp;
    List *p;
    p = head->next;
    char *path;
    fp = fopen("F:\\ifmt.txt", "w+");
    if(fp == NULL)
    {
        printf("文件創建失敗,請重試...\n");
        exit(0);
    }
    fprintf(fp, "編號\t\t姓名\t性別\t年齡\t身份證號\t\t家庭住址\n\n");
    while(p != NULL)
    {
        fprintf(fp, "%-12s\t%-5s\t%-3s\t", p->number, p->name, p->sex);
        fprintf(fp, "%-2s\t%-20s\t%-s\n", p->age, p->id, p->address);
        p = p->next;
    }
    printf("信息存儲成功...\n");
    printf("存儲位置在F:\\ifmt.txt");
    Sleep(500);
    fclose(fp);
}


void StartMenu()
{
    printf("\n\n\n\n\n\n");
    printf("\t\t\t==================================\n\n");
    printf("\t\t\t     Welcome To My Own System     \n\n");
    printf("\t\t\t==================================\n\n");
    printf("\t\t\t           製作人:小明           \n\n");
    printf("\t\t\t        工作室:德園七棟201       \n\n");
    printf("\t\t\t==================================\n\n");
}


void ShowMenu()
{
    printf("\n==================================\n");
    printf("      0.安全退出    7.信息存盤    \n");
    printf("==================================\n");
    printf("1.成員添加  2.成員刪除  3.成員修改\n");
    printf("4.成員查詢  5.成員統計  6.成員輸出\n");
    printf("==================================\n");
}


void SelectMenu()
{
    int select;
path_SM:
    ShowMenu();
    printf("請選擇你要執行的功能(0~6):");
    scanf("%d", &select);
    switch(select)
    {
        case 1:
            Add();
            system("cls");
            goto path_SM;
        case 2:
            Delete();
            Sleep(1000);
            system("cls");
            goto path_SM;
        case 3:
            Modify();
            Sleep(1000);
            system("cls");
            goto path_SM;
        case 4:
            Search();
            Sleep(1000);
            system("cls");
            goto path_SM;
        case 5:
            Count();
            Sleep(1000);
            system("cls");
            goto path_SM;
        case 6:
            Show();
            Sleep(1000);
            system("cls");
            goto path_SM;
        case 0:
            Exit();
            break;
        case 7:
            Save();
            Sleep(1000);
            system("cls");
            goto path_SM;
        default:
            printf("沒得你選的這個功能,重新選...");
            Sleep(1000);
            system("cls");
            goto path_SM;
    }
}


void main()
{
    head = (List *)malloc(len);
    head->next = NULL;
    StartMenu();
    Sleep(2000);
    system("cls");
    SelectMenu();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章