#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)
#pragma warning(disable:6385)
#pragma warning(disable:6054)
#pragma warning(disable:28182)
#pragma warning(disable:6011)
#pragma warning(disable:6308)
#pragma warning(disable:28183)
#pragma warning(disable:6387)
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<标头.h>
extern FILE* fp1;
extern FILE* fp2;
extern FILE* fp3;
extern FILE* fp4;
extern FILE* fp5;//Ticket.txt
extern FILE* fp6;//NumOfSite.txt
extern int NumOfManager;
extern int NumOfPassenger;
extern int NumOfSite;
void ManagerLog()//员工登录注册界面
{
system("cls");
printf(" 欢迎使用后台管理\n");
printf("**************************\n");
printf("*** 1.登录已有账户 ***\n");
printf("*** 2.注册新账户 ***\n");
printf("*** 3.返回上一级 ***\n");
printf("**************************\n");
int choose = _getch();
switch (choose)
{
case 49:login(); break;
case 50:logon(); break;
case 51:main();
}
}
void BackStage()//后台管理界面
{
system("cls");
printf(" 请选择您需要的服务\n");
printf("************************\n");
printf("*** 1.站点操作 ***\n");
printf("*** 2.票务操作 ***\n");
printf("*** 3.返回上一级 ***\n");
printf("*** 按esc退出程序 ***\n");
printf("************************\n");
int choose = _getch();
switch (choose)
{
case 49:site(); break;
case 50:ModifyNum(); break;
case 51:ManagerLog(); break;
case 27:exit(0);
}
}
void logon()//管理员账户注册
{
if ((fp3 = fopen("NumOfManager.txt", "r")) == NULL)
{
fp3 = fopen("NumOfManager.txt", "w");
fclose(fp3);
}
fp3 = fopen("NumOfManager.txt", "rb");
fseek(fp3, 0, SEEK_END);//将文件指针移到文件末尾
int len = ftell(fp3);//检查文件长度
fseek(fp3, 0, SEEK_SET);//将文件指针移到文件开头
if (len == 0)//第一个员工创建账号
{
char key[20];//用于存储再次输入的密码
system("cls");
struct manager* manager = (struct manager*)malloc(sizeof(struct manager));
printf("请创建一个账号\n");
scanf("%s", &manager[0].id);
printf("请输入您的密码\n");
scanf("%s", &manager[0].password);
printf("请确认您的密码\n");
scanf("%s", &key);
if (strcmp(manager[0].password, key) != 0)//检验两次输入密码是否相同
{
int flag = 1;
while (flag)
{
system("cls");
printf("您输入的两次密码不同,请重新输入密码\n");
scanf("%s", &manager[0].password);
printf("请确认您的密码");
scanf("%s", key);
if (strcmp(manager[0].password, key) == 0)
flag = 0;
}
}
NumOfManager++;
fp3 = fopen("NumOfManager.txt", "w");//创建NumOfManager.txt
fprintf(fp3, "%d", NumOfManager);//将管理人员人数写入文件中
fclose(fp3);
fp1 = fopen("Manager.txt", "wb");
fwrite(manager, sizeof(struct manager), NumOfManager, fp1);//将管理人员结构体写入文件
fclose(fp1);
free(manager);
system("cls");
printf("创建账户成功\n按任意键返回登录界面");
_getch();
ManagerLog();
}
else//后续员工创建账号
{
system("cls");
fp3 = fopen("NumOfManager.txt", "r");
fscanf(fp3, "%d", &NumOfManager);//从文件读取管理人员人数
fclose(fp3);
struct manager* manager = (struct manager*)malloc(sizeof(struct manager) * NumOfManager);
fp1 = fopen("Manager.txt", "rb");
fread(manager, sizeof(struct manager), NumOfManager, fp1);//从文件中读取管理人员结构体
fclose(fp1);
manager = (struct manager*)realloc(manager, sizeof(struct manager) * (NumOfManager + 1));
//管理人员结构体扩容一个单位
char key[20];//用于存储再次输入的密码
printf("请创建一个账号\n");
scanf("%s", &manager[NumOfManager].id);
for (int i = 0; i < NumOfManager; i++)
{
if (strcmp(manager[NumOfManager].id, manager[i].id) == 0)
{
int flag = 1;
while (flag)
{
system("cls");
printf("已有账号,请重新输入");
scanf("%s", &manager[NumOfManager].id);
for (int n = 0; n < NumOfManager; n++)
{
if (strcmp(manager[NumOfManager].id, manager[n].id) == 0)
break;
if (n == NumOfManager - 1)
flag = 0;
}
}
break;
}
}
printf("请输入您的密码\n");
scanf("%s", &manager[NumOfManager].password);
printf("请确认您的密码\n");
scanf("%s", &key);
if (strcmp(manager[NumOfManager].password, key) != 0)//检验两次输入密码是否相同
{
int flag = 1;
while (flag)
{
system("cls");
printf("您输入的两次密码不同,请重新输入密码\n");
scanf("%s", &manager[NumOfManager].password);
printf("请确认您的密码");
scanf("%s", key);
if (strcmp(manager[NumOfManager].password, key) == 0)
flag = 0;
}
}
printf("创建账户成功\n按任意键返回登录界面");
NumOfManager++;
fp3 = fopen("NumOfManager.txt", "w");
fprintf(fp3, "%d", NumOfManager);//将管理人员人数写入文件中
fclose(fp3);
fp1 = fopen("Manager.txt", "wb");
fwrite(manager, sizeof(struct manager), NumOfManager, fp1);//将管理人员人数写入文件中
fclose(fp1);
free(manager);
_getch();
system("cls");
ManagerLog();
}
}
void login()//账户登录
{
char id[20];
char password[20];
system("cls");
printf("请输入账号\n");
scanf("%s", &id);
printf("请输入密码\n");
scanf("%s", &password);
if ((fp3 = fopen("NumOfManager.txt", "r")) == NULL)
{
fp3 = fopen("NumOfManager.txt", "w");
fclose(fp3);
}
fp3 = fopen("NumOfManager.txt", "rb");
fseek(fp3, 0, SEEK_END);//将文件指针移到文件末尾
int len = ftell(fp3);//检查文件长度
fseek(fp3, 0, SEEK_SET);//将文件指针移到文件开头
if (len == 0)
{
system("cls");
printf("您输入的账号或密码有误按任意键重新输入,ESC返回");
int esc = _getch();
if (esc == 27)
{
ManagerLog();
}
else
{
login();
}
}
fp3 = fopen("NumOfManager.txt", "r");
fscanf(fp3, "%d", &NumOfManager);//从文件读取管理人员人数
fclose(fp3);
struct manager* manager = (struct manager*)malloc(sizeof(struct manager) * NumOfManager);
fp1 = fopen("Manager.txt", "rb");
fread(manager, sizeof(struct manager), NumOfManager, fp1);//从文件中读取管理人员结构体
fclose(fp1);
int flag = 1;
while (flag)
{
for (int i = 0; i < NumOfManager; i++)
{
if (strcmp(id, manager[i].id) == 0)
{
for (int m = 0; m < NumOfManager; m++)
{
if (strcmp(password, manager[m].password) == 0)
{
flag = 0;
break;
}
}
break;
}
}
if (flag == 1)
{
system("cls");
printf("您输入的账号或密码有误\n");
printf("按任意键重新输入,按ESC返回");
int esc = _getch();
if (esc == 27)
ManagerLog();
system("cls");
printf("请输入账号\n");
scanf("%s", &id);
printf("请输入密码\n");
scanf("%s", &password);
}
}
BackStage();
}
void site()
{
system("cls");
printf(" 请选择您需要的操作\n");
printf("************************\n");
printf("*** 1.查看站点 ***\n");
printf("*** 2.添加站点 ***\n");
printf("*** 3.修改站点 ***\n");
printf("*** 4.删除站点 ***\n");
printf("*** 5.返回上一级 ***\n");
printf("*** 按esc退出程序 ***\n");
printf("************************\n");
int key = _getch();
switch (key)
{
case 49:view(); break;
case 50:AddSite(); break;
case 51:modify(); break;
case 52:delet(); break;
case 53:BackStage(); break;
}
}
void AddSite()
{
if ((fp6 = fopen("NumOfSite.txt", "r")) == NULL)
{
fp6 = fopen("NumOfSite.txt", "w");
fclose(fp6);
}
fp6 = fopen("NumOfSite.txt", "rb");
fseek(fp6, 0, SEEK_END);//将文件指针移到文件末尾
int len = ftell(fp6);//检查文件长度
fseek(fp6, 0, SEEK_SET);//将文件指针移到文件开头
if (len == 0)//第一次添加站点
{
NumOfSite = 1;
struct ticket* ticket = (struct ticket*)malloc(sizeof(struct ticket) * NumOfSite);
ticket[0].no = NumOfSite;
system("cls");
printf("请输入起始站\n");
scanf("%s", &ticket[0].start);
printf("请输入终点站\n");
scanf("%s", &ticket[0].destination);
printf("请输入出发时间\n");
scanf("%s", &ticket[0].StartTime);
printf("请输入到达时间\n");
scanf("%s", &ticket[0].ArriveTime);
printf("请输入车票张数\n");
scanf("%d", &ticket[0].RestOfTicket);
fp6 = fopen("NumOfSite.txt", "w");
fprintf(fp6, "%d", NumOfSite);//将站点数写入文件中
fclose(fp6);
fp5 = fopen("Ticket.txt", "wb");
fwrite(ticket
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
资源推荐
资源详情
资源评论
收起资源包目录
C语言项目实践——火车售票系统.zip (10个子文件)
ABT-code
售票服务.cpp 17KB
.gitattributes 2KB
后台管理.cpp 18KB
火车售票系统.vcxproj.filters 1KB
火车售票系统.sln 1KB
主菜单.cpp 739B
火车售票系统.vcxproj 7KB
.gitignore 6KB
标头.h 617B
火车售票系统.exe 15KB
共 10 条
- 1
资源评论
普通的一个普通猿
- 粉丝: 1457
- 资源: 1698
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功