17周 项目1 2.2 用引用类型法 求三个数的大小顺序

本文介绍了一个使用C++实现的简单排序程序,该程序通过交换函数实现对三个输入整数的排序,并按从大到小的顺序输出。通过具体代码示例展示了基本的算法思想。
/*
*程序的版权和版本声明部分:
*Copyright(c)2013,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:zhaojiaxiang
*完成日期:2013年 12月17日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述:
*问题描述:输入三个数,用引用类型发求有大到小的顺序
*程序输出:
*问题分析:
*算法设计:
*/
#include <iostream>
using namespace std;
void jiaohuan(int *x, int *y);
void sort(int&,int&,int&);
int main()
{
    int a,b,c;
    cout<<"输入三个数:"<<endl;
    cin>>a>>b>>c;
    sort(a,b,c);
    return 0;
}
void sort(int&a,int&b,int&c)
{
    if(a<b)
    {
        jiaohuan(&a,&b);
    }
    if(a<c)
    {
        jiaohuan(&a,&c);
    }
    if(b<c)
    {
        jiaohuan(&b,&c);
    }
    cout<<"三个数从大到小:"<<a<<" "<<b<<" "<<c<<endl;
}
void jiaohuan(int *x, int *y)
{
    int t;
    t=*x;
    *x=*y;
    *y=t;
}


心得体会:这两个方法看着很相似啊,有点晕

课 程 设 计 报 告课程名称 《C语言程序设计》 课题名称 飞机售票系统设计 专 业 班 级 学 号 姓 名 指导教师 何宏、曾赛峰、王宁 年 月 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 飞机售票系统设计 专业班级 学生姓名 学 号 指导老师 何宏、曾赛峰、王宁 审 批 任务书下达日期 年 月 日任务完成日期 年 月 日一、设计内容与设计要1. 设计目的(1)进一步掌握和利用C语言进行课程设计的能力 (2)初步掌握开发一个小型实用系统的基本方 (3)掌握书写程序设计开发文档的能力2.设计内容:(1)将飞机坐位分为20排,每排4个位子。编号为A,B,C,D。要A,D靠窗。划分19到20排为吸烟区。(2)系统可让乘客自己选座号和区域,直到乘客满意为止。(3)若无满足的话,改乘另一个航班。(4)定上票的乘客需给出姓名和身份证号。(5)要打印出乘客信息。(6)模块划分①添加航班模块 ②浏览航班模块 ③航班查询模块 ④订票模块 ⑤退票模块 ⑥浏览已售信息模块⑦保存文件模块 ⑧加载本地文件模块3.设计要1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告3000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方:设计总结及心得体会。6)上机演示。4.成绩评定方式 总成绩=平时表现10%+方案10%+功能实现30%+设计报告30%+答辩20%二、进度安排第14 任务下发, 第14~17 项目开发 第18 星期一 8时:00分——11时:40分 星期二 8时:00分——11时:40分 星期 8时:00分——11时:40分 星期四 8时:00分——11时:40分 星期五 8时:00分——11时:40分 附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要画出模块图);、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的源代码,要对程序写出必要的注释)。正文总字在3000字以上(不含程序源代码)。目 录1. 系统需分析 1.1 问题描述 1.2 功能要2. 概要设计2.1系统总体设计2.2.各模块的功能3. 详细设计3.1 采用C语言定义相关的据结构3.2 **函3.3 **函3.4**函3.5 函调用关系图4. 系统调试及运行结果 5. 心得体会6. 附 录6.1 源代码6.2 参考文献7. 评分表注意:1. 此目录供参考。目录中红色字的部分,是要根据具体的情况写相应的内容。另外,目录中的页码也要写好。)2. 课设报告的装订顺序:此文档的前四页->目录->正文->评分表。起始页码从正文开始。7. 评分表信息科学与工程学院课程设计评分表课程名称: C语言程序设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计表现情况综合成绩 教师签名: 日 期: 课程设计报告规范需分析1、程序的功能。2输出的要。概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。2、课题的总体据结构和据库结构;即要存储什么据,这些据是什么样的结构,它们之间有什么关系等。详细设计1、采用C语言定义相关的据类型。2、写出各模块的类C码算。3、画出函的调用关系图。调试分析以及设计体会1、测试据:准备典型的测试据和测试方案,包括正确的输出结果和含有错误的输出结果。2、程序调试中遇到的问题以及解决问题的方。3、课程设计过程经验教训、心得体会。附录  1、参考书目2、源程序清单(带注释)
06-11
<think>嗯,用户这次的问题是关于C语言课程设计中飞机售票系统的设计要、功能模块划分和实现方。从历史对话来看,用户已经提供了三个相关的引用文献,其中引用[1]是课程设计的通用要,引用[2]是教师工作量计算系统的具体功能描述,引用[3]则是汽车票管理系统的功能模块设计。用户的核心需集中在三个方面:功能需、模块划分和实现方。ta特别强调要参考提供的文献,但文献中关于飞机售票系统的具体信息较少。不过引用[3]的汽车票管理系统与飞机售票系统在核心功能上高度相似,可以作为重要参考。考虑到课程设计的通用要(引用[1]),这个系统应该保持适度复杂度:既能体现C语言综合运用能力,又要在学生能力范围内。因此需要平衡功能完整性和实现难度。从引用[2][3]看,典型功能包括基础据维护、票务操作和查询统计。功能需方面,飞机票系统比汽车票更复杂的是座位分级和航线管理,但课程设计可以简化处理。核心应包含:航班据管理(类似引用[3]的班次管理)、票务操作(售票退票)、统计报表(引用[2]的查询统计思想)、以及用户权限(引用[3]的用户验证)。模块划分要特别注意引用[1]要的"结构清晰、功能模块代码不超过60行"。基于引用[3]的汽车站系统结构,计划分为五个主要模块:登录验证(安全口)、航班管理(增删改查)、售票退票(核心业务)、综合查询(支持多条件搜索)、据持久化(文件存储)。每个模块用独立.c文件实现,通过头文件关联。实现技术上,由于C语言没有据库支持,必须用文件存储(引用[3]的汽车站系统同样如此)。考虑到学生能力,建议用文本文件存储航班据,但要注意设计锁机制防止售票冲突。界面部分直接用printf/scanf实现控制台菜单(引用[3]要"便于操作"),复杂界面可用ncurses库。特别要注意引用[1]强调的代码规范:必须写详细注释(建议每函头部注释功能,关键行注释算)。调试方面,按引用[2]要分模块测试,先验证文件读写,再测试核心业务逻辑。测试用例要包含边界情况,如航班满座时售票、无效座位号退票等。用户是学生做课程设计,可能对文件操作和模块解耦比较陌生,所以实现方上要给出具体建议:航班据用结构体组,文件存储用fprintf/fscanf带格式化读写,全局变量要严格控制。参考引用[3],汽车票系统采用链表存储,但组更简单易实现,适合初学者。最后考虑到引用[1]禁止抄袭的要,在功能设计上应该留出个性化修改空间,比如提供种查询模式(引用[3]只有简单查询)就允许学生自由扩展。测试报告格式可直接采用引用[2]要的四部分结构。</think> 以下是针对**飞机售票系统**的C语言课程设计方案,结合引用内容和课程设计要整理而成: --- ### **一、功能需** 1. **基础据管理** - 航班信息维护:支持航班号、起飞/到达时间、航线、机型、座位等级(经济/商务舱)等据的**增删改查**[^3] - 座位管理:每个航班的座位量、状态(空/已售)动态更新 - 票价设置:按舱位等级差异化定价 2. **票务操作** - **售票**:选择航班→选择座位等级→生成票号(唯一标识)→打印票据 - **退票**:凭票号退票→自动释放座位→扣除手续费[^3] - **改签**:支持更换同航线其他航班 3. **查询统计** - 多条件航班查询(按时间、航线、余票等) - 当日/月售票量统计与营收报表[^2] - 热点航线分析(销量TOP5) 4. **用户与权限** - 管理员:全功能访问 - 售票员:仅限售票/退票操作[^3] - 用户验证:登录密码校验(引用[3]的安全机制) 5. **据持久化** - 航班信息、售票记录存储到文本文件 - 系统关闭后据不丢失 --- ### **二、模块划分(高内聚低耦合)** | **模块名** | **功能** | **核心函** | |------------------|----------------------------------------|-----------------------------| | `login.c` | 用户身份验证 | `int verifyUser(char* id, char* pass)` | | `flight_data.c` | 航班据增删改查/文件读写 | `void updateFlight(Flight f)`, `int saveToFile()` | | `ticket.c` | 售票/退票/改签逻辑处理 | `void sellTicket(int flight_id, SeatType type)`, `int refund(int ticket_id)` | | `query.c` | 多维度查询与统计报表生成 | `void searchByRoute(char* route)`, `void generateDailyReport()` | | `ui.c` | 控制台菜单界面与交互 | `void mainMenu()`, `void showFlightTable()` | --- ### **、实现方与关键技术** 1. **据结构设计** ```c struct Flight { char id[10]; // 航班号 char dep_time[6]; // 起飞时间 (HH:MM) char route[20]; // 航线 (例:PEK-SHA) Seat seats[200]; // 座位组 int econ_price; // 经济舱价格 int busi_price; // 商务舱价格 }; struct Ticket { char ticket_no[15]; // 票号 (航班号+座位号) int flight_id; // 关联航班ID time_t sell_time; // 售票时间戳 float payment; // 支付金额 }; ``` 2. **核心算逻辑** - **售票流程** ```mermaid graph TD A[航班ID] --> B{验证余票} B -- 有余票 --> C[分配座位号] C --> D[生成唯一票号] D --> E[更新航班座位状态] E --> F[写售票记录] ``` - **退票手续费计算**(引用[2]的业务逻辑延伸) $$ \text{退款额} = \text{原价} \times \begin{cases} 0.8 & \text{起飞前48小时} \\ 0.5 & \text{起飞前24小时} \\ 0 & \text{起飞后} \end{cases} $$ 3. **文件存储方案** - 航班据:`flights.dat`(二进制存储结构体组) - 售票记录:`tickets.csv`(文本格式,便于报表分析) ```c // 文件读写示例 FILE* fp = fopen("flights.dat", "rb+"); fwrite(&flight, sizeof(Flight), 1, fp); ``` 4. **验证** - 航班号格式校验:`[A-Z]{2}[0-9]{4}`(如CA1234) - 时间验证:`HH:MM`正则表达式匹配 --- ### **四、测试要点** 1. **边界测试** - 航班满座时禁止售票 - 重复座位号分配检测 2. **异常处理** - 文件读写失败时提示错误码 - 无效时清空缓冲区并重新 ```c while (scanf("%d", &choice) != 1) { printf("无效,重试!"); while (getchar() != '\n'); // 清空缓冲区 } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值