C语言大作业:旅游资讯管理系统

题目:
一、主体功能点要求:
1.设计主菜单实现用户交互
a、添加旅游资讯记录
每条记录至少包含如下项:编号、日程安排、费用、点赞数。添加旅游资讯记录时,要求键盘输入对应的编号、日程安排等信息。添加成功后屏幕打印出相应的提示信息。
b、查询旅游资讯记录
查询旅游资讯记录时,打印相应提示语句,用户输入“1~3”之间的整数,如果输入1,按编号大小升序排序显示所有的记录;如果输入2,按点赞数降序排序显示所有的记录;如果输入3,则提示输入记录的编号,然后单独显示该编号对应的记录(若无该编号的记录,打印出错的提示信息,并返回主菜单)。
c、修改旅游资讯记录
修改旅游资讯记录时,打印相应提示语句,输入待修改记录的编号(若无该编号的记录,打印出错的提示信息,并返回主菜单),然后输入需修改记录的字段名称,比如编号、日程安排、费用等(点赞数不能在此处修改),再输入相应字段修改后的值。
d、删除旅游资讯记录
删除旅游资讯记录时,打印相应提示语句,输入待删除记录的编号(若无该编号的记录,打印出错的提示信息,并返回主菜单),然后打印是否删除的提示语句,输入y,删除选中的记录,否则不进行删除操作。
e、点赞旅游资讯记录
点赞旅游资讯记录时,打印相应提示语句,输入待删除记录的编号(若无该编号的记录,打印出错的提示信息,并返回主菜单),该记录的点赞数增1。
2、扩展要求:
 能够实现将编辑完毕的旅游资讯记录保存在txt文件中,
 每次重新打开程序能够导入之前存储的旅游资讯记录。
二、编程要求:
1、注意每条旅游资讯记录至少包含编号、日程安排、费用、点赞数这四个字段,并且要求将字段的信息定义为一个结构体。
2、若采用链表存储每条旅游资讯记录,则属于扩展实现,可加分。
3、注意将程序的功能点进行模块化设计,避免将全部功能点实现代码写在主函数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;//点赞数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();//按点赞数大小来显示旅游资讯记录
void display();//将所有的旅游资讯记录输出到显示器中
void search_tourid();//按照编号来查询某个旅游资讯记录
void change_tour();//修改旅游资讯记录
void delect_tour();//删除旅游资讯记录
void agree_tour();//点赞某个旅游资讯记录
int main(){printf("==========欢迎使用旅游资讯管理系统==========\n");read_tour();//读取文件int i;while(true)//每当执行完一个功能时,都会自动显示主菜单{while(1)//判断数字输入是否正确,如果不正确继续循环输入{printf("请选择相关操作:\n1.增加旅游资讯记录\n2.查询旅游资讯记录\n3.浏览旅游资讯记录\n");printf("4.修改旅游资讯记录\n5.删除旅游资讯记录\n6.点赞旅游资讯记录\n7.保存数据并退出管理系统\n");printf("请输入数字选择要实现的功能:\n");scanf("%d",&i);if(i>=1&&i<=7){break;}else{printf("数字错误,请重新输入");}}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();//把数据信息保存到文件里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("请输入点赞数:");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","编号", "日程安排", "费用", "点赞数");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.按点赞数降序排序显示所有的记录\n3.输入编号查询记录\n");printf("请选择查询的方式:\n");scanf("%d",&i);if(i>=1&&i<4)break;elseprintf("输入的数字错误,请重新输入:\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("目前该系统尚未保存有旅游资讯记录,返回主菜单!\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("目前该系统尚未保存有旅游资讯记录,返回主菜单!\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","编号", "日程安排", "费用", "点赞数");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++;}elseT=T->next;}if(j==0){printf("该系统无该编号的旅游信息\n");}
}
void display(){tour T=head->next;if(NULL == head->next){printf("无旅游信息\n");return ;}printf("%-15s|%-15s|%-15s|%-15s\n","编号", "日程安排", "费用", "点赞数");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("系统无该编号的信息\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("数据删除成功!\n");break;}else{printf("不进行删除操作!\n");exit(0);}}elseT=T->next;}if(j==0){printf("系统无该编号的信息\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;//点赞数+1break;}else{printf("不进行点赞操作!\n");exit(0);}}}if(j==0){printf("系统无该编号的信息\n");exit(0);}
}

C语言大作业:旅游资讯管理系统相关推荐

  1. 学委作业管理系统c语言,c语言大作业-学生信息管理系统.doc

    c语言大作业-学生信息管理系统.doc 课程设计报告书 题目:学生信息管理系统设计 学 院 电子与信息学院 专 业 电子信息类 学生姓名 学生学号 指导教师 课程编号 135160 课程学分 1学分 ...

  2. 哈工大C语言大作业-学生成绩管理系统

    哈工大C语言大作业-学生成绩管理系统 完整项目地址:https://github.com/944613709/Student-Performance-Management-System-ByC 说明 ...

  3. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  4. c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))

    C语言程序设计--教室管理系统(源代码) 非常有用的. #include #include #include #define szSTR 64 #define fileDB "c:\\con ...

  5. c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf

    c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...

  6. c语言大作业书店图书管理系统,C语言_课程设计—书店图书管理系统.doc

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24日 一.选题背景: 设计一个图书管理系统,管理员通过登陆账 ...

  7. c语言大作业书店图书管理系统,C语言课程设计书店管理系统.pdf

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一个图书管理系统,管理员通过登陆 ...

  8. 学生证选课系统c语言大作业,学生选课管理系统c语言程序

    #include #include #include int N1,N2; struct couse * head1; struct student * head2; struct couse //课 ...

  9. 程序设计大作业:教务管理系统(C语言)

    写在前头: 这个大作业是大一写的,所以比较低能,全篇只涉及C语言相关知识,且有些内容我自己看了都嫌弃.嘿嘿. 我整理了资源,可以免费下载:程序设计大作业:教务管理系统(C语言)-C文档类资源-CSDN ...

最新文章

  1. HTML5 如何实现拖放'N'拖放
  2. Robinhood应用宣布添加BCH和LTC交易
  3. Rep Loss笔记
  4. 为什么说Swift正在颠覆整个互联网生态?
  5. Ranger-AdminServer安装
  6. 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
  7. Adobe Photoshop源代码以及3800万用户信息泄漏
  8. Redis GEO 特性在 LBS 中的应用总结
  9. flume与log4j的整合
  10. Android混淆规则
  11. 如何破解终端算力困局?PRCV这篇论文让机器人“算有余力”
  12. android模拟器安装教程视频教程,安卓模拟器安装教程 安卓模拟器怎么安装
  13. C语言经典问题(收藏)
  14. LabVIEW如何将脚本插入Quick Drop
  15. Advanced Computer Network Review(4)——Congestion Control of MPTCP
  16. 老男孩教育50期-马慧峰-决心书
  17. js获取用户浏览器信息和ip地址以及位置
  18. 2022高教杯思路 数模思路
  19. 前端实现高效的海报系统
  20. 计算机视觉-图像处理基础

热门文章

  1. nodejs 事件轮训
  2. 共享打印机时,出现0x000006d9的解决方法
  3. scrapy 爬取酷狗T500音乐
  4. 以下哪些属于android控件的touch事件?_聊聊 Android 的 GUI 系统
  5. linux 添加raid0驱动,linux操作系统不重启添加raid0步骤
  6. Jira Servcie Desk使用教程(十四):如何接收来自电子邮件的请求?
  7. .net core入门38:linux上安装.net 5.0
  8. 浅析分布式系统之体系结构 技术基本目标----一致性(单对象、单操作)
  9. lesson5-week2
  10. FPGA:数字电路简介