当前位置:
文档之家› 列车时刻管理系统C语言程序设计(源代码)
列车时刻管理系统C语言程序设计(源代码)
一、问题分析
随着社会的不断发展,人们在交通方式的选择上有了不同以往的选择,以前的靠人力, 畜力,以及摩托车,现在人们的选择更多的会放在了汽车,飞机还有列车上。每当春节前后 时,都有一批民工潮,学生潮,这些农民工和学生都来自于祖国的各个地方,因此车站如何 合理有序的安排列车出站到站时间成了一个很关键的内容, 有助于维持车站的秩序以及减少 不必要的等待。 而本课题的列车时刻管理系统也应用与这些地方, 不过由于专业知识学的还 不多, 因此还不能将一个完整的列车时刻管理系统完全的展示出来, 只是在最基础的层面上 做了一些工作。
3
列车时刻管理系统 { FILE *fp; int i; if ((fp=fopen("train.txt","rb"))==NULL) { printf("列车时刻信息不存在,请重新建立!\n"); return; } else printf("列车信息存在,请按回车键选择操作"); if (fread(&num,sizeof(int),1,fp)!=1) { num=-1; } else { for(i=0;i<num;i++) { fread(&Records[i],sizeof(struct Record),1,fp); } } fclose(fp); } 6.将数据写入文件中: void WriteToFile() { FILE *fp; int i; if ((fp=fopen("train.txt","wb"))==NULL) { printf("不能打开文件!\n"); return; } if (fwrite(&num,sizeof(int),1,fp)!=1) { printf("写入文件错误!\n"); } for (i=0;i<num;i++) { if (fwrite(&Records[i],sizeof(struct Record),1,fp)!=1) { printf("写入文件错误!\n"); }
按出站地址查询
全部删除
单一删除
2
列车时刻管理系统 { case 1:AddNew();break; case 2:ShowMenu();break; case 3:Record_Modify();break; case 4:DeleteMenu();break; case 5:exit(0); } } 4.数据检测: void ChkData(char city1[],char city2[],int hour1,int minute1,int hour2,int minute2) { if (strlen(city1)>20) { printf("出站地址的字符不能超过 20 个!\n"); MainMenu(); } if (strlen(city2)>20) { printf("到站地址不能超过 20 位!\n"); MainMenu(); } if (hour1<0||hour1>23) { printf("时刻输入错误(0<=hour<24)!\n"); MainMenu(); } if (hour2<0||hour2>24) { printf("时刻输入错误(0<=hour<24)!\n"); MainMenu(); } if (minute1<0||minute1>59) { printf("时刻输入错误(0<=minute<59)!\n"); MainMenu(); } if (minute2<0||minute2>59) { printf("时刻输入错误(0<=minute<59)!\n"); MainMenu(); } } 5.读入文件中的数据: void ReadFromF 利用结构数组的方式来添加新记录,并且保存在文件 train.txt 文件中,并且记录上限为 300, 新纪录的内容包括: 出站地址, 出站的时刻 (时) , 出站时刻 (分) , 到站地址, 到站时刻 (时) , 到站时刻(分) 。 2.查看: 查询功能总共分为四种方式:①按出站地址查询②按出站时刻查询③按到站地址查询 ④按到站时刻查询,这个功能由于能力有限,只限查找单一数据。 3.修改: 修改功能:根据出站的地址,查找出对应的一组数据的内容,然后逐一修改。 4.删除: 修改功能总共分为两个部分:①单一删除(按照出站地址)②全部删除 5.保存: 每执行一个任务后程序会自动将数据写入 train.txt 文档中。
4
列车时刻管理系统 } fclose(fp); }
五、实验运行结果(部分)
1.主菜单
2.查询菜单
3.按出站地址查询
4.修改信息
5
列车时刻管理系统
5.删除信息
六、设计总结
通过本次课程设计,我对 C 语言这种程序设计语言有了初步的认识,对以后的专业课 程打下了一定的基础。C 语言是一门面向对象的程序设计语言,因此需要我们对函数部分要 下功夫。另外数组同样是很重要的内容,通过数组的学习,我们可以将日常生活中的一些问 题用计算机来解决。最后,我们学习了指针与结构,这部分是 C 语言的精髓部分,不过有 点难度, 这次的课程设计中我用的是数组的原因之一是对指针这方面还有些不足, 希望在日 后的学习中多加努力。 通过这次课程设计让我知道了学习中的不足, 也明白了要想学好更难 的知识就要先学好基础课程。
6
列车时刻管理系统 /**********************列车时刻管理系统****************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <malloc.h> #include <conio.h> struct Record /***定义结构体******/ { int hour1; int hour2; int minute1; int minute2; char city1[20]; char city2[20]; }; struct Record Records[300]; /****数组的成员个数限制了数据的数量要小于 300****/ int num=0; void AddNew(); int IsLoop(); void Display(); void ShowMenu(); void Search_ccity(); void Search_dcity(); void Search_ctime(); void Search_dtime(); void ChkData(char city1[],char city2[],int hour1,int minute1,int hour2,int minute2); void Record_Modify(); void DeleteMenu(); void DeleteAll(); void DeleteOne(); void ReadFromFile(); void MainMenu(); void WriteToFile(); void main() /***主函数********/ { ReadFromFile(); /***读取文件中的数据****/ getchar(); while (1) { MainMenu(); WriteToFile();/*******将数据写入文件中****/ } }
列车时刻管理系统
四、模块的算法设计(部分主要函数的代码)
1.整体构造:
主菜单
添加数据
查询数据
修改数据
删除数据
按到站时刻查询
按出站时刻查询
按到站地址查询
2.结构体: struct Record { int hour1; int hour2; int minute1; int minute2; char city1[20]; char city2[20]; }; 3.主菜单: void MainMenu() { system("cls"); printf("------------------------主菜单-----------------------------\n"); int option; printf("---------------------1-添加新记录--------------------------\n"); printf("---------------------2-查看--------------------------------\n"); printf("---------------------3-修改--------------------------------\n"); printf("---------------------4-删除--------------------------------\n"); printf("---------------------5-退出程序----------------------------\n"); printf("请选择: \n"); scanf("%d",&option); getchar(); switch (option)
7
列车时刻管理系统 /******从文件读取记录*******/ void ReadFromFile() { FILE *fp; int i; if ((fp=fopen("train.txt","rb"))==NULL) { printf("列车时刻信息不存在,请按回车重新建立!\n"); return; } else printf("列车信息存在,请按回车键选择操作"); if (fread(&num,sizeof(int),1,fp)!=1) { num=-1; } else { for(i=0;i<num;i++) { fread(&Records[i],sizeof(struct Record),1,fp); } } fclose(fp); } /*******主菜单***********/ void MainMenu() { system("cls");/****清除屏幕*******/ printf("------------------------主菜单-----------------------------\n"); int option; printf("---------------------1-添加新记录--------------------------\n"); printf("---------------------2-查看--------------------------------\n"); printf("---------------------3-修改--------------------------------\n"); printf("---------------------4-删除--------------------------------\n"); printf("---------------------5-退出程序----------------------------\n"); printf("请选择: \n"); scanf("%d",&option); getchar(); switch (option)/****运用 case 语句来实现选择*****/ { case 1:AddNew();break; case 2:ShowMenu();break; case 3:Record_Modify();break;