C语言大项目设计

合集下载

C语言项目开发全程实录

C语言项目开发全程实录

C语言项目开发全程实录章第 1贪吃蛇游戏11 ,TC 2.0实现,随着电子产品性能的不断提升,所附带的娱乐性游戏也越来越丰富。

贪吃蛇游戏作为一个古老而又经典的游戏被不断完善,而且可以使用多种语言实现。

本章详细阐述了使用C语言实现贪吃蛇游戏基本功能的流程和相关技术。

通过本章的学习,读者能够学到,, 游戏设计思路, 游戏页面设计, 难度控制函数设计, 画墙函数设计, 运行过程函数设计, 游戏结束页面设计章导第读C语言项目开发全程实录1.1 贪吃蛇游戏概述贪吃蛇起源于西方,来自于蛇骗夏娃和亚当偷吃禁果的神话。

人们为了说明蛇的一个“贪”字,开发出了贪吃蛇游戏。

本章使用C语言开发一个贪吃蛇游戏,详细阐述了开发流程和开发技术。

下面来看一下详细的开发过程。

1.1.1 功能阐述本游戏只需要用户双击运行程序,就可以进入游戏界面,然后选择游戏难度(本游戏分为3个难度水平),即可进入游戏。

1.1.2 系统预览本游戏系统的游戏界面很丰富,下面列出几个典型页面,其他页面请参见光盘中的源程序。

贪吃蛇游戏系统主页面的运行效果如图1.1所示。

游戏运行效果如图1.2所示。

图1.1 贪吃蛇游戏主页面图1.2 游戏运行效果游戏失败运行效果如图1.3所示。

图1.3 游戏失败运行效果2第1章贪吃蛇游戏,TC 2.0实现,1.2 关键技术graphics.h文件是TC中的图形库,如果要使用,应该用TC进行编译。

下面对graphics.h文件中的函数进行简单介绍。

主要函数的分类及函数说明如表1.1所示。

表1.1 graphics.h文件中主要函数及说明函数说明像素函数画像素点函数 putpixel()返回像素点函数 getpixel()直线和线型函数画线函数 line()画线函数 lineto()相对画线函数 linerel()设置线型函数 setlinestyle()获取线型设置函数 getlinesettings()设置画线模式函数 setwritemode()多边形函数画矩形函数 rectangle()画条函数 bar()画条块函数 bar3d()画多边形函数 drawpoly()圆、弧和曲线函数获取纵横比函数 getaspectratio()画圆函数 circle()画圆弧函数 arc()画椭圆弧函数 ellipse()画椭圆区函数 fillellipse()画扇区函数 pieslice()画椭圆扇区函数 sector()获取圆弧坐标函数 getarccoords()填充函数设置填充图样和颜色函数 setfillstyle() 设置用户图样函数 setfillpattern()填充闭域函数 floodfill()填充多边形函数 fillpoly()3C语言项目开发全程实录续表函数说明填充函数获取填充设置函数 getfillsettings()获取用户图样设置函数 getfillpattern()图像函数图像存储大小函数 imagesize()保存图像函数 getimage()输出图像函数 putimage()下面对程序中使用到的一些函数进行简单介绍。

c语言程序设计项目实践

c语言程序设计项目实践

C语言程序设计项目实践1. 项目背景和目的C语言是一种广泛应用于嵌入式系统、操作系统和底层开发的高级编程语言。

它具有高效性、可移植性和灵活性等特点,因此在许多领域都有广泛的应用。

本项目旨在通过实践的方式,帮助学习者更好地掌握C语言程序设计的基本原理和技巧,并锻炼其解决实际问题的能力。

2. 项目内容本项目主要包括以下几个方面的内容:2.1 环境搭建首先,我们需要搭建C语言程序设计的开发环境。

可以选择合适的集成开发环境(IDE),如Code::Blocks、Dev-C++等。

同时,还需要安装C语言编译器,常用的有GCC、MinGW等。

安装完成后,进行环境配置,确保能够正常编译和运行C语言程序。

2.2 基本语法和数据类型在掌握了基本的开发环境后,我们需要学习C语言的基本语法和数据类型。

包括变量的声明和赋值、运算符的使用、控制结构(如if-else、for、while等)、函数的定义和调用等。

通过编写简单的程序,加深对这些概念的理解和掌握。

2.3 数组和指针数组和指针是C语言中非常重要的概念,也是实际开发中经常使用的数据结构和技巧。

学习数组和指针的用法,并编写相关的程序进行实践。

了解数组和指针在内存中的存储方式和访问方式,掌握指针的运算和指针与数组的关系。

2.4 文件操作文件操作是C语言中常见的任务之一,它涉及到文件的读取、写入和修改等操作。

学习如何打开文件、读取文件内容、写入文件内容,并编写相关的程序进行实践。

了解文件指针的概念和文件操作函数的使用方法。

2.5 结构体和链表结构体和链表是C语言中用于组织和管理复杂数据的重要工具。

学习结构体和链表的定义和使用,并编写相关的程序进行实践。

了解结构体和链表的基本原理和操作方式,掌握结构体和链表在实际开发中的应用。

3. 项目实施步骤为了顺利完成本项目,我们可以按照以下步骤进行实施:3.1 环境搭建•下载并安装合适的集成开发环境(IDE)和C语言编译器。

•进行环境配置,确保能够正常编译和运行C语言程序。

c语言活动策划书3篇

c语言活动策划书3篇

c语言活动策划书3篇篇一C 语言活动策划书一、活动背景C 语言作为一种广泛使用的编程语言,具有重要的学习和应用价值。

为了提高学生对C 语言的兴趣和掌握程度,特举办此次 C 语言活动。

二、活动目的1. 增强学生对 C 语言的理解和应用能力。

2. 培养学生的编程思维和解决问题的能力。

3. 促进学生之间的交流与合作。

三、活动时间和地点时间:[具体日期]地点:[详细地点]四、活动对象[参与活动的具体对象,如学生、爱好者等]五、活动内容1. C 语言基础知识讲座邀请专业教师或行业专家进行 C 语言基础知识的讲解,包括语法、数据类型、控制结构等。

2. 编程实践项目组织学生参与实际的编程项目,通过实践加深对 C 语言的理解和应用。

3. C 语言竞赛举办 C 语言编程竞赛,激发学生的竞争意识和创新能力。

4. 交流与分享设置交流环节,让学生分享自己在学习 C 语言过程中的经验和心得。

六、活动流程1. 活动开场:介绍活动背景和目的,欢迎参与者。

2. 知识讲座:进行 C 语言基础知识讲座。

3. 实践项目:学生分组进行编程实践项目。

4. 竞赛环节:开展 C 语言竞赛。

5. 交流分享:学生分享经验和心得。

七、活动宣传1. 在学校官网、社交媒体等平台发布活动通知。

2. 张贴宣传海报,宣传活动时间、地点和内容。

3. 邀请相关专业教师和学生组织进行宣传推广。

八、活动预算1. 讲座费用:[X]元2. 竞赛奖品费用:[X]元3. 宣传费用:[X]元4. 其他费用:[X]元总预算:[X]元九、注意事项1. 活动现场提供必要的技术支持和指导。

2. 确保活动的公平性和公正性。

3. 注意活动安全,避免因编程错误导致的意外情况。

篇二C 语言活动策划书一、活动背景C 语言作为一种广泛使用的编程语言,具有重要的地位。

为了提高学生对 C 语言的兴趣和掌握程度,促进学生之间的交流与合作,特举办此次 C 语言活动。

二、活动目的1. 增强学生对 C 语言的理解和应用能力。

C语言项目案例分析

C语言项目案例分析

C语言项目案例分析C语言项目案例:学生成绩管理系统概述:学生成绩管理系统是一个用于管理学生信息和成绩的软件系统。

该系统可以实现添加、删除、修改学生信息和成绩的功能,并且可以按照学生的学号或者姓名进行查找和排序。

功能要求:1. 学生信息管理:可以添加、删除、修改学生的基本信息,包括学号、姓名、性别、年龄等。

2. 成绩管理:可以添加、删除、修改学生的各科成绩,包括语文、数学、英语等。

3. 查找功能:可以根据学生的学号或者姓名查找学生信息和成绩。

4. 排序功能:可以按照学号、总成绩等排序学生信息和成绩。

设计思路:1. 数据结构设计:采用结构体数组来存储学生信息和成绩,结构体中包含学号、姓名、性别、年龄和各科成绩等字段。

2. 功能模块划分:将学生信息管理、成绩管理、查找功能和排序功能分别实现为不同的函数模块,通过调用这些函数来完成相应的功能。

3. 用户界面设计:通过命令行界面来实现用户与系统的交互,可以通过输入数字来选择相应的功能菜单,并根据用户的输入来执行相应的功能。

代码实现:以下是一个简单的学生成绩管理系统的代码示例:#include <stdio.h>#include <string.h>// 学生结构体struct student {int id;char name[20];int age;float chinese;float math;float english;};// 添加学生信息void addStudent(struct student* stu) {printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:");scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:");scanf("%f", &stu->math);printf("请输入学生的英语成绩:");scanf("%f", &stu->english);}// 删除学生信息void deleteStudent(struct student* stu) { stu->id = 0;strcpy(stu->name, "");stu->age = 0;stu->chinese = 0.0;stu->math = 0.0;stu->english = 0.0;}// 修改学生信息void modifyStudent(struct student* stu) { printf("请输入学生的学号:");scanf("%d", &stu->id);printf("请输入学生的姓名:");scanf("%s", stu->name);printf("请输入学生的年龄:");scanf("%d", &stu->age);printf("请输入学生的语文成绩:"); scanf("%f", &stu->chinese);printf("请输入学生的数学成绩:"); scanf("%f", &stu->math);printf("请输入学生的英语成绩:"); scanf("%f", &stu->english);}// 查找学生信息void findStudent(struct student* stu, int id) {if (stu->id == id) {printf("学号:%d,姓名:%s,年龄:%d,语文成绩:%.1f,数学成绩:%.1f,英语成绩:%.1f\n", stu->id, stu->name, stu->age, stu->chinese, stu->math, stu->english);}}// 排序学生信息void sortStudents(struct student* stu, int count) {// 冒泡排序for (int i = 0; i < count - 1; i++) {for (int j = 0; j < count - i - 1; j++) {if (stu[j].id > stu[j + 1].id) {struct student temp = stu[j];stu[j] = stu[j + 1];stu[j + 1] = temp;}}}}int main() {int choice;int count = 0;struct student students[100];do {printf("学生成绩管理系统\n");printf("1. 添加学生信息\n");printf("2. 删除学生信息\n");printf("3. 修改学生信息\n");printf("4. 查找学生信息\n");printf("5. 排序学生信息\n");printf("0. 退出\n");printf("请选择操作:");scanf("%d", &choice);switch (choice) {case 1:addStudent(&students[count]);count++;break;case 2:deleteStudent(&students[count - 1]);count--;break;case 3:modifyStudent(&students[count - 1]); break;case 4: {int id;printf("请输入要查找的学生学号:"); scanf("%d", &id);for (int i = 0; i < count; i++) {findStudent(&students[i], id);}break;}case 5:sortStudents(students, count);break;case 0:break;default:printf("请输入正确的操作!\n");break;}} while (choice != 0);return 0;}总结:通过以上的案例分析,可以看出,C语言可以实现一些简单的项目,例如学生成绩管理系统。

c语言课程设计报告项目背景

c语言课程设计报告项目背景

c语言课程设计报告项目背景一、课程目标知识目标:1. 学生能理解C语言课程设计报告的项目背景,掌握C语言在工程项目中的应用。

2. 学生能够掌握C语言的基本语法,如变量定义、数据类型、运算符、控制结构等,并能够运用到实际项目中。

3. 学生能够了解C语言编程规范,培养良好的编程习惯。

技能目标:1. 学生能够独立完成C语言课程设计报告的撰写,包括项目背景、需求分析、设计思路、代码实现和测试结果等。

2. 学生能够运用C语言编写简单的程序,解决实际问题,提高编程实践能力。

3. 学生能够通过课程设计,培养自己的问题分析、解决方案设计和调试能力。

情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,提高自主学习能力。

2. 学生能够认识到C语言在计算机科学中的重要性,激发对计算机科学的热爱。

3. 学生通过团队协作完成课程设计,培养沟通协作能力和团队精神。

课程性质:本课程为C语言编程实践课程,强调理论与实践相结合,注重培养学生的编程能力和实际应用能力。

学生特点:学生为初中年级,对编程有一定的基础,具备基本的计算机操作能力,好奇心强,学习积极性较高。

教学要求:教师应关注学生的个体差异,提供针对性的指导,引导学生掌握C 语言基本知识,注重培养学生的实际操作能力和团队协作能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. C语言基础知识回顾:变量定义、数据类型、运算符、控制结构(包括顺序、选择、循环结构)。

2. C语言编程规范:命名规则、注释、缩进、代码组织等。

3. 课程设计报告撰写方法:项目背景、需求分析、设计思路、代码实现、测试结果与分析。

4. 实践项目:选取与实际生活相关的问题,引导学生运用C语言进行程序设计。

- 项目一:计算器程序- 项目二:学生信息管理系统- 项目三:简易游戏开发(如:猜数字游戏)教学大纲:第一周:C语言基础知识回顾,重点讲解变量定义、数据类型和运算符。

c语言课程设计创建项目

c语言课程设计创建项目

c语言课程设计创建项目一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、编程技巧和项目开发流程,培养学生具备扎实的编程基础和良好的编程习惯,提高学生解决实际问题的能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针等概念,了解结构体、文件操作等高级内容。

2.技能目标:学生能够熟练使用C语言进行程序设计,具备良好的编程规范,能够阅读和理解他人的代码,具备一定的代码调试能力。

3.情感态度价值观目标:培养学生对编程的兴趣,使其认识编程在现代社会的重要性,培养学生勤奋学习、勇于探索的精神,提高学生团队协作和解决问题的能力。

二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、控制结构、函数等。

2.高级内容:数组、指针、结构体、文件操作等。

3.编程实践:通过实际项目案例,使学生掌握项目开发流程,培养学生解决实际问题的能力。

4.编程规范与调试技巧:培养学生良好的编程习惯,提高代码质量。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本概念、语法和原理。

2.案例分析法:分析实际项目案例,使学生了解项目开发流程。

3.实验法:上机实践,培养学生的编程能力和动手能力。

4.讨论法:分组讨论,引导学生主动思考和解决问题。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将采用以下教学资源:1.教材:《C语言程序设计》。

2.参考书:推荐《C Primer Plus》、《C和指针》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络环境等。

五、教学评估为了全面、客观地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:考察学生的出勤、课堂参与度、提问回答等情况,占总评的20%。

2.作业:布置课后练习和编程任务,检查学生的理解和应用能力,占总评的30%。

C语言构建包含多个源文件的项目

C语言构建包含多个源文件的项目

C语言构建包含多个源文件的项目在C语言编程中,为了更好地组织和管理代码,以及提高代码的可复用性,我们经常会将一个大型项目划分为多个源文件进行编写。

本文将介绍如何使用C语言构建包含多个源文件的项目,以及常用的文件组织方式和代码编写规范。

一、项目结构在开始编写包含多个源文件的项目之前,我们需要先规划好项目的结构。

通常,一个C语言项目的文件结构可以分为以下几个部分:1. 主函数文件:这个文件是整个项目的入口,通常命名为"main.c"。

主函数文件负责调用其他模块的函数,完成整个程序的执行流程控制。

2. 模块文件:这些文件包含了具体的功能实现,每个文件负责一个具体的功能模块。

我们可以将相关的函数和全局变量放在同一个模块文件中,并命名为"[模块名].c"。

3. 头文件:头文件以".h"为扩展名,用于声明函数和变量的接口以及宏定义。

每个模块文件都需要有对应的头文件,以便其他模块可以引用。

4. 附加文件:除了以上三类文件,项目还可能包含其他类型的文件,比如配置文件、文档等。

这些文件在项目中起到辅助的作用。

二、模块设计与实现在C语言中,一个模块通常由函数和全局变量组成。

为了将代码的可读性和可维护性提高,我们需要注意以下几点:1. 函数设计:每个函数应该只做一件事,遵循单一职责原则。

函数名要具有描述性,表明函数的功能和作用。

同时,合理使用函数参数和返回值,避免过度依赖全局变量。

2. 全局变量设计:全局变量应该尽量减少使用,因为过多的全局变量会导致代码的可读性和可维护性下降。

如果必须使用全局变量,应该将其限制在当前模块内部,并在对外提供操作接口。

3. 头文件设计:头文件用于声明函数和变量的接口,应该只包含必要的声明信息。

避免将实现细节暴露在头文件中,以避免引发命名冲突和编译依赖问题。

4. 代码注释:合适的注释能够提高代码的可读性,方便他人理解和维护。

在函数和关键代码块上方添加注释,解释其功能和使用方法。

C语言项目案例分析

C语言项目案例分析

C语言项目案例分析在C语言学习过程中,项目案例分析是非常重要的一部分。

通过实际的项目案例分析,可以帮助我们更好地理解和掌握C语言的知识,提高编程能力。

本文将结合几个常见的C语言项目案例,进行深入分析和讨论。

首先,我们来看一个简单的C语言项目案例,实现一个简单的计算器。

这个项目可以帮助我们熟悉C语言中的基本语法和运算符的使用。

我们可以定义几个变量来存储输入的两个操作数和运算符,然后根据运算符的不同,进行相应的运算并输出结果。

通过这个项目,我们可以加深对C语言输入输出、条件语句和循环结构的理解,同时也可以锻炼我们的逻辑思维能力。

接下来,我们再来看一个稍复杂一点的项目案例,实现一个简单的学生成绩管理系统。

这个项目涉及到了更多的C语言知识,比如结构体的使用、文件操作等。

我们可以定义一个学生结构体,包括学生的姓名、学号和成绩等信息,并实现对学生信息的录入、查询、修改和删除等功能。

通过这个项目,我们不仅可以加深对C 语言中结构体和指针的理解,还可以学会如何进行文件的读写操作,提高我们的实际应用能力。

最后,我们再来看一个更具挑战性的项目案例,实现一个简单的迷宫游戏。

这个项目涉及到了更复杂的算法和逻辑,需要我们对C语言的控制语句和函数的使用有更深入的理解。

我们可以利用二维数组来表示迷宫的地图,然后通过递归或者栈等数据结构,实现游戏角色在迷宫中的移动和寻路。

通过这个项目,我们可以提高对C语言中数组、递归和数据结构的掌握程度,同时也可以锻炼我们的问题分析和解决能力。

通过以上几个C语言项目案例的分析,我们可以看到,项目案例分析对于我们学习和掌握C语言知识是非常有益的。

通过实际的项目练习,我们不仅可以加深对C语言知识的理解,还可以提高编程能力和解决问题的能力。

因此,我们在学习C语言的过程中,应该多多进行项目案例分析,不断提升自己的实际编程能力。

希望本文的内容能够对大家有所帮助,谢谢阅读!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录设计目的 (1)总体设计 (1)详细设计 (3)调试与测试 (5)核心源程序清单和执行结果 (5)源程序代码 (5)截图 (13)仍存在的问题 (15)心得体会 (15)设计进度表 (16)参考文献 (17)一、正文(一)设计目的:假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。

设计一飞机订票系统,使之能提供下列服务:1、航班信息录入功能(航班信息用文件保存)包括航班号、起始站、重点站、机票数等;2、航班信息浏览功能3、按航班号排序4、查询航线:按航班号查询5、承办订票和退票业务(可选项)(二)总体设计:编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、排序、查询以及订票、退票的功能。

根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。

根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。

这就是看到题目后的最初的思路。

在这附上总体模块设计图:因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,根据题目要求定义如下结构体类型:头文件包含、全局变量定义和结构体定义源代码:#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 1000 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //航班终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量,记录下航班信息的数量char ii[10]; //用来选择是否继续的变量以上就是我的总体设计思路。

(三)详细设计:在本次的课程设计中我负责编制的是初始化、建立数据文件、数据文件读取、数据文件保存、增加航班信息、订票、退票业务函数的编写。

以下是我的负责部分的详细设计内容:1)定义系统初始化函数模块功能:设立一个初始化函数来得到航班信息。

具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二航班信息并可直接使用。

运用了access函数判断文件是否存在。

该函数源代码为:void chushihua() //初始化函数{if(access("hangban.dat",0))build();elseread();}2)定义建立新数据文件的函数系统初始化后,没有寻找到数据文件,则进行新建数据文件,此函数的作用就是进行新建文件数据的录入。

运用到了文件指针的定义FILE *fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite;运用for循环进行各组数据的输入,用m++记录下输入的航班数量,并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。

该函数的源代码为:3)定义读取文件内航班信息的函数系统初始化之后,若原始数据文件存在,则进行文件内航班信息的读取,以供接下来程序中的各个函数来使用。

在该函数中同样运用到了文件指针FILE *fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取;m++记录下读取到的航班数量等。

4)定义保存函数因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。

为了简便程序,我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存,将此次对文件修改的所有新信息都一次保存下来。

这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计,大大简便了文件的调用和读取。

保存函数运用到的知识点与读取函数大致相同。

此函数的源代码为:有关文件读取、写入和保存的函数定义完了就开始设计与题目要求直接相关的函数了。

5)定义订票业务函数在这个函数中首先调用了search函数查找需要订票的航班。

运用if语句实现订票时的多种情况:订票数输入不正确、飞机票数不足等情况。

订票成功时运用s[i].count=s[i].count-n;将已被订的机票数减去,以显示新的即时航班信息6)定义退票业务函数:与订票函数相类似,只做稍稍修改就行退票成功是用s[i].count=s[i].count+n; 将航班的剩余票数加上去以显示即时航班信息。

7)定义主函数主函数主要就是提供系统的主菜单界面供用户选择。

运行主函数时首先调用chushihua函数判定数据文件是否存在、是否要进行初始航班信息输入;若已存在则进入主界面菜单供用户选择,运用swich语句对用户的不同选择来调用各功能的函数。

并用do…while语句循环实现能够让用户进行多次的选择。

(四)调试与测试调试过程中曾经遇到过一些问题,但是也不多,遇到过:订票或退票的时候不能将剩余的票数加上和减去。

后来经过详细的检查与对照课本知识点找出了相应的错误点,经过修改加入票数加减语句,再经过与保存函数的配合后实现了题目要求的功能。

调试成功。

(五)核心源程序清单和执行结果:a)源程序清单:#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 1000 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量char ii[10];void add(); //函数声明增加航班信息函数void print(); //显示航班信息void search(); //查找航班信息void dingpiao(); //订票业务void tuipiao(); //退票void read(); //读取文件void save(); //保存文件void output(); //输出格式void paixu(); //航班排序void chushihua(); //系统初始化void build(); //建立数据文件void paixu1(); //按航班号从小到大排序void paixu2(); //从大到小void main() //主函数{int j;chushihua(); //系统初始化判断是否存在原始数据文件printf(" O(^_^)O欢迎使用天鑫飞机订票系统(*^__^*)\n"); //打印出系统主界面do{printf("============================================================================ ==== ");printf("1.增加航班信息\n""\t2.浏览航班信息\n""\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n""\t\t\t4.航班排序(按航班号)\n""\t\t\t\t5.订票业务\n""\to(︶︿︶)o\t\t\t6.退票业务\n""\t\t\t\t\t\t0.退出\n");printf("======================================================================== ======== ");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add(); //调用增加航班函数break;case 2:print(); //调用显示模块break;case 3:search(); //调用查找模块break;case 4:paixu(); //调用排序函数break;case 5:dingpiao(); //调用订票模块break;case 6:tuipiao(); //调用退票模块break;case 0: //退出系统save();printf("谢谢使用,再见!");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build() //定义建立数据文件函数{FILE *fp; //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错{printf("创建文件失败! "); //打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号: ");scanf("%d",&s[i].num); //输入航班号printf("请输入起始站: ");scanf("%s",s[i].start); //输入起始站printf("请输入终点站: ");scanf("%s",s[i].over); //输入终点站printf("请输入时间(星期几): ");scanf("%s",s[i].time); //输入时间printf("请输入机票数: ");scanf("%d",&s[i].count); //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void read() //定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! ");getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据i++;m++; //计算存在航班数}m--;fclose(fp);}void save() //定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! ");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add() //定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束): \n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");printf("请输入航班号: ");scanf("%d",&s[m].num); //读取航班号printf("请输入起始站: ");scanf("%s",s[m].start); //读取起始站printf("请输入终点站: ");scanf("%s",s[m].over); //读取终点站printf("请输入时间: ");scanf("%s",s[m].time); //读取时间printf("请输入机票数: ");scanf("%d",&s[m].count); //读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y")); //判断是否继续添加}void output() //定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print() //定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search() //定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT); //显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao() //定义订票业务函数{int n;char a[10]="y";do{search(); //调用查询模块if(!strcmp(ii,"n")){printf("对不起!没有找到您所需要的航班,所以不能订票。

相关文档
最新文档