C语言大作业:旅游资讯管理系统
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语言大作业:旅游资讯管理系统相关推荐
- 学委作业管理系统c语言,c语言大作业-学生信息管理系统.doc
c语言大作业-学生信息管理系统.doc 课程设计报告书 题目:学生信息管理系统设计 学 院 电子与信息学院 专 业 电子信息类 学生姓名 学生学号 指导教师 课程编号 135160 课程学分 1学分 ...
- 哈工大C语言大作业-学生成绩管理系统
哈工大C语言大作业-学生成绩管理系统 完整项目地址:https://github.com/944613709/Student-Performance-Management-System-ByC 说明 ...
- 【C】C语言大作业——学生学籍管理系统
文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...
- c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))
C语言程序设计--教室管理系统(源代码) 非常有用的. #include #include #include #define szSTR 64 #define fileDB "c:\\con ...
- c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf
c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...
- c语言大作业书店图书管理系统,C语言_课程设计—书店图书管理系统.doc
计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24日 一.选题背景: 设计一个图书管理系统,管理员通过登陆账 ...
- c语言大作业书店图书管理系统,C语言课程设计书店管理系统.pdf
计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一个图书管理系统,管理员通过登陆 ...
- 学生证选课系统c语言大作业,学生选课管理系统c语言程序
#include #include #include int N1,N2; struct couse * head1; struct student * head2; struct couse //课 ...
- 程序设计大作业:教务管理系统(C语言)
写在前头: 这个大作业是大一写的,所以比较低能,全篇只涉及C语言相关知识,且有些内容我自己看了都嫌弃.嘿嘿. 我整理了资源,可以免费下载:程序设计大作业:教务管理系统(C语言)-C文档类资源-CSDN ...
最新文章
- HTML5 如何实现拖放'N'拖放
- Robinhood应用宣布添加BCH和LTC交易
- Rep Loss笔记
- 为什么说Swift正在颠覆整个互联网生态?
- Ranger-AdminServer安装
- 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
- Adobe Photoshop源代码以及3800万用户信息泄漏
- Redis GEO 特性在 LBS 中的应用总结
- flume与log4j的整合
- Android混淆规则
- 如何破解终端算力困局?PRCV这篇论文让机器人“算有余力”
- android模拟器安装教程视频教程,安卓模拟器安装教程 安卓模拟器怎么安装
- C语言经典问题(收藏)
- LabVIEW如何将脚本插入Quick Drop
- Advanced Computer Network Review(4)——Congestion Control of MPTCP
- 老男孩教育50期-马慧峰-决心书
- js获取用户浏览器信息和ip地址以及位置
- 2022高教杯思路 数模思路
- 前端实现高效的海报系统
- 计算机视觉-图像处理基础
热门文章
- nodejs 事件轮训
- 共享打印机时,出现0x000006d9的解决方法
- scrapy 爬取酷狗T500音乐
- 以下哪些属于android控件的touch事件?_聊聊 Android 的 GUI 系统
- linux 添加raid0驱动,linux操作系统不重启添加raid0步骤
- Jira Servcie Desk使用教程(十四):如何接收来自电子邮件的请求?
- .net core入门38:linux上安装.net 5.0
- 浅析分布式系统之体系结构 技术基本目标----一致性(单对象、单操作)
- lesson5-week2
- FPGA:数字电路简介