第17周 项目4 - 日期结构体<2>

本文介绍了一个简单的C++程序,用于计算两个人生日之间的天数差异。通过结构体存储日期,并使用循环和switch语句来计算每个月的天数总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 
 * Copyright (c) 2014, 烟台大学计算机学院 
 * All rights reserved. 
 * 文件名称:test.cpp 
 * 作    者:呼亚萍 
 * 完成日期:2014年 12 月 22日 
 * 版 本 号:v1.0 
 * 
 * 问题描述:定义一个结构体变量,要求输入两个人的生日,计算两人生日相差几天
 * 输入描述:相应的程序
 * 程序输出:两人生日相差的天数
 */

#include <iostream>
using namespace std;
int days(int m,int t);
struct Date
{
    int month;
    int day;
};
int main()
{
    int t,d1,d2;
    Date date;
    cout<<"第一个人的生日是:";
    cout<<"input month,day:";
    cin>>date.month>>date.day;
    d1=days(date.month,date.day);
    cout<<"第二个人的生日是:";
    cout<<"input month,day:";
    cin>>date.month>>date.day;
     d2=days(date.month,date.day);
     t=d1-d2;
   cout<<"两人生日相差"<<t<<"天";
    return 0;
}
int days(int m,int t)
{
    int sum=t;
    for(int i=1; i<m; ++i)
    {
        switch(i)
        {
        case 2:
           sum+=28;
            break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            sum+=31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            sum+=30;
            break;

        }
    }
    return sum;
}


运算结果:

知识点总结:

用结构体整体作为参数

学习心得:

用不同的方法编写程序,真正读懂程序

CH341A编程器是一款广泛应用的通用编程设备,尤其在电子工程和嵌入式系统开发领域中,它被用来烧录各种类型的微控制器、存储器和其他IC芯片。这款编程器的最新版本为1.3,它的一个显著特点是增加了对25Q256等32M芯片的支持。 25Q256是一种串行EEPROM(电可擦可编程只读存储器)芯片,通常用于存储程序代码、配置数据或其他非易失性信息。32M在这里指的是存储容量,即该芯片可以存储32兆位(Mbit)的数据,换算成字节数就是4MB。这种大容量的存储器在许多嵌入式系统中都有应用,例如汽车电子、工业控制、消费电子设备等。 CH341A编程器的1.3版更新,意味着它可以与更多的芯片型号兼容,特别是针对32M容量的芯片进行了优化,提高了编程效率和稳定性。26系列芯片通常指的是Microchip公司的25系列SPI(串行外围接口)EEPROM产品线,这些芯片广泛应用于各种需要小体积、低功耗和非易失性存储的应用场景。 全功能版的CH341A编程器不仅支持25Q256,还支持其他大容量芯片,这意味着它具有广泛的兼容性,能够满足不同项目的需求。这包括但不限于微控制器、EPROM、EEPROM、闪存、逻辑门电路等多种类型芯片的编程。 使用CH341A编程器进行编程操作时,首先需要将设备通过USB连接到计算机,然后安装相应的驱动程序和编程软件。在本例中,压缩包中的"CH341A_1.30"很可能是编程软件的安装程序。安装后,用户可以通过软件界面选择需要编程的芯片类型,加载待烧录的固件或数据,然后执行编程操作。编程过程中需要注意的是,确保正确设置芯片的电压、时钟频率等参数,以防止损坏芯片。 CH341A编程器1.3版是面向电子爱好者和专业工程师的一款实用工具,其强大的兼容性和易用性使其在众多编程器中脱颖而出。对于需要处理25Q256等32M芯片的项目,或者26系列芯片的编程工作,CH341A编程器是理想的选择。通过持续的软件更新和升级,它保持了与现代电子技术同步,确保用户能方便地对各种芯片进行编程和调试。
课 程 设 计 报 告课程名称 《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、付费专栏及课程。

余额充值