數(shù)據(jù)結(jié)構(gòu)試驗

實驗一:同學(xué)通訊錄管理系統(tǒng)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct list
{
    char number[20];//學(xué)號
    char name[20];//姓名
    char telenum[20];//電話
    struct list *next;
}list;

int menu()//主菜單函數(shù)
{
    int operation;
    printf("\n\n\n\t\t\t   **************學(xué)生通訊錄管理系統(tǒng)**************\n\n");
    printf("\t\t\t\t\t   0.退出管理系統(tǒng)\n");
    printf("\t\t\t\t\t   1.插入通訊記錄\n");
    printf("\t\t\t\t\t   2.刪除通訊記錄\n");
    printf("\t\t\t\t\t   3.查詢通訊記錄\n");
    printf("\t\t\t\t\t   4.顯示通訊錄信息\n");
    printf("\n\t\t\t   **********************************************\n\n");
    printf("請輸入要進行的操作:");
    scanf("%d",&operation);
    printf("\n");
    return operation;
}
list *init(list *p)//創(chuàng)建結(jié)點函數(shù)
{
    list *q;
    q=(list *)malloc(sizeof(list));
    p->next=q;
    p=q;
    p->next=NULL;
    return p;
}
list *scan(list *p)//錄入信息函數(shù)
{
    printf("\t\t\t\t\t請輸入學(xué)號:");
    scanf("%s",&p->number);
    printf("\n");
    printf("\t\t\t\t\t請輸入姓名:");
    scanf("%s",&p->name);
    printf("\n");
    printf("\t\t\t\t\t請輸入電話:");
    scanf("%s",&p->telenum);
    printf("\n");
    return p;
}
void print(list *p)//顯示信息函數(shù)
{
    printf("\t\t\t\t----------------------------------\n");
    printf("\t\t\t\t\t\t學(xué)號:%s\n",p->number);
    printf("\t\t\t\t\t\t姓名:%s\n",p->name);
    printf("\t\t\t\t\t\t電話:%s\n",p->telenum);
    printf("\t\t\t\t----------------------------------\n");
}
list *find(list *head,char *name)//查找函數(shù)
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t\t   該通訊錄為空!\n\n");
    }
    else
    {
        printf("請輸入同學(xué)姓名:");
        scanf("%s",name);
        printf("\n");
        while(p)
        {
            if(strcmp(p->name,name)==0)
                break;
            else
                p=p->next;
        }
        if(p)
        {
            printf("\t\t\t\t  %s同學(xué)的通訊錄為:\n",name);
            print(p);
        }
        else
            printf("\t\t\t\t  通訊錄中沒有該同學(xué)的記錄");
    }
    return p;
}
list *add(list *p)//插入函數(shù)
{
    scan(p);
    p=init(p);
    return p;
}
list *dele(list *head,char *name)//刪除函數(shù)
{
    printf("\t\t\t\t   請輸入要刪除的姓名:");
    scanf("%s",name);
    printf("\n");
    list *p,*q;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t\t   該通訊錄為空!\n");
    }
    else
    {
        while(p)
        {
            if(strcmp(p->name,name)==0)
                break;
            else
            {
                q=p;
                p=p->next;
            }
        }
        if(p)
        {
            if(p==head)
                head=head->next;
            else
                q->next=p->next;
            free(p);
            printf("\t\t\t\t   刪除成功\n");
        }
        else
            printf("\t\t\t\t   刪除失敗\n");

    }
    return head;
}
void display(list *head)
{
    list *p;
    p=head;
    if(!p)
    {
        printf("\t\t\t\t   該通信錄為空\n");
    }
    else
    {
        while(p->next)
        {
            print(p);
            p=p->next;
        }
    }
    printf("\n\n");
}
int main()
{
    list*p,*head;
    p=(list *)malloc(sizeof(list));
    p->next=NULL;
    head=p;
    char name[10];
    int set=1;
    while(set)
    {
        switch(menu()){
        case 0: exit(0);break;
        case 1: p=add(p);break;
        case 2: head=dele(head,name);break;
        case 3: head=find(head,name);break;
        case 4: display(head);break;
        }

    }
    return 0;

}

運行結(jié)果為:

QQ瀏覽器截圖20191127150005.png

實驗二:航空客運訂票系統(tǒng)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct list //航班信息結(jié)構(gòu)體list
{
    char start[20];//出發(fā)點
    char finish[20];//目的地
    char fli_num[20];//航班號
    char week[20];//星期幾
    char name[20];//訂票人姓名
    struct list *next;//指向該結(jié)構(gòu)體的指針
}list;
list *init(list *p)//創(chuàng)建結(jié)點函數(shù)
{
    list *q;
    q=(list *)malloc(sizeof(list));
    p->next=q;
    p=q;
    p->next=NULL;
    return p;
}
list *scan(list *p)//輸入函數(shù)
{
    printf("\t\t請輸入【出發(fā)點】:");
    scanf("%s",p->start);
    printf("\n");
    printf("\t\t請輸入【目的地】:");
    scanf("%s",p->finish);
    printf("\n");
    printf("\t\t請輸入【航班號】:");
    scanf("%s",p->fli_num);
    printf("\n");
    printf("\t\t請輸入【星期】:");
    scanf("%s",p->week);
    printf("\n");
    return p;
}
void print(list *p)//輸出函數(shù)
{
    printf("\t\t\t\t\t----------------------------------\n");
    printf("\t\t\t\t\t\t\t  出發(fā)點:%s\n",p->start);
    printf("\t\t\t\t\t\t\t  目的地:%s\n",p->finish);
    printf("\t\t\t\t\t\t\t  航班號:%s\n",p->fli_num);
    printf("\t\t\t\t\t\t\t  星期:%s\n",p->week);
    if(strlen(p->name)!=0)
        printf("\t\t\t\t\t\t\t  訂票人姓名:%s\n",p->name);
    printf("\t\t\t\t\t---------------------------------\n");
}
list *add_flight(list *p)//插入航班函數(shù)
{
    p=init(p);
    p=scan(p);
    return p;
}
list *dele_flight(list *head,char *fli_num)//刪除航班函數(shù)
{
    list *p,*q;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t航班信息錄為空!\n");
    }
    else
    {
        printf("\t\t\t請輸入需要刪除航班的編號:");
        scanf("%s",p->fli_num);
        printf("\n");
        while(p->next)
        {
            if(strcmp(p->fli_num,fli_num)==0)
                break;
            else
            {
                q=p;
                p=p->next;
            }
        }
    }
    if(p){
        if(p==head)
            head=head->next;
        else 
            q->next=p->next;
        free(p);
        printf("\t\t\t刪除成功!\n");
    }
    else{
        printf("\t\t\t刪除失??!通訊錄中沒有該航班的記錄\n");
    }
    return head;
}
list *find_flight(list *head,char *fli_num)//查找航班函數(shù)
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t   該航班信息錄為空,請?zhí)砑覾n");
    }
    else
    {
        printf("\t\t\t   請輸入航班號:");
        scanf("%s",p->fli_num);
        printf("\n");
        while(p)
        {
            if(strcmp(p->fli_num,fli_num)==0)
                break;
            else 
                p=p->next;
        }
    }
    if(p)
    {
        printf("\t\t\t   該航班具體信息為:\n");
        print(p);
    }
    else
        printf("\t\t\t   沒有航班信息,請?zhí)砑?!\n");
    return head;
}
void display_flight(list *head)//顯示航班函數(shù)
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t   該航班信息錄為空\n");
    }
    else
    {
        while(p->next)
        {
            print(p);
            p=p->next;
        }
    }
}
int second_menu()//航班管理菜單函數(shù)
{
    int operation_two;
    printf("\t\t\t   ---------------航班管理------------------\n");
    printf("\t\t\t\t\t   1.插入航班信息\n");
    printf("\t\t\t\t\t   2.刪除航班信息\n");
    printf("\t\t\t\t\t   3.查找航班信息\n");
    printf("\t\t\t\t\t   4.顯示航班信息\n");
    printf("\t\t\t\t\t   5.返回上一菜單欄\n");
    printf("\t\t\t   -----------------------------------------\n");
    printf("請輸入要選擇的操作:");
    scanf("%d",&operation_two);
    printf("\n");
    return operation_two;
}
int main_menu()//主菜單函數(shù)
{
    int operation_one;
    printf("\n\n\t\t\t   ---------------航空客運訂票系統(tǒng)---------------\n");
    printf("\t\t\t\t\t   1.航班管理菜單\n");
    printf("\t\t\t\t\t   2.訂票辦理菜單\n");
    printf("\t\t\t\t\t   3.退票辦理菜單\n");
    printf("\t\t\t\t\t   4.退出系統(tǒng)\n");
    printf("\t\t\t   ----------------------------------------------\n");
    printf("請輸入要選擇的操作:");
    scanf("%d", &operation_one);
    printf("\n");
    return operation_one;
}
void return_lastmenu()
{
    main_menu();
}
list *order_ticket(list *head,char *name,char *start,char *finish)//訂票辦理函數(shù)
{
    char *a;
    list *p;
    p=head;
    if(!(head->next))
        printf("\t\t\t   航班信息記錄為空,請?zhí)砑覾n");
    else
    {   
        while(p->next)
        {
            if(strcmp(p->start,start)==0&&strcmp(p->finish,finish)==0)
                print(p);
            else
                p=p->next;
        }

    }
    if (p)
    {
        printf("\t\t\t   請選你要訂票的航班號:");
        scanf("%s", a);
        p = find_flight(head, a);
        name = strcat(p->name, name);
        strcpy(p->name, name);
        printf("\t\t\t   訂票成功\n");
    }
        return head;
}
list *refund_ticket(list *head, char *name)//退票辦理函數(shù)
{
    char *b;
    list *p;
    p = head;
    if (!(head->next))
        printf("\t\t\t   航班信息記錄為空,請?zhí)砑覾n");
    else
    {
        while (p)
        {
            if (strcmp(name, p->name) == 0)
                print(p);
            else
                p = p->next;
        }
    }
    name = 0;
    printf("\t\t\t   請輸入你要刪除的航班號:");
    scanf("%s", b);
    p = find_flight(head, b);
    strcpy(p->name, name);
    printf("\t\t\t   刪除成功\n");
    return head;
}
int main()
{
    list *head, *p;
    p = (list *)malloc(sizeof(list));
    p->next = NULL;
    head = p;
    char name[20];
    char start[20];
    char finish[20];
    char fli_num[20];
    int set = 1;
    while (set)
    {
        switch (main_menu())
        {
        case 1: {
            set = 2;
            while (set == 2)
            {
                switch (second_menu())
                {
                case 1:p = add_flight(p); break;
                case 2:head = dele_flight(head, fli_num); break;
                case 3:head = find_flight(head, fli_num); break;
                case 4:display_flight(head); break;
                case 5:set = 1; break;
                }
            }
            break; }
        case 2:head = order_ticket(head, name, start, finish); break;
        case 3:head = refund_ticket(head, name); break;
        case 4:exit(0); break;
        }
    }
    return 0;
}

運行結(jié)果為:

QQ瀏覽器截圖20191205160457.png

可以運行出來但不能實現(xiàn)查找顯示等功能

實驗三:簡易文本編輯器

#include"stdio.h"
#include"malloc.h"
#include"string.h"
#include"stdlib.h"
#include"conio.h"

#define Link_Size 100

int NUM, C, N;           //定義全局變量   NUM用來記錄行號,C用來記錄字串在主串中出現(xiàn)總次數(shù)

typedef struct _list     //行表結(jié)構(gòu)
{
    char data[800];       //記錄字符
    int length;          //記錄長度
    struct _list*next;   //后繼指針
    struct _list*pre;    //前驅(qū)指針
    int row;             //記錄整篇文章行數(shù)
}LinkList;

LinkList *head;          //定義全局變量*head,文章首行頭指針

void HeadWord()     //頭菜單函數(shù)
{
    system("cls");       //清屏函數(shù),使用了頭文件#include"stdlib.h"

    printf("\t\t\t\t\t        ******************\n");
    printf("\t\t\t\t\t***   歡迎使用簡易文本編譯器   ***\n");
    printf("\t\t\t\t\t        ******************\n");
}

LinkList *CreatWord()               //創(chuàng)建文本函數(shù)
{
    LinkList *temp;
    char ch;
    int i, j;                                //用i記錄所在行的字符數(shù)量,j來記錄有多少行
    head->next = (LinkList*)malloc(sizeof(LinkList));
    head->pre = NULL;

    temp = head->next;
    temp->pre = NULL;                  
    temp->length = 0;

    for (i = 0; i < 800; i++)
        temp->data[i] = '\0';
    printf("開始創(chuàng)建文本,請輸入文章(輸入#號結(jié)束):\n");
    for (j = 0; j < Link_Size; j++)
    {
        for (i = 0; i < 800; i++)
        {
            ch = getchar();
            temp->data[i] = ch;
            temp->length++;
            if (ch == '#')
            {
                NUM = j;     //當輸入“#”時候,用j記錄行號,并跳出此時所在的for循環(huán)
                break;
            }
        }
        if (ch == '#')
        {
            temp->length = i;    //當輸入“#”時候,用i記錄該行有多少文字,并跳出創(chuàng)建文本循環(huán)
            temp->next = NULL;
            break;
        }
        temp->next = (LinkList *)malloc(sizeof(LinkList));
        temp->next->pre = temp;                           
        temp = temp->next;
        for (i = 0; i < 800; i++)
            temp->data[i] = '\0';
    }
    temp->row = NUM + 1;        //在循環(huán)中NUM是從0開始,所以行號+1
    system("cls");
    return temp;
}
void PrintWord()   //輸出文本函數(shù)
{
    int i, j;
    LinkList *p;
    p = head->next;
    system("cls");
    HeadWord();
    printf("\n 當前文章的內(nèi)容是:");
    for (j = 0; j <= NUM && p != NULL; j++)           //為什么是j<=NUM而不是<
    {
        for (i = 0; (i < 800) && (p->data[i]) != '#'; i++)
        {
            printf("%c", p->data[i]);
        }
        p = p->next;
    }
}

void CountWord()   //文章內(nèi)容統(tǒng)計模塊
{
    LinkList *temp;                                                      //WORD   代表大寫字母個數(shù)
    char ch;                                                             //word   代表小寫字母個數(shù)
    int i, j, t;                                                         //space  代表空格數(shù)
    int WORD = 0, word = 0, space = 0, num = 0, punct = 0, sum = 0;      //num    代表數(shù)字個數(shù)
    int line=0;                                                          //line   代表文章行數(shù)
    temp = head->next;                                                   //punch  代表標點符號
    for (j = 0; j <= NUM; j++)                                           //sum    代表WORD + word + num
    {
        for (i = 0; (i < 800) && (temp->data[i]) != '#'; i++)
        {
            ch = temp->data[i];
            if ((ch >= 'A') && (ch <= 'Z'))
                WORD++;
            else if ((ch >= 'a') && (ch <= 'z'))
                word++;
            else if ((ch >= '0') && (ch <= '9'))
                num++;
            else if (ch == ' ')
                space++;
            else if (ch == 33 || ch == 34 || ch == 39 || ch == 44 || ch == 46 || ch == 58 || ch == 59 || ch == 63)
            {
                punct++;
            }
            else if (ch == '\n')
                line++;
        }
        sum = WORD + word + num;
    }
    while (1)
    {
        printf("\n");
        HeadWord();
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t   ****  文章內(nèi)容統(tǒng)計菜單  ****\n");
        printf("\t\t\t\t****************************************************\n\n");
        printf("\t\t\t\t\t\t1、文章中大寫字母的個數(shù) \n");
        printf("\t\t\t\t\t\t2、文章中小寫字母的個數(shù) \n");
        printf("\t\t\t\t\t\t3、文章中數(shù)字的個數(shù) \n");
        printf("\t\t\t\t\t\t4、文章中標點符號的個數(shù) \n");
        printf("\t\t\t\t\t\t5、文章中空格的個數(shù) \n");
        printf("\t\t\t\t\t\t6、文章中所有字數(shù) \n");
        printf("\t\t\t\t\t\t7、文章所擁有的行數(shù) \n");
        printf("\t\t\t\t\t\t8、退出返回主菜單 \n");
        printf("\t\t\t\t\t\t9、直接退出本系統(tǒng) \n\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t 請選擇需統(tǒng)計項目:");
        scanf_s("%d", &t);            //scanf后加_s
        switch (t)
        {
        case 1:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中大寫字母的個數(shù):%d\n", WORD);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 2:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中小寫字母的個數(shù):%d\n", word);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 3:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中數(shù)字的個數(shù):%d\n", num);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 4:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中標點符號的個數(shù):%d\n", punct);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 5:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中空格的個數(shù):%d\n", space);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 6:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中所有字數(shù):%d\n", sum);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 7:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中所有行數(shù):%d\n", line);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        }
        if (t == 8)
        {
            system("cls"); break;   //運行后會返回到主菜單
        }
        if (t == 9) exit(0);
    }
}
void SearchWord(char *str1, LinkList* temp)   //指定字符串出現(xiàn)次數(shù)函數(shù)
{
    char Data[20];
    int i=0, j, k = 0, sum = 0;         //i行數(shù),j每行字數(shù),k指定字符串數(shù)組個數(shù),sum指定字符串出現(xiàn)次數(shù)
    int l = 1, x;                        //l指定字符串第幾次出現(xiàn)
    temp = head->next;
    strcpy_s(Data, str1);             //strcpy后加_s,字符串復(fù)制函數(shù),將2復(fù)制到1
    while (temp)
    {
        for (j = 0, x = 0; j < 800; j++, x++)
        {
            if (temp->data[j] == '\n')
            {
                i++;
                x = 0;
            }
            if ((temp->data[j]) == Data[k])
            {
                k++;
                if (Data[k] != '\0')
                {
                    continue;
                }
                else if (Data[k] == '\0')
                {
                    
                    x = x - k+1;
                    sum++;
                    printf("\t\t\t\t  第%3d次出現(xiàn)在第%3d行 第%3d列\(zhòng)n\n", sum, i+1, x);
                    x=x+k-1;
                    k = 0;
                }
            }
        }
        temp = temp->next;
    }
    printf("\t\t\t 字符串總共出現(xiàn)次數(shù)為:%d\n\n", sum);
    C = sum;
    N = i * 800 + j;            //計算出總字數(shù)
}
void DeleteWord(char *str2)           //刪除指定字符串函數(shù)
{
    char Data[20];
    LinkList *temp, *term;
    int i, j, k, m, y, num;
    strcpy_s(Data, str2);        //strcpy后加_s
    for (y = 0; y < C; y++)
    {
        num = 800;
        k = 0, m = 0;
        temp = head;
        for (i = 0; i <= NUM; i++)
        {
            term = temp;
            temp = temp->next;
            for (j = 0; j < 800; j++)
            {
                if ((temp->data[j]) == Data[k]) k++;
                else if (Data[k] != '\0') { j = j - k; k = 0; }
                if (Data[k] == '\0')
                {
                    num = j;
                    break;
                }
            }
            if (num < 800) break;
        }
        for (; i <= NUM; i++)
        {
            for (; j < 800; j++)
            {
                
                    temp->data[j - k + 1] = temp->data[j + 1];
            }
            term = temp;
            temp = temp->next;
            j = 0;
        }
    }
}
LinkList *InsertWord(LinkList *temp)    //插入字符或字符串
{
    char Data1[800], Data2[800];
    int h, l, o;
    int h1 = 0, l1 = 1;
    int i, j;
    printf("\n\t\t 請輸入要插入的字符或字符串:");                     //先輸入要插入的字符串
    getchar();
    gets_s(Data2);                                                     //gets函數(shù)換成了gets_s
    printf("\n\t\t 當前文章內(nèi)容為:");                                 //顯示文章內(nèi)容
    PrintWord();
    printf("\n\t\t 請輸入要插入的行:");                               //插入哪一行
    scanf_s("%d", &h);
    printf("\n\t\t 請輸入要插入的列:");                               //插入哪一列
    scanf_s("%d", &l);
    int n = strlen(Data2);
    while (temp)
    {
        for (i = 0; i < 800; i++)
        {
            if (temp->data[i] == '\n')
            {
                h1++;
            }
            else
                continue;

            if (h1 == h)
            {
                strcpy_s(Data1, temp->data);
                for (j = 0; j < 400; j++)
                    temp->data[i + l + n + j] = Data1[i + l + j];//空出位置
                for (j = 0; j < n; j++)
                    temp->data[i + l + j] = Data2[j];                //進行插入
            }
        }
        temp = temp->next;
    }
    return temp;
}
LinkList * ReplaceWord(LinkList *temp)                 //字符串替換函數(shù)
{
    char Data1;      //用來接收要被替換的字符或字符串
    char Data2;      //用來接收要用哪個字符或字符串代替
    int n1, n2;
    int i;
    printf("\n\t\t 請輸入要被替換的字符或字符串:");
    getchar();
    scanf_s("%c", &Data1);
    printf("\n\t\t 請輸入要用哪個字符或字符串代替:");
    getchar();
    scanf_s("%c", &Data2);
    while (temp)
        {
            for (i = 0; i < 800; i++)
            {
                if (temp->data[i] == Data1)
                    temp->data[i] = Data2;
            }
            temp = temp->next;
        }
    printf("\n");
    return temp;
}
void Bmenu(LinkList *temp)
{
    char str1[20];
    char str2[20];
    int a;
    do
    {
        HeadWord();
        printf("\n\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t    **** 文章內(nèi)容處理菜單 ****\n");
        printf("\t\t\t\t****************************************************\n\n");
        printf("\t\t\t\t\t     1、查找文章中的字符或者字符串 \n");
        printf("\t\t\t\t\t     2、刪除文章中的字符或者字符串 \n");
        printf("\t\t\t\t\t     3、向文章中插入字符或者字符串 \n");
        printf("\t\t\t\t\t     4、替換文章中字符或者字符串 \n");
        printf("\t\t\t\t\t     5、顯示當前文章內(nèi)容 \n");
        printf("\t\t\t\t\t     6、返回主菜單 \n");
        printf("\t\t\t\t\t     7、直接退出系統(tǒng) \n\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t請選擇:");
        scanf_s("%d", &a);
        switch (a)
        {
        case 1:
            system("cls");
            HeadWord();
            printf("\t\t\t 請輸入您需要查找的字符或字符串:");
            getchar();
            gets_s(str1);                                                  //gets函數(shù)換成了gets_s
            printf("\n");
            SearchWord(str1, temp);
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 2:
            system("cls");
            HeadWord();
            printf("\t\t\t\t 請輸入您需要刪除的字符或字符串:");
            getchar();
            gets_s(str2);                                                  //gets函數(shù)換成了gets_s
            SearchWord(str2, temp);
            DeleteWord(str2);
            printf("\t\t\t\t\t 刪除 %3s 后的文章為:\n\n", str2);
            PrintWord();
            printf("\n\n");
            printf(" 按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 3:
            system("cls");
            HeadWord();
            InsertWord(temp);
            printf("\t\t\t 插入字符或字符串后文章為:");
            PrintWord();
            printf("\n 按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 5:
            system("cls");
            HeadWord();
            PrintWord();
            printf("按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 4:
            system("cls");
            HeadWord();
            ReplaceWord(temp);
            printf("\t\t\t\t\t 替換后的文章為:\n\n");
            PrintWord();
            printf("\n\n");
            printf(" 按回車鍵繼續(xù)····· ");
            getchar();
            getchar();
            system("cls");
            break;
        }
        if (a == 6)
        {
            system("cls");
            break;
        }
        if (a == 7) exit(0);
    } while (1);
}
void AboutWord()
{
    printf("\n\t\t\t\t\t\t 關(guān) 于 本 實 驗 \n");
    printf("\t\t\t\t****************************************************\n\n");
    printf("\t\t\t\t\t\t1807004426 阮國璽 \n\n");
    printf("\t\t\t\t\t\t1807004432 王寒奇\n\n");
    printf("\t\t\t\t\t\t1807004425 郝錦陽\n\n");
    printf("\t\t\t\t\t\t1807004444 金胤宏\n\n");
    printf("\t\t\t\t\t      本實驗由這四人制作完成\n\n");
    printf("\t\t\t\t****************************************************\n");
    printf("\n");
}
void save(LinkList *temp)       //文件保存函數(shù)
{
    FILE *fp;
    fp = fopen("F:/a", "w");
    fputs(temp->data, fp);
    fclose(fp);
    printf("以存到F:/a 中成功");
}
void load(LinkList *temp)            //文件讀取函數(shù)
{
    FILE *fp;
    char ch;
    int n;
    fp = fopen("F:/a", "r");
    for (int i = 0; i < 800; i++)
    {
        ch = fgetc(fp);
        temp->data[i] = ch;
        if (ch == '#')
            break;
        putchar(ch);
        
    }
    fclose(fp);
    printf("\n讀盤成功");
}
void menu(LinkList *temp)
{
    int t;
    do {
        HeadWord();
        printf("\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t\t****  主菜單  ****\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\n");
        printf("\t\t\t\t\t\t 1、文章內(nèi)容輸入 \n");
        printf("\t\t\t\t\t\t 2、顯示當前文章內(nèi)容 \n");
        printf("\t\t\t\t\t\t 3、進入文章內(nèi)容統(tǒng)計菜單 \n");
        printf("\t\t\t\t\t\t 4、進入文章內(nèi)容處理菜單 \n");
        printf("\t\t\t\t\t\t 5、進行存盤 \n");
        printf("\t\t\t\t\t\t 6、進行讀盤 \n");
        printf("\t\t\t\t\t\t 7、關(guān)于本實驗\n");
        printf("\t\t\t\t\t\t 8、退出文本編輯器 \n");
        printf("\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t 注:第一次運行本程序時請選擇 1 號功能 \n");
        printf("\t\t\t\t****************************************************\n");
        printf(" \t\t\t\t請選擇:");
        scanf_s("%d", &t);
        if ((t > 8) || (t < 1))
        {
            printf("對不起, 無此功能, 請輸入正確的功能序號!\n");
        }
        else
            switch (t)
            {
            case 1:
                system("cls");
                HeadWord();
                temp = CreatWord();
                break;
            case 2:
                system("cls");
                PrintWord();
                printf("\n");
                printf("按回車鍵繼續(xù)····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 3:
                system("cls");
                CountWord();
                break;
            case 4:
                system("cls");
                Bmenu(temp);
                break;
            case 7:
                system("cls");
                HeadWord();
                AboutWord();
                printf("按回車鍵繼續(xù)····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 5:
                system("cls");
                HeadWord();
                save(temp);
                printf("按回車鍵繼續(xù)····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 6:
                system("cls");
                HeadWord();
                load(temp);
                printf("\n 按回車鍵繼續(xù)····· ");
                getchar();
                getchar();
                system("cls");
                break;
            }
        if (t == 8) break;
    } while (1);
}
int main()
{
    head = (LinkList *)malloc(sizeof(LinkList));
    LinkList *temp = head;
    menu(temp);
}

運行結(jié)果:

QQ截圖20200107190203.png

可以實現(xiàn)全部功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,503評論 0 13
  • 你來過 卻又走遠 如一縷幽幽的柳煙 時隱時現(xiàn) 蜿蜒著往昔的悠長 驚蟄的響雷敲過 震落了一野的相思 期待來春時 長一...
    w小郭閱讀 307評論 1 0
  • 聽著曲兒、憶起照片…擺上幾張來
    燕子Yang閱讀 335評論 0 0
  • 今天是日更的第三天,雖然一直都沒人看,但至少我也在堅持了,完事開頭難,我知道,我是奔著賺錢去的,我就要達到目...
    青澀姑娘閱讀 371評論 0 2
  • p2p線下平臺_華融道理財 p2p線下平臺_華融道理財 p2p線下平臺_華融道理財
    桓緩襖53939閱讀 375評論 0 0

友情鏈接更多精彩內(nèi)容