【源碼項目】C語言編程之火車票管理系統!(最強代碼)


大學計算機軟件技術基礎課程設計任務書

一、題目:

        火車票信息管理系統;

二、目的與要求 :

        ● 目的培養學生綜合利用C++語言進行程序設計的能力,

        ● 培養學生的編程能力、用計算機解決實際問題的能力,加強對理論知識的理解和實際運用;

        ● 培養學生對軟件工程知識和方法的初步認識,提高軟件系統分析能力和程序文檔建立、歸納總結的能力;

        ● 提高學生的實際動手能力和獨立思考的能力。

最后的版本,不想更新了。更新也沒有什么功能自己可以弄了。該版本修改了前幾個版本中錯誤的地方,相對完整了許多,功能也加強了。

/*----------該程序主要實現火車票信息的管理----------*/

#include <string.h>

#include <stdio.h>

/*----------定義車次、出發站、終點站、發車時間、到達時間、票價數組----------*/

char    trains[10][10], start_station[10][10], end_station[10][10], start_time[10][10], end_time[10][10];

int price[10], i = 0, j = 0, k = 0, l = 0, x = 0; /* ----------定義全局變量---------- */

void set( void );

void search( void );

void sum( void );

void sort( void );

void edit( void );

void del( void );

int main( void )

{

    int o;  /* ----------o在此處為選項數值---------- */

/*----------以下代碼為主菜單選項----------*/

    for ( o = 1; o != 0; o )

    {

        printf( "\n------------------------------------------------\n" );

        printf( "----------歡迎使用火車票管理系統主菜單----------" );

        printf( "\n------------------------------------------------\n" );

        printf( "          1.set                (錄入)\n" );

        printf( "          2.search              (查詢)\n" );

        printf( "          3.sum                (統計)\n" );

        printf( "          4.sort                (排序)\n" );

        printf( "          5.edit                (編輯)\n" );

        printf( "          6.del                (刪除)\n" );

        printf( "          0.exit                (退出)\n" );

        printf( "\n請輸入要選擇的服務項目:" );

        scanf( "%d", &o );

        if ( o == 1 )

            set();

        else if ( o == 2 )

            search();

        else if ( o == 3 )

            sum();

        else if ( o == 4 )

            sort();

        else if ( o == 5 )

            edit();

        else if ( o == 6 )

            del();

        else if ( o == 0 )

            break;

        else

            printf( "\n請輸入正確的數字!n\n" );

    }

}

/*----------錄入子函數---------*/

void set( void )

{

    printf( "\n請輸入准備錄入的信息數:" );

    scanf( "%d", &i );

    if ( i <= 0 || i > 10 )

    {

        printf( "\n----------請正確輸入1-10之間的整數!----------\n" );

        return;

    }

    i = i + x;

    for ( j = x; j < i; j++ )

    {

        ++x; /* ----------記錄錄入的信息總條數---------- */

        printf( "\n請輸入車次:" );

        scanf( "%s", &trains[j] );

        printf( "\n請輸入出發站:" );

        scanf( "%s", &start_station[j] );

        printf( "\n請輸入終點站:" );

        scanf( "%s", &end_station[j] );

        printf( "\n請輸入發車時間:" );

        scanf( "%s", &start_time[j] );

        printf( "\n請輸入到達時間:" );

        scanf( "%s", &end_time[j] );

        printf( "\n請輸入票價:" );

        scanf( "%d", &price[j] );

    }

    printf( "\n----------信息錄入完畢----------n\n" );

}

/*----------查詢子函數----------*/

void search( void )

{

    char    search[10];

    int search1;

    k = 0;

    if ( x == 0 )

    {

        printf( "\n----------暫無數據可查詢!----------\n" );

        return;

    }

    printf( "\n--------------------------------\n" );

    printf( "----------查詢功能菜單----------" );

    printf( "\n--------------------------------\n" );

    printf( "          1.車次\n" );

    printf( "          2.出發站\n" );

    printf( "          3.終點站\n" );

    printf( "          4.發車時間\n" );

    printf( "          5.到達時間\n" );

    printf( "          6.票價\n" );

    printf( "\n請輸入要查詢方式的編號:" );

    scanf( "%d", &l );

    if ( x == 0 )

    {

        printf( "\n----------當前數據庫為空----------\n" );

    }else if ( l == 1 )

    {

        printf( "\n請輸入需要查詢的車次:" );

        scanf( "%s", search );

        for ( i = 0; i < x; i++ )

        {

            j = strcmp( search, trains[i] );

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                {

                    printf( "\n-------------------------------------------------------------\n" );

                    printf( "車次 出發站 終點站 發車時間 到達時間 票價" );

                    printf( "\n-------------------------------------------------------------\n" );

                }

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else if ( l == 2 )

    {

        printf( "\n請輸入需要查詢的出發站:" );

        scanf( "%s", search );

        for ( i = 0; i < x; i++ )

        {

            j = strcmp( search, start_station[i] );

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                    printf( "\n車次 出發站 終點站 發車時間 到達時間 票價\n" );

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else if ( l == 3 )

    {

        printf( "\n請輸入需要查詢的終點站:" );

        scanf( "%s", search );

        for ( i = 0; i < x; i++ )

        {

            j = strcmp( search, end_station[i] );

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                    printf( "\n車次 出發站 終點站 發車時間 到達時間 票價\n" );

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else if ( l == 4 )

    {

        printf( "\n請輸入需要查詢的發車時間:" );

        scanf( "%s", search );

        for ( i = 0; i < x; i++ )

        {

            j = strcmp( search, start_time[i] );

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                    printf( "\n-------------------------------------------------------------\n" );

                printf( "車次 出發站 終點站 發車時間 到達時間 票價" );

                printf( "\n-------------------------------------------------------------\n" );

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else if ( l == 5 )

    {

        printf( "\n請輸入需要查詢的到達時間:" );

        scanf( "%s", search );

        for ( i = 0; i < x; i++ )

        {

            j = strcmp( search, end_time[i] );

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                    printf( "\n-------------------------------------------------------------\n" );

                printf( "車次 出發站 終點站 發車時間 到達時間 票價" );

                printf( "\n-------------------------------------------------------------\n" );

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else if ( l == 6 )

    {

        printf( "\n請輸入需要查詢的票價:" );

        scanf( "%d", &search1 );

        for ( i = 0; i < x; i++ )

        {

            j = search1 == price[i] ? 0 : 1;

            if ( j == 0 )

            {

                ++k;

                if ( k == 1 )

                    printf( "\n-------------------------------------------------------------\n" );

                printf( "車次 出發站 終點站 發車時間 到達時間 票價" );

                printf( "\n-------------------------------------------------------------\n" );

                printf( "%-8s ", trains[i] );

                printf( "%-10s ", start_station[i] );

                printf( "%-10s ", end_station[i] );

                printf( "%-12s ", start_time[i] );

                printf( "%-12s ", end_time[i] );

                printf( "%-8d", price[i] );

                printf( "\n" );

            }

        }

        printf( "\n----------查詢結束,本次共查詢的%d個結果----------n\n", k );

    }else

        printf( "\n請正確輸入排序方式編號!\n" );

}

/*----------列表子函數----------*/

void sum( void )

{

    if ( x != 0 )

    {

        printf( "\n----------------------------------------------------------------------\n" );

        printf( "編號 車次 出發站 終點站 發車時間 到達時間 票價" );

        printf( "\n----------------------------------------------------------------------\n" );

        for ( i = 0; i < x; i++ )

        {

            printf( "%-8d ", i + 1 );

            printf( "%-8s ", trains[i] );

            printf( "%-10s ", start_station[i] );

            printf( "%-10s ", end_station[i] );

            printf( "%-12s ", start_time[i] );

            printf( "%-12s ", end_time[i] );

            printf( "%-8d", price[i] );

            printf( "\n" );

        }

    }

    printf( "\n----------共有%d條記錄----------\n", x );

}

/*----------排序子函數----------*/

void sort( void )

{

    char    sort[1][10];

    int sort1;

    if ( x == 0 )

    {

        printf( "\n----------無數據可排序!----------\n" );

        return;

    }

    printf( "\n--------------------------------\n" );

    printf( "----------排序功能菜單----------" );

    printf( "\n--------------------------------\n" );

    printf( "          1.車次\n" );

    printf( "          2.出發站\n" );

    printf( "          3.終點站\n" );

    printf( "          4.發車時間\n" );

    printf( "          5.到達時間\n" );

    printf( "          6.票價\n" );

    printf( "\n請輸入要排序的序號:" );

    scanf( "%d", &k );

/*----------以下為排序工作流程----------*/

    if ( k == 1 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = strcmp( trains[i], trains[j + 1] );

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else if ( k == 2 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = strcmp( start_station[i], start_station[j + 1] );

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else if ( k == 3 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = strcmp( end_station[i], end_station[j + 1] );

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else if ( k == 4 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = strcmp( start_time[i], start_time[j + 1] );

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else if ( k == 5 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = strcmp( end_time[i], end_time[j + 1] );

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else if ( k == 6 )

    {

        for ( i = 0; i < x; i++ )

            for ( j = i; j < x - 1; j++ )

            {

                l = price[i] > price[j + 1] ? 1 : 0;

                if ( l > 0 )

                {

                    strcpy( sort[0], trains[i] );

                    strcpy( trains[i], trains[j + 1] );

                    strcpy( trains[j + 1], sort[0] );

                    strcpy( sort[0], start_station[i] );

                    strcpy( start_station[i], start_station[j + 1] );

                    strcpy( start_station[j + 1], sort[0] );

                    strcpy( sort[0], end_station[i] );

                    strcpy( end_station[i], end_station[j + 1] );

                    strcpy( end_station[j + 1], sort[0] );

                    strcpy( sort[0], start_time[i] );

                    strcpy( start_time[i], start_time[j + 1] );

                    strcpy( start_time[j + 1], sort[0] );

                    strcpy( sort[0], end_time[i] );

                    strcpy( end_time[i], end_time[j + 1] );

                    strcpy( end_time[j + 1], sort[0] );

                    sort1      = price[i];

                    price[i]    = price[j + 1];

                    price[j + 1]    = sort1;

                }

            }

    }else

        printf( "\n----------你的輸入錯誤!----------n\n" );

/*----------排序工作流程結束----------*/

    printf( "\n-------------------------------------------------------------\n" );

    printf( "車次 出發站 終點站 發車時間 到達時間 票價" );

    printf( "\n-------------------------------------------------------------\n" );

    for ( i = 0; i < x; i++ )

    {

        printf( "%-8s ", trains[i] );

        printf( "%-10s ", start_station[i] );

        printf( "%-10s ", end_station[i] );

        printf( "%-12s ", start_time[i] );

        printf( "%-12s ", end_time[i] );

        printf( "%-8d", price[i] );

        printf( "\n" );

    }

}

/*----------編輯子函數----------*/

void edit( void )

{

    if ( x != 0 )

    {

        printf( "\n----------------------------------------------------------------------\n" );

        printf( "編號 車次 出發站 終點站 發車時間 到達時間 票價" );

        printf( "\n----------------------------------------------------------------------\n" );

        for ( i = 0; i < x; i++ )

        {

            printf( "%-8d ", i + 1 );

            printf( "%-8s ", trains[i] );

            printf( "%-10s ", start_station[i] );

            printf( "%-10s ", end_station[i] );

            printf( "%-12s ", start_time[i] );

            printf( "%-12s ", end_time[i] );

            printf( "%-8d", price[i] );

            printf( "\n" );

        }

        printf( "\n----------------------------------\n" );

        printf( "----------編輯功能主菜單----------" );

        printf( "\n----------------------------------\n" );

    }

    if ( x == 0 )

        printf( "\n----------沒有數據可編輯!----------\n" );

    else{

        printf( "\n請輸入要修改信息的編號:" );

        scanf( "%d", &j );

        if ( j >= 1 && j <= x )

        {

            printf( "\n--------------" );

            printf( "\n  1.車次      " );

            printf( "\n  2.出發站    " );

            printf( "\n  3.終點站    " );

            printf( "\n  4.發車時間  " );

            printf( "\n  5.到達時間  " );

            printf( "\n  6.票價      " );

            printf( "\n--------------" );

            printf( "\nn請輸入要修改的項目:" );

            scanf( "%d", &k );

            if ( k == 1 || k == 2 || k == 3 || k == 4 || k == 5 || k == 6 )

            {

                printf( "\n請輸入你要修改的數據:" );

                if ( k == 1 )

                {

                    scanf( "%s", &trains[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }else if ( k == 2 )

                {

                    scanf( "%s", &start_station[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }else if ( k == 3 )

                {

                    scanf( "%s", &end_station[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }else if ( k == 4 )

                {

                    scanf( "%s", &start_time[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }else if ( k == 5 )

                {

                    scanf( "%s", &end_time[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }else  {

                    scanf( "%d", &price[j - 1] );

                    printf( "\n----------編輯操作成功----------\n" );

                }

            }else

                printf( "\n----------請輸入正確的項目!----------\n" );

        }else

            printf( "\n----------請輸入正確的編號!----------\n" );

    }

}

/*----------刪除子函數----------*/

void del( void )

{

    if ( x != 0 )

    {

        printf( "\n----------------------------------------------------------------------\n" );

        printf( "編號 車次 出發站 終點站 發車時間 到達時間 票價" );

        printf( "\n----------------------------------------------------------------------\n" );

        for ( i = 0; i < x; i++ )

        {

            printf( "%-8d ", i + 1 );

            printf( "%-8s ", trains[i] );

            printf( "%-10s ", start_station[i] );

            printf( "%-10s ", end_station[i] );

            printf( "%-12s ", start_time[i] );

            printf( "%-12s ", end_time[i] );

            printf( "%-8d", price[i] );

            printf( "\n" );

        }

        printf( "\n----------------------------------\n" );

        printf( "----------刪除功能主菜單----------" );

        printf( "\n----------------------------------\n" );

        printf( "\n請輸入以上要刪除信息的編號:" );

        scanf( "%d", &j );

    }

    if ( x == 0 )

        printf( "\n----------沒有數據可刪除!----------\n" );

    else if ( j < x && j > 0 )

    {

        for (; j < x + 1; j++ )

        {

            strcpy( trains[j - 1], trains[j] );

            strcpy( start_station[j - 1], start_station[j] );

            strcpy( end_station[j - 1], end_station[j] );

            strcpy( start_time[j - 1], start_time[j] );

            strcpy( end_time[j - 1], end_time[j] );

            price[j - 1] = price[j];

        }

        x = x - 1;

        printf( "\n----------刪除操作成功!----------\n" );

    }else if ( j == x )

    {

        x = x - 1;

        printf( "\n----------刪除操作成功!----------\n" );

    }else

        printf( "\n----------請輸入正確的編號!----------\n" );

}

 

效果圖:


 

嘻嘻噠~~~

看到這里你是不是又學到了很多新知識呢~

如果你很想學編程,小編推薦我的C語言/C++編程學習基地【點擊進入】!

都是學編程小伙伴們,帶你入個門還是簡簡單單啦,一起學習,一起加油~

還有許多學習資料和視頻,相信你會喜歡的!

涉及:游戲開發、常用軟件開發、編程基礎知識、課程設計、黑客等等......


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM