#define _CRT_SECURE_NO_WARNINGS
//引入头文件
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
//管理员账号(常量,不能修改)
const char user[10]="admin";
//管理员密码(常量,不能修改)
const char password[18]="123456";
//定义film结构体,并用typedef将struct film类型改变成film类型
typedef struct film {
char filmName[30]; //电影名字
char filmTime[40]; //开演时间
int roomNumber; //放映厅号
}film;
///定义ticket结构体,并用 typedef将struct ticket类型改变成ticket类型
typedef struct ticket {
char filmName[30]; //电影名字
char filmTime[40]; //开演时间
int roomNumber; //放映厅号
int seatNumber; //座位号
}ticket;
//将ticket类型改变成DataType类型 (原来的类型还是存在的)
typedef ticket DataType;
//将film类型改变成DataType1类型
typedef film DataType1;
//这是ticket链表节点
//定义Node结构体,并用typedef将struct Node类型改变成SLNode
typedef struct Node {
DataType data; //数据域
struct Node *next; //指针域
}SLNode;
//这是film链表节点
//定义Node1结构体,并用typedef将struct Node类型改变成SLNode1
typedef struct Node1 {
DataType1 data; //数据域
struct Node1 *next; //指针域
}SLNode1;
void ListInitiate(SLNode **head);
void ListInitiate1(SLNode1 **head);
int ListLength(SLNode *head);
int ListLength1(SLNode1 *head);
int ListInsert(SLNode *head, int i, DataType x);
int ListInsert1(SLNode1 *head, int i, DataType1 x);
int ListDelete(SLNode *head, int i, DataType *x);
int ListDelete1(SLNode1 *head, int i, DataType1 *x);
int ListGet(SLNode *head, int i, DataType *x);
int ListGet1(SLNode1 *head, int i, DataType1 *x);
void Destroy(SLNode **head);
void Destroy1(SLNode1 **head);
void login(SLNode *head, SLNode1 *head1);
void ticketMenu(SLNode *head, SLNode1 *head1);
void filmMenu(SLNode *head, SLNode1 *head1);
void searchTicket(SLNode *head, SLNode1 *head1);
void searchFilm(SLNode *head, SLNode1 *head1);
void buy(SLNode *head, SLNode1 *head1);
void returnTicket(SLNode *head, SLNode1 *head1);
void changeTicket(SLNode *head, SLNode1 *head1);
void insertFilm(SLNode *head, SLNode1 *head1);
void deleteFilm(SLNode *head, SLNode1 *head1);
void changeFilm(SLNode *head, SLNode1 *head1);
int write_to_ticketCsv(int count, ticket *data);
int write_to_filmCsv(int count, film *data);
void get_from_ticketCsv(SLNode *head);
void get_from_filmCsv(SLNode1 *head1);
void ifTicket();
void ifFilm();
void change(SLNode *head, SLNode1 *head1);
void ListInitiate(SLNode **head) { //定义ticket链表初始化函数
*head = (SLNode*)malloc(sizeof(SLNode)); //动态生成一个节点
(*head)->next = NULL; //生成的新节点指向NULL
}
void ListInitiate1(SLNode1 **head) { //定义film链表初始化函数
*head = (SLNode1*)malloc(sizeof(SLNode1)); //动态生成一个节点
(*head)->next = NULL; //生成的新节点指向NULL
}
int ListLength(SLNode *head) { //求ticket链表的长度
SLNode *p = head;
int size = 0;
while (p->next != NULL) { //遍历链表元素
p = p->next;
size++; //个数加一
}
return size;
}
int ListLength1(SLNode1 *head) { //求film链表的长度
SLNode1 *p = head;
int size = 0;
while (p->next != NULL) { //遍历链表元素
p = p->next;
size++; //个数加一
}
return size;
}
int ListInsert(SLNode *head, int i, DataType x) { //定义添加ticket链表节点函数
SLNode *p, *q;
int j;
p = head;
j = -1;
while (p->next != NULL && j < i - 1) {//遍历链表元素
p = p->next;
j++;
}
if (j != i - 1) {
printf("添加电影票位置错!\n");
return 0;
}
q = (SLNode *)malloc(sizeof(SLNode)); //动态生成一个新节点
q->data = x;
q->next = p->next;
p->next = q;
return 1;
}
int ListInsert1(SLNode1 *head, int i, DataType1 x) { //定义添加film链表节点函数
SLNode1 *p, *q;
int j;
p = head;
j = -1;
while (p->next != NULL && j < i - 1) {//遍历链表元素
p = p->next;
j++;
}
if (j != i - 1) {
printf("添加电影参数错!\n");
return 0;
}
q = (SLNode1 *)malloc(sizeof(SLNode1)); //动态生成一个新节点
q->data = x;
q->next = p->next;
p->next = q;
return 1;
}
int ListDelete(SLNode *head, int i, DataType *x) { //定义删除ticket链表节点函数
SLNode *p, *s;
int j;
p = head;
j = -1;
while (p->next != NULL && p->next != NULL && j < i - 1) {//遍历链表元素
p = p->next;
j++;
}
if (j != i - 1) {
printf("删除电影票位置参数错!\n");
return 0;
}
s = p->next;
*x = s->data;
p->next = p->next->next;
free(s); //释放内存空间
return 1;
}
int ListDelete1(SLNode1 *head, int i, DataType1 *x) { //定义删除film链表节点函数
SLNode1 *p, *s;
int j;
p = head;
j = -1;
while (p->next != NULL && p->next != NULL && j < i - 1) {//遍历链表元素
p = p->next;
j++;
}
if (j != i - 1) {
printf("删除电影位置参数错!\n");
return 0;
}
s = p->next;
*x = s->data;
p->next = p->next->next;
free(s); //释放内存空间
return 1;
}
int ListGet(SLNode *head, int i, DataType *x) { //定义获取ticket链表节点的数据函数
SLNode *p;
int j;
p = head;
j = -1;
while (p->next != NULL && j < i) {//遍历链表元素
p = p->next;
j++;
}
if (j != i) {
printf("获取电影票位置参数错!\n");
return 0;
}
*x = p->data;
return 1;
}
int ListGet1(SLNode1 *head, int i, DataType1 *x) { //定义获取film链表节点的数据函数
SLNode1 *p;
int j;
p = head;
j = -1;
while (p->next != NULL && j < i) {//遍历链表元素
p = p->next;
j++;
}
if (j != i) {
printf("获取电影位置参数错!\n");
return 0;
}
*x = p->data;
return 1;
}
void Destroy(SLNode **head) { //销毁ticket链表
SLNode *p, *p1;
p = *head;
while (p != NULL) {
p1 = p;
p = p->next;
free(p1); //释放内存空间
}
*head = NULL;
}
void Destroy1(SLNode1 **head1) {//销毁film链表
SLNode1 *p, *p1;
p = *head1;
while (p != NULL) {
p1 = p;
p = p->next;
free(p1);//释放内存空间
}
*head1 = NULL;
}
void login(SLNode *head, SLNode1 *head1) { //定义登录函数
char User[10], Password[18];
int m = 3;
while (1) {
printf("========================================================================\n");
printf(" 管理员账号登录\n");
printf("========================================================================\n\n");
printf(" 账号:");
gets(User);
printf(" 密码:");
gets(Password);
if (strcmp(user, User) == 0 && strcmp(password, Password) == 0) {
system("cls"); //清屏
filmMenu(head, head1);
break;
}
else {
m--;
printf(" 输入账号或密码错误!还剩下%d次输入机会", m);
Sleep(1000);
system("cls");
}
if (m == 0) {
system("cls");
printf(" 3次输入错误!系统强制退出!");
exit(0);//程序终止
break;
}
}
}
void ticketMenu(SLNode *head, SLNode1 *head1) {//定义主页面函数
int n;
char c;
while (1) {
printf("========================================================================\n");
printf(" 功能列表\n\n");
printf(" [0]查询电影票\n");
printf(" [1]更换电影票\n");
printf(" [2]购买电影票\n");
printf(" [3]退掉电影票\n");
printf(" [4]返回主界面\n");
printf("\n========================================================================\n");
printf("请选择:");
scanf(" %c",&c);
n = c - '0';
getchar();
system("cls");
switch (n) //选项选择
{
case 0:searchTicket(head, head1); break;
case 1:changeTicket(head, head1); break;
case 2:buy(head, head1); break;
case 3:returnTicket(head, head1); break;
case 4:change(head, head1); break;
default: {
printf("输入选项有误!\n");
Sleep(1000);
system("cls"); };
}
}
}
void filmMenu(SLNode *head, SLNode1 *head1) {//定义主页面函数
int n;
char c;
while (1) {
printf("===============================================================
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于c语言开发的电影票管理系统源码+详细注释.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip基于c语言开发的电影票管理系统源码+详细注释.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于c语言开发的电影票管理系统源码+详细注释.zip (3个子文件)
code_c
ticket.csv 0B
film.csv 0B
buyTicket.c 26KB
共 3 条
- 1
资源评论
- dama08252024-04-22发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
Make程序设计
- 粉丝: 5745
- 资源: 3570
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功