电影院管理系统

主函数

int main()
{print1();          //欢迎界面Login();           //登陆函数return 0;
}

头文件

#pragma once
#ifndef  Cinema_h
#define  Cinema_h
typedef struct accout
{char pass[20];char name[20];struct accout* next;
}Accout, * pAccout;typedef struct ticket
{char number[15];char name[30];char cinema[30];int  time;double price;double grade;struct ticket *next;
}ticket, *pticket;void Registe(pAccout ahead);   //注册账户
void Login();          //登录函数
pAccout Account(pAccout ahead);    //读取账户信息
void loginMenu();       //登录界面
pAccout loginJudge(pAccout ahead);//登录判断 pticket Create(pticket phead);  //声明创建链表
void Menu();         //管理员菜单
void print();       //主菜单
void print1();      //主界面
void print2();      //退出界面 pticket sortMenu(pticket phead);     //排序子系统菜单
pticket sort1(pticket phead);        //价格排序
pticket sort2(pticket phead);        //时长排序
pticket sort11(pticket phead);
pticket sort12(pticket phead);void printCinema1(pticket phead);//打印电影信息
void printCinema2();//电影信息表格 pticket insertCinema(pticket phead); //新电影信息录入
pticket deleteCinema(pticket phead);   //删除信息
pticket routerCinema(pticket phead);  //信息读取
pticket reviseCinema(pticket phead); //修改电影信息
void SaveCinema(pticket phead);//信息保存 int Judge(char choice);         //布尔判断
int back(char* a);    //返回整数函数
#endif

管理员模块

登陆成功后转入此模块

负责调用管理员功能函数


void Menu()
{pticket phead;phead = (pticket)malloc(sizeof(ticket));phead->next = NULL;routerCinema(phead);char P, a[200];char choice;int bk;while (1){system("cls");print();fflush(stdin);printf("请输入指令:");scanf("%s", a);bk = back(a);switch (bk){case 1: {phead = insertCinema(phead);     //插入 system("cls");break; }case 2: {printCinema1(phead);  //查看 system("cls");break; }case 3: {phead = sortMenu(phead);    //排序 system("cls");break; }case 4: {phead = deleteCinema(phead); //删除 system("cls");break; }case 5: {phead = reviseCinema(phead); //修改 system("cls");break; }case 0: {print2();exit(1);}default: {printf("输入错误!请重新输入\n");system("pause"); }}}
}

注册模块

void Registe(pAccout ahead)
{system("cls");char name[20];char password[13];char pass[13];char q;int i;FILE* fp;
loop2:printf("\n\n\n\n");printf("\t\t\t\t账号:");scanf("%s",name);getchar();printf("\t\t\t\t密码:");i = 0;while (1){q = getch();if (q != 13){printf("*");password[i++] = q;}else {password[i] = '\0';printf("\n");break;}}printf("\t\t\t\t请确认密码:");i = 0;while (1){q = getch();if (q != 13){printf("*");pass[i++] = q;}else {pass[i] = '\0';printf("\n");break;}}if (strcmp(pass, password) == 0){fp = fopen("AdministratorsAccout.txt", "ab+");fprintf(fp, " %s %s", name, password);  //把内存中的文件输入到硬盘中fclose(fp);system("cls");printf("\n\n\n\n注册成功\n");}else goto loop2;
}

登录模块

登录函数主要用到与登录有关的三个函数

分别是

pAccout Account(pAccout ahead); //读取账户信息

void Login(); //登录函数

pAccout loginJudge(pAccout ahead);//登录判断

(int Judge(char choice); //布尔判断
int back(char* a); //返回整数函数 )

pAccout Account(pAccout ahead)
{pAccout p1, p2;FILE* fp;int m = 0;if ((fp = fopen("AdministratorsAccout.txt", "rw")) == NULL){printf("读取失败!");exit(0);return ahead;}ahead == NULL;p1 = (pAccout)malloc(sizeof(Accout));while (fscanf(fp, "%s %s", p1->name, p1->pass) == 2){//printf("%s\n",p1->name);                  //读进去了 m = m + 1;if (m == 1){ahead->next = p1;p2 = p1;p2->next = NULL;}else{p2->next = p1;p2 = p1;p2->next = NULL;}p1 = (pAccout)malloc(sizeof(Accout));}fclose(fp);return ahead;
}
void Login()
{system("cls");int bk;int bb;pAccout ahead, p1;ahead = (pAccout)malloc(sizeof(Accout));ahead->next = NULL;while (1){char a[200];char b[200];loop:loginMenu();printf("请输入:");scanf("%s", a);bk = back(a);switch (bk){case 1: {Account(ahead);ahead = loginJudge(ahead);//管理员登录 Menu();break;}case 2: {Registe(ahead);goto loop;break;}case 0: {//   printf("BUG!!!!\n");测试bug!!!!! print2();exit(0);break;}default:printf("输入错误!");Sleep(1000);system("cls");break;}if (bk != 0)break;}
}
pAccout loginJudge(pAccout ahead)
{char name1[20], pass1[20];char q;pAccout p1;int i = 0, j = 0;system("cls");printf("\n\n\n\n");
loop1:while (1){j++;p1 = ahead->next;printf("\t\t\t\t账号:");scanf("%s", name1);getchar();printf("\t\t\t\t密码:");i = 0;while (1){j++;q = getch();if (q != 13){printf("*");pass1[i++] = q;}else {pass1[i] = '\0';printf("\n");break;}}//printf("%s",pass1);密码正确(加密最初出现问题) while (p1 != NULL){if (strcmp(name1, p1->name) == 0){if (strcmp(pass1, p1->pass) == 0){printf("\n\n\t\t\t\t登录成功!");Sleep(2000);return ahead;}else{p1 = p1->next;}}else{p1 = p1->next;}if (p1 == NULL){printf("\n\n\n\n\t\t\t\t输入有误");system("cls");printf("\n\n\n\n\t\t\t\t请重新输入\n");Sleep(2000);goto loop1;break;}}if (j >= change){system("cls");printf("\n\n\n\n");printf("\t\t\t\t---------------\n");printf("\t\t\t\t请重新输入!!!!!\n");printf("\t\t\t\t---------------\n");Sleep(2000);print2();exit(0);}}return ahead;
}//登录成功
int Judge(char choice)
{while (1){fflush(stdin);choice = getchar();if (choice == 'y' || choice == 'Y')return 1;else if (choice == 'n' || choice == 'N')return 0;while (getchar() != '\n')continue;printf("输入错误!请重新输入您的选择:\n");}
}
int back(char* a)
{if (strlen(a) == 1){if (a[0] >= '0' && a[0] <= '9')return ((int)a[0] - 48);}elsereturn 10;
}

排序模块

排序模块主要用到五个函数

其中有一个总菜单,两个关于价格排序的函数,以及两个与时长排序有关的函数

pticket sortMenu(pticket phead); //排序子系统菜单
pticket sort1(pticket phead); //价格排序
pticket sort2(pticket phead); //时长排序
pticket sort11(pticket phead);
pticket sort12(pticket phead);


pticket sortMenu(pticket phead)     //排序子系统菜单
{fflush(stdin);system("cls");int bk;while (1){system("cls");char P[200];printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|        排序子系统菜单         |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|         1.按价格排序          |\n");printf("\t\t\t|         2.按时长排序          |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|         0.返回上一层          |\n");printf("\t\t\t|-------------------------------|\n\n");printf("请输入指令:");scanf("%s", P);bk = back(P);printf("%d", bk);switch (bk){case 1:phead = sort1(phead);//按价格排序 break;case 2:phead = sort2(phead);//按时长排序 break;case 0:break;default:printf("输入错误,重新输入!");Sleep(200);system("cls");break;}if (bk == 0)break;}return phead;
}
pticket sort11(pticket phead)
{pticket pTemp, pj, pj_f, pj_b;int i, j, flag;for (i = 0; i < iCount; i++)for (j = 0, flag = 0, pj = phead; j < iCount - 1 - i; j++){if (flag == 0){pj_f = pj;pj = pj->next;pj_b = pj->next;}if (flag == 1){pj_f = pj_f->next;pj_b = pj->next;}flag = 0;if (pj->price > pj_b->price){pTemp = pj->next;pj->next = pj_b->next;pj_b->next = pTemp;pTemp = pj_f->next;pj_f->next = pj_b->next;pj_b->next = pTemp;flag = 1;}}return phead;
}
pticket sort22(pticket phead)
{pticket pTemp, pj, pj_f, pj_b;int i, j, flag;for (i = 0; i < iCount; i++)for (j = 0, flag = 0, pj = phead; j < iCount - 1 - i; j++){if (flag == 0){pj_f = pj;pj = pj->next;pj_b = pj->next;}if (flag == 1){pj_f = pj_f->next;pj_b = pj->next;}flag = 0;if (pj->time < pj_b->time){pTemp = pj->next;pj->next = pj_b->next;pj_b->next = pTemp;pTemp = pj_f->next;pj_f->next = pj_b->next;pj_b->next = pTemp;flag = 1;}}return phead;
}pticket sort1(pticket phead)        //按价格排序
{system("cls");if (phead->next == NULL){printf("没有信息!\n");Sleep(500);return phead;}sort11(phead);printCinema1(phead);return phead;
}
pticket sort2(pticket phead)        //按时长排序
{system("cls");if (phead->next == NULL){printf("没有信息!\n");Sleep(1000);return phead;}sort22(phead);printCinema1(phead);return phead;
}

增加模块


pticket insertCinema(pticket phead)
{system("cls");pticket pNew, p = phead;char choice;while (p->next != NULL)p = p->next;do{pNew = (pticket)malloc(sizeof(ticket));printf("请输入序号:");scanf("%s", pNew->number);printf("请输入名称:");scanf("%s", pNew->name);printf("请输入影院:");scanf("%s", &pNew->cinema);printf("请输入时长:");scanf("%d", &pNew->time);printf("请输入价格:");scanf("%lf", &pNew->price);printf("请输入评分:");scanf("%lf", &pNew->grade);p->next = pNew;p = pNew;p->next = NULL;iCount++;printf("是否继续添加信息(Y or N):");choice = getchar();} while (Judge(choice) == 1);printf("已增加电影信息.\n");Sleep(500);SaveCinema(phead);return phead;
}

输出模块

这部分是为了输出电影的基本信息

用到两个函数

void printCinema1(pticket phead);//打印电影信息
void printCinema2();//电影信息表格

void printCinema1(pticket phead)
{system("cls");if (phead->next == NULL){printf("没有信息!\n");Sleep(500);return;}printCinema2();pticket p;p = phead->next;while (p != NULL){printf("   %-4s     ", p->number);printf("%-12s  ", p->name);printf("%-16s", p->cinema);printf("  %4d     ", p->time);printf("%.2lf   ", p->price);printf("  %.1lf   ", p->grade);printf("\n");p = p->next;}system("pause");
}
void printCinema2()
{printf("信息如下:\n");printf("-----------------------------------------------------------------------\n");printf("----序号------名称-------------影院----------时间-----价格-----评分----\n");printf("-----------------------------------------------------------------------\n");
}

保存模块

这部分是为了使修改增加等部分能保存到文件中而设立

在另外许多模块中都有使用


void SaveCinema(pticket phead)
{system("cls");FILE* fp;if ((fp = fopen("Movie.txt", "wt")) == NULL){printf("不能打开文件\n");exit(1);}pticket p;p = phead->next;while (p != NULL){fprintf(fp, "%s %s %s %d %lf %lf ",p->number, p->name, p->cinema, p->time, p->price, p->grade);  //把内存中的文件输入到硬盘中p = p->next;}fclose(fp);                   //关闭文件printf("文件已保存\n");     //成功保存,显示提示Sleep(1000);
}

读取模块

这部分是读取文件中已有的电影,并返回到头结点处。在系统初始化时被使用到。

pticket routerCinema(pticket phead)
{system("cls");FILE* fp;int m = 0;if ((fp = fopen("Movie.txt", "rw")) == NULL){printf("读取失败!");exit(1);}pticket p1, p2;p1 = (pticket)malloc(sizeof(ticket));while (fscanf(fp, "%s %s %s %d %lf %lf ",&p1->number, &p1->name, &p1->cinema, &p1->time, &p1->price, &p1->grade) == 6){m = m + 1;if (m == 1){phead->next = p1;p2 = p1;p2->next = NULL;}else{p2->next = p1;p2 = p1;p2->next = NULL;}p1 = (pticket)malloc(sizeof(ticket));}fclose(fp);printf("读取成功!");iCount = m;//Sleep(1000);return phead;
}

修改模块

用于修改某一部电影的信息

需要先输入电影的名称


pticket reviseCinema(pticket phead)
{system("cls");char P[200];int bk;char name[30];pticket pTemp;if (phead->next == NULL){printf("没有可修改的信息!\n");system("pause");return phead;}pTemp = phead->next;printf("\n\n\n\n\t\t\t请输入你要修改的电影名称:");scanf("%s", name);while (strcmp(pTemp->name, name) != 0 && pTemp->next != NULL){pTemp = pTemp->next;}if (strcmp(pTemp->name, name) == 0){while (1){system("cls");printf("\t\t\t请输入你要修改的信息:\n");printf("\t\t\t--------------------------------\t\t\t\n");printf("\t\t\t   1.修改代码      2.修改名称   \t\t\t\n");printf("\t\t\t   3.修改影院      4.修改时长   \t\t\t\n");printf("\t\t\t   5.修改价格      6.修改评分   \t\t\t\n");printf("\t\t\t          0.返回上一层          \t\t\t\n");printf("\t\t\t--------------------------------\t\t\t\n");printf("请输入您的选择:");scanf("%s", P);bk = back(P);switch (bk){case 1: {system("cls");printf("请输入新代码:");scanf("%s", pTemp->number);system("cls");printf("修改成功!");Sleep(1000);break;}case 2: {system("cls");printf("请输入新的名称:");scanf("%s", pTemp->name);system("cls");printf("修改成功!");Sleep(1000);break;}case 3: {system("cls");printf("请输入新的影院:");scanf("%s", &pTemp->cinema);printf("请输入正确的影院:");scanf("%s", &pTemp->cinema);system("cls");printf("修改成功!");Sleep(1000);break;}case 4: {system("cls");printf("请输入新的时长:");getchar();scanf("%d", &pTemp->time);system("cls");printf("修改成功!");Sleep(1000);break;}case 5: {system("cls");printf("请输入新的价格:");scanf("%lf", &pTemp->price);system("cls");printf("修改成功!");Sleep(1000);break;}case 6: {system("cls");printf("请输入新的评分:");scanf("%lf", &pTemp->grade);system("cls");printf("修改成功!");Sleep(500);break;}case 0:break;default:printf("输入错误,请重新输入");system("pause");}if (bk == 0)break;}SaveCinema(phead);return phead;}else{printf("无该电影信息!");Sleep(500);return phead;}
}

删除模块

用于删除电影信息,输入电影名称删除相关的基本信息


pticket deleteCinema(pticket phead)
{system("cls");if (phead->next == NULL){printf("\n\n\n\n\n\t\t\t\t没有可删除的信息!\n");system("pause");return phead;}char name1[30];pticket pTemp, p;printf("\n\n\n\n\t\t\t\t输入即将下线的电影名称:");scanf("%s", name1);pTemp = phead;while (strcmp(pTemp->name, name1) != 0 && pTemp->next != NULL){p = pTemp;pTemp = pTemp->next;}if (strcmp(pTemp->name, name1) == 0){if (p != phead){p->next = pTemp->next;}else{phead = pTemp->next;}printf("已删除");system("pause");}else{printf("没找到");Sleep(1000);}getchar();SaveCinema(phead);return phead;
}

系统界面

欢迎界面


void print1()
{int i;system("cls");printf("\n\n\n\n");printf("\t\t\t\t|-----------------------------------------------|\n");printf("\t\t\t\t||---------------------------------------------||\n");printf("\t\t\t\t|||                                           |||\n");printf("\t\t\t\t|||            欢迎来到影院管理系统           |||\n");printf("\t\t\t\t|||           Cinema ticketing system         |||\n");printf("\t\t\t\t|||                                           |||\n");printf("\t\t\t\t||---------------------------------------------||\n");printf("\t\t\t\t|-----------------------------------------------|\n");printf("\n\t\t\t\t系统开始启动.........\n");printf("===================================================================\r");for (i = 1; i < 70; i++){Sleep(20);printf(">");}
}

登录注册界面


void loginMenu()
{system("cls");printf("\n\n");printf("\n\t\t\t+------------------------------------+");printf("\n\t\t\t+                                    +");printf("\n\t\t\t+                1.登录              +");printf("\n\t\t\t+                2.注册              +");printf("\n\t\t\t+                0.退出              +");printf("\n\t\t\t+                                    +");printf("\n\t\t\t+------------------------------------+\n");
}

管理菜单


void print()        //主界面
{system("cls");printf("\t\t\t|===============================|\n");printf("\t\t\t|  欢迎来到影院管理系统(主菜单) |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|          1.插入信息           |\n");printf("\t\t\t|          2.查看信息           |\n");printf("\t\t\t|          3.排序信息           |\n");printf("\t\t\t|          4.删除信息           |\n");printf("\t\t\t|          5.修改信息           |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|          0.退出程序           |\n");printf("\t\t\t|===============================|\n");
}

感谢使用


void print2()
{system("cls");printf("\n\n\n\n");printf("\t\t\t|==============================|\n");printf("\t\t\t||----------------------------||\n");printf("\t\t\t|||                          |||\n");printf("\t\t\t|||         谢谢使用         |||\n");printf("\t\t\t|||                          |||\n");printf("\t\t\t||----------------------------||\n");printf("\t\t\t|==============================|\n");Sleep(2000);
}

初始文档

【小组作业】电影院管理系统相关推荐

  1. ssm电影院管理系统的设计与实现毕业设计源码241505

    电影院管理系统 摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛.因此,建立一个B/S结构的电影院管理系统:电影院管理系统的管理工作系统化.规范化,也会提高平台形 ...

  2. 基于springboot的电影院管理系统

    1.项目介绍 基于springboot的电影院管理系统拥有三种角色,介绍如下: 账户管理员:添加管理员和用户账号 普通管理员:电影管理.排片管理.活动管理.退票策略管理.影院管理.优惠券管理等 用户: ...

  3. (附源码)ssm电影院管理系统的设计与实现 毕业设计241505

    电影院管理系统 摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛.因此,建立一个B/S结构的电影院管理系统:电影院管理系统的管理工作系统化.规范化,也会提高平台形 ...

  4. JAVA电影院管理系统计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA电影院管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA电影院管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  5. SpringBoot+Vue实现前后端分离的电影院管理系统

    文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript.Vue.js .css3 开发工具:IDEA/MyEclipse/Eclipse.Visual St ...

  6. ssm电影院管理系统的设计与实现 毕业设计-附源码241505

    电影院管理系统 摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛.因此,建立一个B/S结构的电影院管理系统:电影院管理系统的管理工作系统化.规范化,也会提高平台形 ...

  7. 计算机毕业设计之java+javaweb的影院管理系统-电影院管理系统

    项目介绍  影院的需求和管理上的不断提升,影院管理的潜力将无限扩大,影院管理系统在业界被广泛关注,本网站及对此进行总体分析,将影院信息管理的发展提供参考.影院管理系统对影院发展有着明显的带动效应,尤其 ...

  8. 基于ssm的电影票订票系统/电影院管理系统/电影票务管理系统

    目 录 摘  要 ABSTRACT 第1章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 JSP技术介绍 2.2 JAVA简介 2.3 MyEclips ...

  9. 计算机毕业设计ssm电影院管理系统

    最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品 你的选题刚好在下面有,有时间看到机会给您发 1 ssm旅游景点推荐系统 2 springboot水利施工安全检测系统设 3 jsp贫困助学 ...

最新文章

  1. 人工智能和机器学习领域有哪些有趣的开源项目
  2. python一次性读取整个文件-python逐行读取文件内容的三种方法
  3. leetcode算法题--不同的二叉搜索树
  4. ppp chap 加密摘要_“网络工程师培训”基础教程:一文读懂PPP协议
  5. 单片机期末不挂科,看这一篇就够了
  6. java 反射 单例类_利用反射机制破坏单例模式
  7. Unity Editor自制工具(1)--“Editor目录栏按钮+全局搜索方法+自制Editor窗口”实现搜索与删除场景中任意名称游戏物体
  8. 极递云课显示服务器连接超时,服务器连接问题
  9. ASP .NET基本概念
  10. LoadRunner接口工作总结
  11. 决策树之ID3,C4.5
  12. 1.Prometheus 监控技术与实践 --- 云计算时代的监控系统
  13. 信息熵与二进制--信息论系列
  14. Hadoop连载系列之六:Hadoop数据仓库工具Hive
  15. 运维简历怎么写项目描述_实习的简历应该怎么写?
  16. 数据科学 IPython 笔记本 7.2 数据整理
  17. java表示自然数,将一个正整数表示为连续自然数的和
  18. 如何把excel中的多行数据按行数拆分成多个
  19. 讲台英语怎么读计算机,一种计算机教学讲台的制作方法
  20. Android Jetpack导航组件——Navigation的使用

热门文章

  1. 【将金令】1.22早评:金银扶摇而上,谨防空头突袭
  2. PAL到底是720还是768?
  3. 网络应用技术之网络层
  4. 玩转LInux系统02--虚拟机使用和常用操作
  5. 使用树莓派搭建家庭宠物监控并在B站24小时直播
  6. 爬虫修正:裁判文书网20200901更新增加登录系统
  7. 精彩推荐:云计算的未来,超市还是电厂?
  8. Confluence 6 创建你的个人空间
  9. 关于谷歌学术搜索.enw格式批量导入endnote的解决方法
  10. Fusion 360 免费正版下载教程(个人版)