c语言课设:火车订票系统

大一上学期c语言课设时候完成了第一个千行代码程序,这也是上大学后第一次的课设任务。
程序中我的管理员部分全部用链表实现的。用户部分读入用户信息和写出用户信息是用“结构体”实现的,但是其中的功能部分仍然用链表实现。

1.课设任务如下:

课设任务
任务:火车订票系统设计
功能:设计一-火车订票系统,使之能提供下列服务:系统以菜单方式工作;车次信息由管理员录入、修改、删除;旅客可以浏览、按路线查询、按车号查询、按终点站查询;承办订票和退票业务,系统可以扩充更多功能。

2.代码分析和“注意事项”:

a.代码长度:1015行(未删减注释部分)

在这里插入图片描述

b.管理员运行界面

在这里插入图片描述
其中功能都是用链表实现的,程序中也有较多的可调用功能函数,有待有心者的进一步发现。

c.用户界面:

在这里插入图片描述
程序中有cls刷新代码所以不会像刚开始学c语言写的程序一样输出的信息和输出的信息只能一直在滚动栏那里往下拉。

d.谨记:

在修改代码的过程中由于有些音频我没有上传所以建议修改我写的音频代码,因为这些音频是自己录的然后加在程序上的所以就没有上传。
如果不知道该从哪里下手改代码,建议先debug一遍了解全部的函数功能和运行过程明白程序的运行思路。
由于程序过长在以下给出流程图和课设心得后才有代码当然我还会打包一份。

管理员部分“流程图”:

在这里插入图片描述

心得

此次课程设计让我颇有感受。
首先是编译器的区别,说实话cb更适合当c/c++代码的编辑器而vc更适合当c/c++编译器,别小看一个字的差距,这其中蕴含的功能是很多的。(以上是以新生的身份来说出自我感受)。
其次是文件读取的差距,起初我在网上看到好多种文件读取的方式,但是再后来在老师的指导下我改成了标准化读入和输出,说实话这种读入和输出真的棒!
最后就是在敲代码中的蓝瘦,就因为一个小小的细节往往就要用几个小时去debug,debug虽然仅有5个字母,但是他的功能是非常的强大,他可以使一个程序编写者更快的找出问题所在。

最下边给出打包文件的下载地址

代码过长网页卡顿,所以在博客中只给出声明部分

 1 #include<stdlib.h>
 2 #include<string.h>
 3 #include<stdio.h>
 4 #include<math.h>
 5 #include<windows.h>
 6 #include<algorithm>
 7 #include <mmsystem.h>
 8 #pragma comment(lib, "winmm.lib")
 9 using namespace std;
10 const int UMAX=100;
11 const int AdMax=6;
12 //管理员身份验证
13 int UserNumber=0;
14 struct administrators
15 {
16     char password[15];
17 }Admin[AdMax]={"123456","dir","cpp","waryan","12345","1234"};
18 //列车信息管理
19 typedef struct trains_type
20 {
21     char id[10];
22     char number[30];
23     char StartTime[30];
24     char EndTime[30];
25     double price;
26     char StartPlace[30];
27     char EndPlace[30];
28 //    char identity[20];//学生票,成人票//有能力再进行添加
29     int surplus;
30 }Trains;
31 //用户信息管理
32 typedef struct users_type
33 {
34     char name[30];
35     char id_num[30];
36     char train_num[30];
37     char StarP[30];
38     char password[30];
39     int existence;
40 }USERS;
41 USERS person[UMAX];
42 typedef struct trains_list
43 {
44     Trains data;
45     struct trains_list *next;
46 }NODE;
47 
48 /****************函数申明***************/
49 int add(NODE* head);
50 NODE* CreatList();//创建链表
51 int Size(NODE *head);//链表大小
52 void pushHead(NODE *head,Trains t);//向链表头插入信息
53 void PrintList(NODE *head);//打印链表
54 NODE* Find(NODE* head,Trains t,int type);//寻找火车信息(链表信息
55 void SaveAllListOne(NODE* head);//保存链表
56 void SaveAllListTwo(NODE* head);//保存链表提示信息框
57 void SaveAllListThree();
58 void ListDelet(NODE* head,char* number);//删除链表
59 //void Save(NODE* head);//保存为文件
60 //void printEnd(NODE* head)
61 void printHeadSelect();//打印选择面板
62 void PrintAll(NODE* head);//打印全部链表内信息
63 void select(NODE *head);//按信息挑选
64 void Delete(NODE* head);//按信息删除
65 void update(NODE* head);//按信息更新
66 void OutInfo(Trains t);//输出一个链表内列车信息
67 //void SaveInfo(Trains t);//保存信息(缺少具体使用没写完
68 NODE *ReadInfoOne();//从txt文件中读取读入到链表中
69 bool ReadInfoTwo();//从txt读到用户结构体
70 void Manager(NODE* head);//管理员系统管理界面
71 void printHead();//打印其实界面
72 void SortList(NODE* head);//排序定车号
73 void Users(NODE* head);//用户使用界面内
74 void Book(NODE* head);//预定
75 void Change(NODE* head);//修改
76 void Abandon(NODE* head);
77 void Calculation();
78 bool cmp(USERS a,USERS b);
79 void SaveUser();
80 /****************函数申明***************/

下载地址:https://pan.baidu.com/s/1qW-E2lVdlsxloovQ6-0xhg
提取码:c9p2

参考博客:https://blog.csdn.net/u014301473/article/details/79043674

原文地址:https://www.cnblogs.com/waryan/p/12182261.html