**影院管理系统基本运行图**

下面是实现全部功能的函数与解析与思路
**结构体与预定义**
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
typedef struct accout
{char pass[20];char name[20];struct accout* next;
}mm, * MM;
typedef struct movie
{char number[20];//电影序号 char name[20];//电影名称 int price;//电影价格 int grade;//电影评分 int time;//电影时长 struct movie* next;
} Linklist;
基本知识点

下面基本分为三大部分
一.登录与注册
1.注册函数

void Register(MM head)//注册
{system("cls");//清屏char username[20] = "";char password[13] = "";char pass[13] = "";char q;int i;FILE* fp;printf("\n\n\n");printf("\t\t\t\t账号:");scanf("%s", username);getchar();printf("\t\t\t\t密码:");i = 0;while (1){q = getch();if (q == '\r'){password[i] = '\0';break;}else if (q == '\b'){printf("\b \b");password[i++] = q;}else{password[i++] = q;printf("*");}}printf("\n");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("d:\\课设\\accout.txt", "ab+");fprintf(fp, "%s %s", username, password);//把内存中的文件输入到硬盘之中fclose(fp);system("cls");printf("\n\n\n注册成功\n\n");system("pause");}
}

2.判断函数

MM judge(mm * head)//判断密码是否输入正确 {char name1[20] = "", pass1[20] = "";char q;MM p1;int i = 0, j = 0;system("cls");printf("\n\n\n\n");while (1){j++;p1 = head->next;printf("\t\t\t\t账号");scanf("%s", name1);getchar();printf("\t\t\t\t密码");i = 0;while (1){j++;q = getch();if (q == '\r'){pass1[i] = '\0';break;}else if (q == '\b'){printf("\b \b");pass1[i++] = q;}else{pass1[i++] = q;printf("*");}}while (p1 != NULL){if (strcmp(name1, p1->name) == 0){if (strcmp(pass1, p1->pass) == 0){printf("\n\n\t\t登录成功");system("pause");return head;}else{printf("登陆失败");system("pause");}}else{p1 = p1->next;}}if (p1 == NULL){printf("\n\n\n\n\t\t\t\t输入有误");system("cls");break;}}return head;}

3./打开读取文件之前注册的账号和密码,
放到链表里面操作

MM AccountLibrary(MM head)//打开读取注册的账号和密码,放到链表里面 { //用户数据库FILE* fp1 = fopen("d:\\课设\\accout.txt", "r");while (!feof(fp1))//feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0{MM q = (MM)malloc(sizeof(mm));fscanf(fp1, "\n%s%s\n", q->name, q->pass);q->next = head;head = q;}fclose(fp1);return head;}

4.用户或者管理员进行注册或者登录操作
以下代码为具体部分操作函数

int E=judge(head);//将E作为判断judge函数返回值的标志
if (!E)
guanliyuan();/user()
5.

5.登录主函数

void login()
{system("cls");int bk = 0;int bb = 0;MM head = 0, p1 = 0;//   char a[10]={0};head = (mm*)malloc(sizeof(mm));head->next = NULL;while (1){//  char a[200];//  char b[200];int a, b;printf_d();printf("请输入 ");scanf("%d", &a);switch (a){case 1:{//登录 printf1();printf("请输入 ");scanf("%d", &b);switch (b){case 1: {AccountLibrary(head);//在文件中查找注册过的账号和密码 int E=judge(head);                          if (!E)guanliyuan();}case 2: {//judge(head);//用户登录 AccountLibrary(head);int E=judge(head);if(!E)user();break;}case 0: {printf("再见");exit(0);break;}default:printf("输入错误");}case 2:{//注册 Register(head);break;}case 0:{//退出 printf("再见");break;}}}}
}

二.管理员系统操作
管理员系统登录之后函数

void guanliyuan()//管理员系统
{Linklist* head;head = (Linklist*)malloc(sizeof(Linklist));head->next = NULL;//创建头结点//录入信息int a = 0, b = 0;while (1){system("cls");fflush(stdin);printf2();printf("请输入指令");scanf("%d", &a);fflush(stdin);switch (a){case 1://录入信息 {head = Input();Foutput(head);system("cls");break;}case 2://修改 {head = read();change(head);Foutput(head);system("cls");break;}case 3://删除 {head = read();delete_1(head);Foutput(head);system("cls");break;}case 4://排序 {head = read();sort(head);output(head);//Foutput(head);system("cls");break;}case 5://添加 {head = read();insert(head);Foutput(head);system("cls");break;}case 6://查找 {head = read();fflush(stdin);search(head);system("cls");break;}case 7://预览preview();break;/*case 8://修改密码//砍掉的功能{MM head;head = NULL;printf("\t\t\t欢迎修改密码\n");//head=duqu_cipher(head);head = AccountLibrary(head);change_cipher(head);luru_cipher(head);break;}*/case 0://退出系统 {printf("感谢使用\n");exit(1);}default: {printf("输入错误!请重新输入");system("pause");break;}}}free(head);
}

1.录入信息

录入信息分为两部分
void Input_1(Linklist* pNew)//输入结点的值
{int i = 0, j = 0, num = 0, sum = 0;char ch = 0;fflush(stdin);//pNew = (Linklist*)malloc(sizeof(Linklist));printf("请输入电影序号\n");scanf("%s", pNew->number);fflush(stdin);//清除缓存区数据if (pNew->number[0] == '#')return;printf("请输入电影名称\n");scanf("%s", pNew->name);fflush(stdin);printf("请输入电影价格\n");scanf("%d", &pNew->price);fflush(stdin);printf("请输入电影评分\n");scanf("%d", &pNew->grade);fflush(stdin);printf("请输入电影时长\n");scanf("%d", &pNew->time);fflush(stdin);printf("\n");
}
Linklist* Input()//手动输入,录入信息链表
{Linklist* head = NULL, * pEnd, * pNew;pEnd = head = (Linklist*)malloc(sizeof(Linklist));printf("电影序号输入#时停止输入");pNew = (Linklist*)malloc(sizeof(Linklist));Input_1(pNew);while (pNew->number[0] != '#')//尾插法 {pEnd->next = pNew;pNew->next = NULL;pEnd = pNew;pNew = (Linklist*)malloc(sizeof(Linklist));Input_1(pNew);printf("\n");}Foutput(head);free(pNew);//最后一个pNew是没有数据所以释放掉return head;
}

2.修改

void change(Linklist* head)//修改
{read();int n, j, k, l, y;char m[20] = "";char i = 0;Linklist* p = head;printf("1.名称2.评分3.价格4.时长5.编号");printf("请输入要修改的项目");scanf("%d", &n);switch (n){case 1:{printf("请输入要修改的电影名称");scanf("%s", m);while (p != NULL){if (strcmp(p->number, m) == 0){printf("输入修改之后的名称");scanf("%s", &p->name);//strcpy()printf("修改完成");}p = p->next;}}case 2:{printf("请输入要修改的的电影评分");scanf("%d", &j);while (p != NULL){if (p->grade == j){printf("请输入修改之后的评分");scanf("%d", &p->grade);printf("修改成功");}}}case 3:{printf("请输入要修改的电影价格");scanf("%d", &l);while (p != NULL){if (p->price == l){printf("请输入修改之后的价格");scanf("%d", &p->price);printf("修改成功");}}}case 4:{printf("请输入要修改电影时长");scanf("%d", &k);while (p != NULL){if (p->time == k){printf("请输入修改之后的电影时长");scanf("%d", &p->time);printf("修改成功");}}}case 5:{printf("请输入要修改电影编号");scanf("%d", &y);while (p != NULL){if (p->time == y){printf("请输入修改之后的电影时长");scanf("%d", &p->time);printf("修改成功");}}}}
}

3.删除

void delete_1(Linklist* head)//删除
{Linklist* p, * p1 = head;p = p1->next;int n, i;char a[20];printf("请输入1确认删除");scanf("%d", &i);switch (i){case 1:{printf("请输入要删除的电影编号\n");scanf("%s", a);while (p != NULL){if ((strcmp(p->number, a)) == 0){printf("\t\t以下是要删除的电影信息\n\n");printf("%s\t%s\t%d\t%d\t%d\n\n", p->number, p->name, p->price, p->grade, p->time);p1->next = p->next;free(p);printf("删除完毕");}p1 = p;p = p->next;}}default:{printf("输入错误.....");break;}}
}

4.排序
这里用得是链表冒泡排序
有点难理解,附图

void sort(Linklist* head)//单链表冒泡排序
{int n;Linklist* p, * q, * p1;p1 = NULL;printf("1.按票价从低到高排序2.按评分从低到高排序3.按时长从短到长排序\n");printf("请选择排序方式");scanf("%d", &n);switch (n){case 1:{while ((head->next->next) != p1)//相当于数组第一层循环 {p = head;//一个数据 q = head->next;//下一个数据while (q->next != p1){if (q->price > q->next->price){p->next = q->next; //第一步 q->next = q->next->next;//第二步 p->next->next = q;//第三步 q = p->next;//第四补3                            }q = q->next;//接着往后走 p = p->next;}p1 = q;//相当于数组比较的下一个外层   }printf("排序完成");output(head);system("pause");break;}case 2:{while ((head->next->next) != p1)//相当于数组第一层循环 {p = head;//一个数据 q = head->next;//下一个数据while (q->next != p1){if (q->grade > q->next->grade){p->next = q->next; //第一步 q->next = q->next->next;//第二步 p->next->next = q;//第三步 q = p->next;//第四补3                          }q = q->next;//接着往后走 p = p->next;}p1 = q;//相当于数组比较的下一个外层   }printf("排序完成");output(head);break;}case 3:{while ((head->next->next) != p1)//相当于数组第一层循环 {p = head;//一个数据 q = head->next;//下一个数据while (q->next != p1){if (q->time > q->next->time){p->next = q->next; //第一步 q->next = q->next->next;//第二步 p->next->next = q;//第三步 q = p->next;//第四补3                          }q = q->next;//接着往后走 p = p->next;}p1 = q;//相当于数组比较的下一个外层   }printf("排序完成");output(head);break;}}
}

5.添加

void insert(Linklist* head)//添加新的电影信息
{Linklist* p = head, * p1;//p=p1->next;int n, i;printf("请输入1进行添加信息操作");scanf("%d", &n);switch (n){case 1:{printf("请输入要插入信息前面的电影编号");scanf("%d", &i);while (p != NULL){if (atoi(p->number) == i){p1 = (Linklist*)malloc(sizeof(Linklist));//开辟新的空间printf("请输入电影编号");scanf("%s", p->number);printf("请输入电影名称");scanf("%s", p->name);printf("请输入电影价格");scanf("%d", &p->price);printf("请输入电影评分");scanf("%d", &p->grade);printf("请输入电影时长");scanf("%d", &p->time);printf("电影信息添加完毕");p1->next = p->next;// p->next = p;}p = p->next;//遍历       }}default:{printf("输入错误。。。。");}}Foutput(head);
}

*6.查找

void search(Linklist* head) //查询
{Linklist* p = head;//int n;char a[20] = "";printf("请输入要查询电影编号");scanf("%s", a);while (p != NULL){if ((strcmp(p->number, a)) == 0){printf("编号\t名称\t价格\t评分\t时长\n");printf("%s\t%s\t%d\t%d\t%d\t\t", p->number, p->name, p->price, p->grade, p->time);break;}p = p->next;}system("pause");
}

三.用户操作系统
用户登录主函数

void user()
{fflush("stdin");Linklist* head;head = (Linklist*)malloc(sizeof(Linklist));head->next = NULL;int n;printf3();printf("请输入要选择的操作");scanf("%d", &n);system("pause");char c[20] = "";// printf("")switch (n){case 1:{printf("\t\t\t欢迎预览\n");preview();system("pause");break;}case 2:{printf("\t\t欢迎来到查询系统\n");head = read();fflush(stdin);search(head);system("cls");break;}case 3:{printf("\t\t\t欢迎来到购票系统\n");head = read();fflush(stdin);Linklist* p = head;//p = (Linklist*)malloc(sizeof(Linklist));printf("\t\t\t请输入要购买电影的编号\n");scanf("%s", c);//printf("ggdggd");while (p){if ((strcmp(p->number, c)) == 0){printf("*****************************");printf("|--------电影名字%s----------|\n", p->name);printf("|--------电影价格%d----------|\n", p->price);printf("|--------电影时间%d----------|\n", p->time);printf("|--------恭喜购票成功--------|\n");printf("|----------------------------|\n");printf("*****************************");system("pause");break;}p = p->next;}break;}case 4:{printf("感谢使用");exit(1);}}
}

预览

void preview()
{printf("\t\t***********************************************\n");printf("\t\t| 电影名称:Captain America       价格: 35     |\n");printf("\t\t| 评分:9                时长: 135             |\n");printf("\t\t***********************************************\n");printf("\t\t***********************************************\n");printf("\t\t| 电影名称:The Shawshank Redemption   价格:36 |\n");printf("\t\t| 评分:8                时长:126              |\n");printf("\t\t***********************************************\n");printf("\t\t***********************************************\n");printf("\t\t| 电影名称:Citizen Kane Redemption    价格:34  \n");printf("\t\t| 评分:10                时长:123             |\n");printf("\t\t***********************************************\n");printf("\t\t***********************************************\n");printf("\t\t| 电影名称:Casablanca            价格:32      |\n");printf("\t\t| 评分:6                时长:157              |\n");printf("\t\t***********************************************\n");printf("\t\t***********************************************\n");printf("\t\t| 电影名称:The Godfather Part II    价格:31   |\n");printf("\t\t| 评分:5                时长:134              |\n");printf("\t\t***********************************************\n");
}

四.文件操作

void Foutput(Linklist* head)//电影信息录入文件
{Linklist* pt = head;FILE* fp;pt = pt->next;fp = fopen("d:\\课设\\dgw.txt", "wt+");if (fp == NULL){printf("文件打开失败");exit(1);}while (pt){fprintf(fp, "%s %s %d %d %d", pt->number, pt->name, pt->price, pt->grade, pt->time);pt = pt->next;}fclose(fp);
}

五.打印函数实现

void printf2()
{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|          6.查询               |\n");printf("\t\t\t|          7.预览               |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|          0.退出程序           |\n");printf("\t\t\t|===============================|\n");printf("\t\t\t请选择你需要的操作\t\t");
}//管理员系统菜单
void printf3()//用户登录界面
{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|          0.退出程序           |\n");printf("\t\t\t|===============================|\n");
}
void printf_d()
{system("cls");printf("\n\n\n\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★         0.退出             ☆\n");printf("\t\t\t☆                            ★\n");printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");
}//登录
void printf1()//不同用户登录
{system("cls");printf("\n\n\n\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||         0.退出             ||\n");printf("\t\t\t||                            ||\n");printf("\t\t\t********************************\n");
}

影院管理系统(C语言程序设计)相关推荐

  1. c语言程序设计家庭收支类,家庭支出管理系统—c语言程序设计

    家庭支出管理系统-c语言程序设计 (38页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 程序设计报告( 2015 / 2016 学年 ...

  2. 家庭支出系统c语言,家庭支出管理系统—c语言程序设计讲述.doc

    家庭支出管理系统-c语言程序设计讲述 程序设计报告 ( 2015 / 2016 学年 第 二 学期) 题 目:家庭支出管理系统电子科学与工程 指 导 教 师 许棣华 指 导 单 位 日 期 2016年 ...

  3. 列车时刻管理c语言程序设计,列车时刻管理系统C语言程序设计(源代码).doc

    列车时刻管理系统C语言程序设计(源代码) 问题分析 随着社会的不断发展,人们在交通方式的选择上有了不同以往的选择,以前的靠人力,畜力,以及摩托车,现在人们的选择更多的会放在了汽车,飞机还有列车上.每当 ...

  4. c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...

    学生成绩管理系统C语言程序设计实践报告 (此文档为word格式,下载后您可任意编辑修改!) 中南大学 C语言程序设计实践报告 题 目 学 生 成 绩 管 理 系 统 学生姓名 木雕小象 指导教师 × ...

  5. c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))

    C语言程序设计--教室管理系统(源代码) 非常有用的. #include #include #include #define szSTR 64 #define fileDB "c:\\con ...

  6. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

  7. 学生信息管理系统c 语言程序设计报告,C语言程序设计报告(学生信息管理系统)[1].txt...

    C语言程序设计报告(学生信息管理系统)[1].txt C CCCC * * * * * * * * * * * * * * * * .3 3 .4 1. .4 2. 4 3. 4 4. .5 飺 .5 ...

  8. c语言程序设计超市会员卡管理系统,C语言程序设计课程设计报告超市水果信息管理系统...

    <C语言程序设计课程设计报告超市水果信息管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计课程设计报告超市水果信息管理系统(28页珍藏版)>请在人人文库网上搜索. 1. ...

  9. c语言程序设计 学院工资管理系统,学院教职工工资管理系统C语言程序设计.pdf...

    学院教职工工资管理系统 语言程序设计 C #include #include #include #defineN 100 intn;/*职工总数*/ structteacher { charname[ ...

  10. c语言程序设计 学生档案管理系统,C语言程序设计--班级档案管理系统.doc

    PAGE PAGE 2 C语言程序设计 课程名称 : C语言课程设计 设计题目: 班级档案管理系统 学生姓名: 学 号: 专业班级: 指导老师: 数学与信息技术学院 2011 年 11 月1日 说 明 ...

最新文章

  1. Laravel7使用Auth进行用户认证
  2. java opentsdb 链接 池_如何使用tCollector通过Java在OpenTSDB中添加数据
  3. SCM基础之过程描述
  4. bootstrap3 中文手册 [下载]
  5. 【codevs1079】回家
  6. SVO: Fast Semi-Direct Monocular Visual Odometry
  7. xmind试用模式会过期吗_汽车发动机机油「保质期」概念解析:机油真的会过期吗?...
  8. 高等数学复盘 | 第七册上册第一章——第六章思维导图梳理(复习专用)
  9. vscode的pip安装
  10. C++ class 和 struct 构造函数
  11. ctrlaltdel命令手册
  12. print的常用写法(python)
  13. GlassFish的使用方法
  14. 【软件】网梭浏览器v2.4.7 思路
  15. matlab输入符号怎么打,matlab 输入符号
  16. 开篇词 | 算法是程序的“灵魂”
  17. 在Unity3D中开发的Rim Shader
  18. ctp linux 查询死循环,CTP行情接入常见的问题记录
  19. 计算机系统的备份与还原实验报告,数据备份与数据恢复实验报告
  20. 世界国家名与英文名【json】

热门文章

  1. CSS滤镜和CSS精灵
  2. idea 鼠标变量_IDEA在debug时修改变量值
  3. 云端搭建Linux学习环境 【课堂笔记】
  4. 在家也能健身(01):肱二头肌
  5. 理工男的生日祝福浪漫(送女友)
  6. fileno函数与ftruncate函数
  7. Android 高德地图在华为手机上获取位置信息失败
  8. kafka副本机制详解
  9. git clone出错:Failed to receive SOCKS4 connect request ack.
  10. 李行健教授畅谈成语规范