最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)旅游資訊管理系統(tǒng)

 更新時間:2022年03月15日 10:21:40   作者:無人可阻擋  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)旅游資訊管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)旅游資訊管理系統(tǒng)的具體代碼,供大家參考,具體內容如下

題目:

一、主體功能點要求

1.設計主菜單實現(xiàn)用戶交互

a、添加旅游資訊記錄

每條記錄至少包含如下項:編號、日程安排、費用、點贊數(shù)。添加旅游資訊記錄時,要求鍵盤輸入對應的編號、日程安排等信息。添加成功后屏幕打印出相應的提示信息。

b、查詢旅游資訊記錄

查詢旅游資訊記錄時,打印相應提示語句,用戶輸入“1~3”之間的整數(shù),如果輸入1,按編號大小升序排序顯示所有的記錄;如果輸入2,按點贊數(shù)降序排序顯示所有的記錄;如果輸入3,則提示輸入記錄的編號,然后單獨顯示該編號對應的記錄(若無該編號的記錄,打印出錯的提示信息,并返回主菜單)。

c、修改旅游資訊記錄

修改旅游資訊記錄時,打印相應提示語句,輸入待修改記錄的編號(若無該編號的記錄,打印出錯的提示信息,并返回主菜單),然后輸入需修改記錄的字段名稱,比如編號、日程安排、費用等(點贊數(shù)不能在此處修改),再輸入相應字段修改后的值。

d、刪除旅游資訊記錄

刪除旅游資訊記錄時,打印相應提示語句,輸入待刪除記錄的編號(若無該編號的記錄,打印出錯的提示信息,并返回主菜單),然后打印是否刪除的提示語句,輸入y,刪除選中的記錄,否則不進行刪除操作。

e、點贊旅游資訊記錄

點贊旅游資訊記錄時,打印相應提示語句,輸入待刪除記錄的編號(若無該編號的記錄,打印出錯的提示信息,并返回主菜單),該記錄的點贊數(shù)增1。

2、擴展要求:

能夠實現(xiàn)將編輯完畢的旅游資訊記錄保存在txt文件中,每次重新打開程序能夠導入之前存儲的旅游資訊記錄。

二、編程要求

1、注意每條旅游資訊記錄至少包含編號、日程安排、費用、點贊數(shù)這四個字段,并且要求將字段的信息定義為一個結構體。
2、若采用鏈表存儲每條旅游資訊記錄,則屬于擴展實現(xiàn),可加分。
3、注意將程序的功能點進行模塊化設計,避免將全部功能點實現(xiàn)代碼寫在主函數(shù)main中。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
?typedef struct Tour *tour,TOUR;
? ? struct Tour
?? ?{
?? ??? ?int id;//編號
?? ??? ?char plan[30];//日程安排
?? ??? ?float cost;//花費
?? ??? ?int agree;//點贊數(shù)
?? ??? ?tour next;
?? ?};
?? ?tour head,tail;
void read_tour();// 從data.txt中讀取信息保存到單鏈表中
void write_cars();//把旅游資訊記錄存儲到data.txt中
void add_tour();//添加旅游資訊記錄
void search_tour();//查詢旅游資訊記錄
void display_tourid();//按編號大小來顯示旅游資訊記錄
void display_touragree();//按點贊數(shù)大小來顯示旅游資訊記錄
void display();//將所有的旅游資訊記錄輸出到顯示器中
void search_tourid();//按照編號來查詢某個旅游資訊記錄
void change_tour();//修改旅游資訊記錄
void delect_tour();//刪除旅游資訊記錄
void agree_tour();//點贊某個旅游資訊記錄
int main(){
?? ?printf("==========歡迎使用旅游資訊管理系統(tǒng)==========\n");
?? ?read_tour();//讀取文件
?? ?int i;
?? ?while(true)//每當執(zhí)行完一個功能時,都會自動顯示主菜單
?? ?{
?? ??? ?while(1)//判斷數(shù)字輸入是否正確,如果不正確繼續(xù)循環(huán)輸入
?? ??? ?{
?? ??? ??? ?printf("請選擇相關操作:\n1.增加旅游資訊記錄\n2.查詢旅游資訊記錄\n3.瀏覽旅游資訊記錄\n");
?? ??? ??? ?printf("4.修改旅游資訊記錄\n5.刪除旅游資訊記錄\n6.點贊旅游資訊記錄\n7.保存數(shù)據(jù)并退出管理系統(tǒng)\n");
?? ? ? ? ? ?printf("請輸入數(shù)字選擇要實現(xiàn)的功能:\n");
?? ??? ??? ?scanf("%d",&i);
?? ??? ??? ?if(i>=1&&i<=7)
?? ??? ??? ?{
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?printf("數(shù)字錯誤,請重新輸入");
?? ??? ? ? ?}
?? ??? ?}
?? ??? ?switch(i)
?? ??? ?{
?? ??? ?case 1: add_tour();;break;//進入添加旅游資訊信息功能
?? ??? ?case 2: search_tour();;break;//進入查詢旅游資訊信息功能
?? ??? ?case 3: display();break;//進入瀏覽旅游資訊信息功能
?? ??? ?case 4: change_tour();;break;//進入修改旅游資訊信息功能
?? ??? ?case 5: delect_tour();break;//進入刪除旅游資訊信息功能
?? ??? ?case 6: agree_tour();break;//進入點贊功能
?? ??? ?case 7: write_cars();//把數(shù)據(jù)信息保存到文件里
?? ??? ??? ?printf("謝謝使用!\n");
?? ??? ??? ?exit(0);
?? ??? ?}
?? ?}
?? ?return 0;
}
void read_tour(){
?? ?FILE *fp;
?? ?if (0 != fopen_s(&fp, "data.txt", "a+b"))
?? ?{
?? ??? ?perror("打開文件失敗,原因是");
?? ??? ?getch();
?? ??? ?exit(1);
?? ?}
?? ?tour T;
?? ?head = (tour)malloc(sizeof(TOUR));
?? ?if (NULL == head)
?? ?{
?? ??? ?printf("內存分配失??!\n");
?? ??? ?exit(EXIT_FAILURE);
?? ?}
?? ?head->next = NULL;
?? ?tail = head;
?? ?while (1)
?? ?{
?? ??? ?T= (tour)malloc(sizeof(TOUR));
?? ??? ?if (fread(T, sizeof(TOUR), 1, fp) == 0)
?? ??? ?{
?? ??? ??? ?free(T);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?T->next = NULL;
?? ??? ?tail->next = T;
?? ??? ?tail = T;
?? ?}
?? ?fclose(fp);//關閉文件
}
void write_cars()
{
?? ?FILE *fp;
?? ?if (0 != fopen_s(&fp, "data.txt", "w+"))
?? ?{
?? ??? ?perror("打開文件失敗,原因是");
?? ??? ?_getch();
?? ??? ?return;
?? ?}
?? ?tour T = head->next;
?? ?while (T != NULL)
?? ?{
?? ??? ?fwrite(T, sizeof(TOUR), 1, fp);
?? ??? ?T = T->next;
?? ?}
?? ?fclose(fp);//關閉文件
}
void add_tour()
{
?? ?tour T,temp;
?? ?T=(tour)malloc(sizeof(TOUR));
?? ?if(T==NULL)
?? ?{
?? ??? ?printf("空間分配失??!");
?? ? ? ?exit(1);
?? ?}
?? ?printf("請輸入編號:");
?? ?scanf("%d",&T->id);
?? ?printf("請輸入日程安排:");
?? ?scanf("%s",T->plan);
?? ?printf("請輸入費用:");
?? ?scanf("%f",&T->cost);
?? ?printf("請輸入點贊數(shù):");
?? ?scanf("%d",&T->agree);
?? ?if(head->next==NULL)
?? ?{
?? ??? ?head->next=T;
?? ??? ?T->next=NULL;
?? ?}else
?? ?{
?? ??? ?temp=head->next;//頭插法
?? ??? ?head->next=T;
?? ??? ?T->next=temp;
?? ?}
?? ?printf("%-15s|%-15s|%-15s|%-15s\n",
?? ??? ?"編號", "日程安排", "費用", "點贊數(shù)");
?? ?printf("%-16d%-16s%-16.1f%-7d%\n",T->id,T->plan,T->cost,T->agree);
}
void search_tour(){
?? ?int i;
?? ?while(1){
?? ??? ?printf("1.按編號大小升序排序顯示所有的記錄\n2.按點贊數(shù)降序排序顯示所有的記錄\n3.輸入編號查詢記錄\n");
?? ??? ?printf("請選擇查詢的方式:\n");
?? ??? ?scanf("%d",&i);
?? ??? ?if(i>=1&&i<4)break;
?? ??? ?else
?? ??? ??? ?printf("輸入的數(shù)字錯誤,請重新輸入:\n");
?? ?}
?? ?switch(i){
?? ?case 1:display_tourid();break;
?? ?case 2:display_touragree();break;
?? ?case 3:search_tourid();
?? ?}
}
void display_tourid(){
?? ?tour T;
?? ?T=head->next;
?? ?tail=NULL;?
?? ?if(T==NULL||T->next==NULL){
?? ??? ?printf("目前該系統(tǒng)尚未保存有旅游資訊記錄,返回主菜單!\n");
?? ??? ?return;//退出
?? ?}
?? ?while(T!=tail){
?? ??? ?while(T->next!=tail){
?? ??? ??? ?if(T->id>T->next->id){
?? ??? ??? ??? ?int temp=T->id;
?? ??? ??? ??? ?T->id=T->next->id;
?? ??? ??? ??? ?T->next->id=temp;
?? ??? ??? ??? ?char tempplan[30];
?? ??? ??? ??? ?strcpy(tempplan, T->plan); ?
?? ??? ??? ??? ?strcpy(T->plan,T->next->plan);
?? ??? ??? ??? ?strcpy(T->next->plan,tempplan);?
?? ??? ??? ??? ?float tempcost=T->cost;
?? ??? ??? ??? ?T->cost=T->next->cost;
?? ??? ??? ??? ?T->next->cost=tempcost;
?? ??? ??? ??? ?int tempagree=T->agree;
?? ??? ??? ??? ?T->agree=T->next->agree;
?? ??? ??? ??? ?T->next->agree=tempagree;
?? ??? ??? ?}
?? ??? ??? ?T=T->next;
?? ??? ?}
?? ??? ?tail=T;
?? ??? ?T=head;
?? ?}
?? ?display();//將信息輸出到顯示器中
}
void display_touragree(){
?? ?tour T;
?? ?T=head->next;
?? ?tail=NULL;?
?? ?if(T==NULL||T->next==NULL){
?? ??? ?printf("目前該系統(tǒng)尚未保存有旅游資訊記錄,返回主菜單!\n");
?? ??? ?return;
?? ?}
?? ?while(T!=tail){
?? ??? ?while(T->next!=tail){
?? ??? ??? ?if(T->agree>T->next->agree){
?? ??? ??? ??? ?int temp=T->id;
?? ??? ??? ??? ?T->id=T->next->id;
?? ??? ??? ??? ?T->next->id=temp;
?? ??? ??? ??? ?char tempplan[30];
?? ??? ??? ??? ?strcpy(tempplan, T->plan); ?
?? ??? ??? ??? ?strcpy(T->plan,T->next->plan);
?? ??? ??? ??? ?strcpy(T->next->plan,tempplan);?
?? ??? ??? ??? ?float tempcost=T->cost;
?? ??? ??? ??? ?T->cost=T->next->cost;
?? ??? ??? ??? ?T->next->cost=tempcost;
?? ??? ??? ??? ?int tempagree=T->agree;
?? ??? ??? ??? ?T->agree=T->next->agree;
?? ??? ??? ??? ?T->next->agree=tempagree;
?? ??? ??? ?}
?? ??? ??? ?T=T->next;
?? ??? ?}
?? ??? ?tail=T;
?? ??? ?T=head;
?? ?}
?? ?display();//將信息輸出到顯示器中
}
void search_tourid(){
?? ?tour T;
?? ?T=head->next;
?? ?printf("請輸入要查找的編號:");
?? ?int searchid;
?? ?scanf("%d",&searchid);
?? ?int j=0;
?? ?printf("%-15s|%-15s|%-15s|%-15s\n",
?? ??? ?"編號", "日程安排", "費用", "點贊數(shù)");
?? ?while(T!=NULL)
?? ?{
?? ??? ?if(T->id ==searchid)
?? ??? ?{
?? ??? ??? ?printf("%-16d%-16s%-16.1f%-7d%\n",T->id,T->plan,T->cost,T->agree);
?? ??? ??? ?T=T->next;
?? ??? ??? ?j++;
?? ??? ?}
?? ??? ?else
?? ??? ?T=T->next;
?? ?}
?? ??? ?if(j==0)
?? ??? ?{
?? ??? ??? ?printf("該系統(tǒng)無該編號的旅游信息\n");
?? ??? ?}
}
void display(){
?? ?tour T=head->next;
?? ?if(NULL == head->next)
? ? {
? ? ? printf("無旅游信息\n");
? ? return ;
? ? }
?? ?printf("%-15s|%-15s|%-15s|%-15s\n",
?? ??? ?"編號", "日程安排", "費用", "點贊數(shù)");
?? ?for(;T!=NULL;T=T->next)
?? ?{
?? ??? ?printf("%-16d%-16s%-16.1f%-7d%\n",T->id,T->plan,T->cost,T->agree);
?? ??? ?
?? ?}
}
void change_tour(){
?? ?int j=0;
?? ?tour T;
?? ?T=head->next;
?? ?int changeid;
?? ?printf("請輸入待修改的編號:");
?? ?scanf("%d",&changeid);
?? ?for(;T!=NULL;T=T->next){
?? ??? ?if(T->id==changeid){
?? ??? ??? ?j++;
?? ??? ??? ?char arr[30];
?? ??? ??? ?printf("請輸入要修改的項目:編號、日程安排、費用\n");
?? ??? ??? ?scanf("%s",arr);
?? ??? ??? ?if (strcmp(arr,"編號")==0){
?? ??? ??? ??? ?printf("請輸入修改后的值:");
?? ??? ??? ??? ?int changeid;
?? ??? ??? ??? ?scanf("%d",&changeid);
?? ??? ??? ??? ?T->id=changeid; ?
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if (strcmp(arr,"日程安排")==0){
?? ??? ??? ??? ?printf("請輸入修改后的值:");
?? ??? ??? ??? ?char str[20];
?? ??? ??? ??? ?scanf("%s",str);
?? ??? ??? ??? ?strcpy(T->plan, str);?
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if (strcmp(arr,"費用")==0){
?? ??? ??? ??? ?printf("請輸入修改后的值:");
?? ??? ??? ??? ?float changecost;
?? ??? ??? ??? ?scanf("%f",&changecost);
?? ??? ??? ??? ?T->cost=changecost; //賦值
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ?}
? ? ? ? ? if(j==0){
?? ??? ??? ?printf("系統(tǒng)無該編號的信息\n");
?? ??? ??? ?exit(1);
?? ??? ? ?}
}
void delect_tour(){
?? ?int j=0;
?? ?tour T,temp;
?? ?T=head;
?? ?int delectid;
?? ?printf("請輸入待刪除的編號:");
?? ?scanf("%d",&delectid);
?? ?getchar();
?? ?while(T->next!=NULL)
?? ?{
?? ??? ?if(T->next->id==delectid)
?? ??? ?{
?? ??? ??? ?j++;
?? ??? ??? ?printf("是否要刪除(Y/N),請選擇:\n");
?? ??? ??? ?char ch;
?? ??? ??? ?scanf("%c",&ch);
?? ??? ??? ?if(ch=='y'||ch=='Y'){
?? ??? ??? ? ?temp=T->next;
? ? ? ? ? ? ? T->next = T->next->next;
?? ??? ??? ? ?free(temp);
?? ??? ??? ? ?printf("數(shù)據(jù)刪除成功!\n");
?? ??? ??? ? ?break;
?? ??? ??? ?}else{
?? ??? ??? ??? ?printf("不進行刪除操作!\n");
?? ??? ??? ??? ?exit(0);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else
?? ??? ?T=T->next;
?? ?}
?? ?if(j==0){
?? ??? ??? ?printf("系統(tǒng)無該編號的信息\n");
?? ??? ??? ?exit(0);
?? ??? ?}
}
void agree_tour(){
?? ?int j=0;
?? ?tour T;
?? ?T=head;
?? ?int agreeid;
?? ?printf("請輸入待點贊的編號:");
?? ?scanf("%d",&agreeid);
?? ?getchar();
?? ?for(;T!=NULL;T=T->next){
?? ??? ?if(T->next->id==agreeid){
?? ??? ??? ?j++;
? ? ? ? ? ? printf("是否要刪除(Y/N),請選擇:\n");
?? ??? ??? ?char ch;
?? ??? ??? ?scanf("%c",&ch);
?? ??? ??? ?if(ch=='y'||ch=='Y'){
?? ??? ??? ? ?T->next->agree=T->next->agree+1;//點贊數(shù)+1
?? ??? ??? ? ?break;
?? ??? ??? ?}else{
?? ??? ??? ??? ?printf("不進行點贊操作!\n");
?? ??? ??? ??? ?exit(0);
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ? ? ? if(j==0){
?? ??? ??? ?printf("系統(tǒng)無該編號的信息\n");
?? ??? ??? ?exit(0);
?? ? ? ? }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++冒泡排序與選擇排序詳解

    C++冒泡排序與選擇排序詳解

    大家好,本篇文章主要講的是C++冒泡排序與選擇排序詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++?多線程編程pthread的基本使用詳解

    C++?多線程編程pthread的基本使用詳解

    在C++開發(fā)中,原生的線程庫主要有兩個,一個是C++11提供的<thread>(std::thread類),另一個是Linux下的<pthread.h>(p_thread類),本文主要介紹pthread的基本使用方式,需要的朋友可以參考下
    2024-05-05
  • C語言練習題:自由落體的小球簡單實例

    C語言練習題:自由落體的小球簡單實例

    下面小編就為大家?guī)硪黄狢語言練習題:自由落體的小球簡單實例。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • string與char*轉換的使用詳解

    string與char*轉換的使用詳解

    本篇文章對string與char*的轉換進行的介紹。需要的朋友參考下
    2013-05-05
  • C語言編程中分配內存空間的相關函數(shù)

    C語言編程中分配內存空間的相關函數(shù)

    這篇文章主要介紹了C語言編程中分配內存空間的相關函數(shù),分別是malloc()函數(shù)和calloc()函數(shù),需要的朋友可以參考下
    2015-08-08
  • C++?qt實現(xiàn)打開關閉狀態(tài)按鈕的代碼

    C++?qt實現(xiàn)打開關閉狀態(tài)按鈕的代碼

    這篇文章主要介紹了C++?qt實現(xiàn)打開關閉狀態(tài)按鈕,用QCheckBox可以實現(xiàn),只要在選擇與未選擇的狀態(tài)設置不同的圖片即可完成,代碼簡單易懂,需要的朋友可以參考下
    2022-03-03
  • C語言結構體占用內存深入講解

    C語言結構體占用內存深入講解

    這篇文章主要給大家介紹了關于C語言結構體占用內存的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C++面試八股文之如何避免死鎖詳解

    C++面試八股文之如何避免死鎖詳解

    在C++中,鎖(Lock)是一種同步工具,用于保護共享資源,防止多個線程同時訪問,那么如何避免死鎖的情況出現(xiàn)呢,下面就為大家簡單講講
    2023-07-07
  • 淺談C++模板元編程

    淺談C++模板元編程

    本篇文章主要介紹了淺談C++模板元編程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • C++內存模型與名稱空間概念講解

    C++內存模型與名稱空間概念講解

    這篇文章主要介紹了C++內存模型與名稱空間,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01

最新評論

甘泉县| 巴南区| 临汾市| 新巴尔虎右旗| 克拉玛依市| 屯门区| 靖西县| 通榆县| 榕江县| 西乌珠穆沁旗| 台湾省| 仪陇县| 西丰县| 遂平县| 林周县| 木里| 呈贡县| 秦皇岛市| 江北区| 游戏| 北票市| 鹤壁市| 江华| 土默特右旗| 壤塘县| 万盛区| 登封市| 宁海县| 玛曲县| 琼中| 若尔盖县| 红安县| 宁晋县| 阳谷县| 孟村| 宜昌市| 沈丘县| 井陉县| 凤台县| 榆林市| 武乡县|