收藏 分销(赏)

C语言程序设计课程实践报告.doc

上传人:仙人****88 文档编号:11850290 上传时间:2025-08-15 格式:DOC 页数:10 大小:65.50KB 下载积分:10 金币
下载 相关 举报
C语言程序设计课程实践报告.doc_第1页
第1页 / 共10页
C语言程序设计课程实践报告.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
C语言程序设计课程实践 火车时刻表 学号姓名1: 学号姓名2: 完成日期: 年 月(5号宋体) 1. 题目描述 火车时刻表 包含车次、始发站、终点站、发车时间、到达时间、车种、票价。 功能: 建立列车时刻表 车次的调配:新增加车次;对原有车次的调整。 查询:显示整个列车时刻表,要求:按始发站排序,始发站相同按终点站排序。 查询某个车次;查询由某个始发站始发的列车;查询由A出发到B的所有车次。 统计:统计各车种的数量。 该程序应该具有下列功能: (1) 通过键盘输入某次列车的始发站、终点站、发车时间、到达时间、车种、票价; (2)通过键盘能够对原有的车次进行调整,新增加车次,进行车次的调配; (3)能够显示整个列车时刻表,并按始发站排序,若始发站相同按终点站排序; (4) 给定某个车次,能够显示该车次的始发站、终点站、发车时间、到达时间、车种、票价的信息; (5) 给定某个车次,能够查询由某个始发站始发的列车;查询由A出发到B的所有车次; (6) 提供统计各车种的数量的功能。 2. 题目要求 (1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序; (2) 列车信息应该包含:车次、始发站、终点站、发车时间、到达时间、车种、票价; (3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 (4) 作业完成情况应该存储在文件中。 3. 主要函数和变量描述 函数名 功能描述 参数和返回值的意义 Read 建立列车时刻表 读取列车时刻表 参数(STRU_TRAIN * pRet, STRU_TRAIN * pItem)链表头指针; 参数(int nRead) 待录入列车时刻表; 无返回值 变量名 数据类型 主要功能 隶属函数 pRet pItem STRU_TRAIN * 结构体指针变量 Read nRead int 录入列车时刻表数据 Read 函数名 功能描述 参数和返回值的意义 Save 保存列车时刻表 参数(STRU_TRAIN * pHead, const char * filename)链表头指针; 无返回值 变量名 数据类型 主要功能 隶属函数 phead char 定义名称 全局变量 函数名 功能描述 参数和返回值的意义 fopen 打开一个名为filename的文件 参数(STRU_TRAIN * pHead, const char * filename)链表头指针; 无返回值 变量名 数据类型 主要功能 隶属函数 phead char 定义名称 全局变量 函数名 功能描述 参数和返回值的意义 freeTrain 释放链表 参数(STRU_TRAIN * pHead)链表头指针; 无返回值 变量名 数据类型 主要功能 隶属函数 pNext STRU_TRAIN * 结构体指针变量 freeTrain 函数名 功能描述 参数和返回值的意义 Add 新增加车次 参数(STRU_TRAIN * pHead)链表头指针 变量名 数据类型 主要功能 隶属函数 pItem STRU_TRAIN * 结构体指针变量 add nRead int 存放新增加的列车时刻表数据 add 函数名 功能描述 参数和返回值的意义 Show 显示列车时刻表 参数(STRU_TRAIN * pHead)链表头指针; 无返回值 变量名 数据类型 主要功能 隶属函数 phead char 定义名称 全局变量 4. 主要模块的算法描述(至少给出两个子功能流程); 5. 程序的源代码清单 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_STRING 80 /*定义本程序中字符串最大长度*/ typedef struct STRU_TRAIN { char trainId[MAX_STRING]; /*车次*/ char beginStation[MAX_STRING]; /*始发站*/ char endStation[MAX_STRING]; /*终点站*/ char beginTime[MAX_STRING]; /* 发车时间*/ char endTime[MAX_STRING]; /*到达时间*/ char trainType[MAX_STRING]; /*车种*/ int price; /* 票价*/ struct STRU_TRAIN * pNext; /*链表指针*/ }STRU_TRAIN; STRU_TRAIN * read(STRU_TRAIN * pHead, const char * filename) { STRU_TRAIN * pRet = pHead; STRU_TRAIN * pItem = NULL; int nRead = 0; /*一行有7个数据*/ FILE * fp = fopen(filename, "rb"); if (fp != NULL) { while(1) { pItem = (STRU_TRAIN*)malloc(sizeof(STRU_TRAIN)); //存放一条记录 memset(pItem, 0, sizeof(STRU_TRAIN)); nRead = fscanf(fp, "%s %s %s %s %s %s %d ", pItem->trainId, pItem->beginStation, pItem->endStation, pItem->beginTime, pItem->endTime, pItem->trainType, &pItem->price); if(nRead != 7) /*读到文件结尾了,退出*/ { free(pItem); break; } //建立链表 if(pHead == NULL) { pHead = pItem; pRet = pHead; } else { pHead->pNext = pItem; pHead = pItem; } } fclose(fp); } fp = NULL; return pRet; } //保存列车时刻表 int save(STRU_TRAIN * pHead, const char * filename) { FILE * fp = fopen(filename, "wb"); if (fp != NULL) { while(pHead != NULL) { fprintf(fp, "%s %s %s %s %s %s %d ", pHead->trainId, pHead->beginStation, pHead->endStation, pHead->beginTime, pHead->endTime, pHead->trainType, pHead->price); pHead = pHead->pNext; } fclose(fp); /*关闭fp指向的文件句柄,防止句柄泄露*/ } return 0; } //释放链表(防止内存泄漏) void freeTrain(STRU_TRAIN * pHead) { while(pHead != NULL) { STRU_TRAIN * pNext = pHead->pNext; free(pHead); pHead = pNext; } } //新增加车次 STRU_TRAIN* add(STRU_TRAIN * pHead) { STRU_TRAIN* pItem = (STRU_TRAIN*)malloc(sizeof(STRU_TRAIN)); /*存放一条记录*/ int nRead = 0; memset(pItem, 0, sizeof(STRU_TRAIN)); printf("Input trained beginStation endStation beginTime endTime trainType price \n"); nRead = scanf("%s %s %s %s %s %s %d", pItem->trainId, pItem->beginStation, pItem->endStation, pItem->beginTime, pItem->endTime, pItem->trainType, &pItem->price); if (nRead != 7) { printf("Input information error, form: trained beginStation endStation beginTime endTime trainType price \n"); free(pItem); return pHead; /*输入格式有错*/ } pItem->pNext = pHead; /*在链表头上添加一条记录*/ return pItem; } //删除车次 //对原有车次的调整 //显示整个列车时刻表 void show(STRU_TRAIN * pHead) { while(pHead != NULL) { fprintf(stdout, "%s %s %s %s %s %s %d\n", pHead->trainId, pHead->beginStation, pHead->endStation, pHead->beginTime, pHead->endTime, pHead->trainType, pHead->price); pHead = pHead->pNext; } } //查询某个车次 //查询由某个始发站始发的列车 //查询由A出发到B的所有车次 //统计各车种的数量 int main() { STRU_TRAIN * pTrain = NULL; pTrain = read(pTrain, "a.dat"); /*读取现有火车时刻表*/ show(pTrain); /*显示出来*/ pTrain = add(pTrain); /*手工添加一条记录*/ show(pTrain); /*显示出来*/ save(pTrain, "a.dat"); /*保存到文件*/ freeTrain(pTrain); /*释放内存*/ return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服