课设影院信息管理系统

    课设影院信息管理系统

一.影院具体信息介绍:

1.人员分类:
负责人,管理者,售票者,顾客
2.人员涉及的功能:
负责人:注册管理者和售票者账号信息
管理者:管理影片信息,增删修改
售票者:查询影片信息
顾客:排序票价,查阅电影信息,统计票价信息

二.代码分块功能

调用的函数:

/*页面显示函数*/ 
void menu();//系统主页面                                        
void menu1();//管理者系统的页面显示                            
void menu2();//售票人员的页面显示                                
void menu3();//顾客人员的页面显示 
void menu4();//负责人员的页面显示 
void ad(); 
/*用户的登录和注册*/ 
void Input();//登录注册 
int  Input_login();//登录 
/*文件函数*/ 
void save(film *head);//文件保存 
film *read();//文件读写 
/*链表创建增删改查*/ 
film *creat_Film();//链表的创建 
void Delete(film *head);//链表的删除 
void add_film(film *head);//链表的添加
void change(film *head);//链表的修改 
void output(film *head);//遍历子函数 
void output_film();//遍历主函数 
/*链表查询*/
void search(film *head);//单项查询子函数,两种查询方式 
void search_film();//单项查询主函数 
void Search_film();//组合查询 
/*链表统计*/ 
void statistic(film *head);//统计票价 
void sort(film *head);//按票价排序 
int len(film *head);//求链表长度

/*影院不同类型人员函数*/
void charge(); //影院负责人员 
void manger();//影院管理人员 
void sale_people();//影院售票人员
void buy_people();//顾客人员 

主要功能代码块:
1.注册用户信息

//登录注册 
void Input()
{
	system("read");                        //暂停 
	system("cls");
	users a,b;//结构体 The_users 重命名定义
	FILE *fp;
	char temp[20];
	printf("\t\t\t\t  -------------欢迎来到注册界面!-----------------\n");
	                  
	Sleep(1000);
	printf("\t\t\t\t        请输入用户名:");
	scanf("\t\t\t\t\t\t\t%s",a.id);
	printf("\t\t\t\t         请输入密码:");
	scanf("\t\t\t\t\t\t\t%s",a.pwd);
	printf("\t\t\t\t         请确认密码:");
	scanf("\t\t\t\t\t\t\t%s",temp);
	do
	{
	 	if(!strcmp(a.pwd,temp)){
	 		fp = fopen("D:\\user.text","a");
	        fwrite(&a, sizeof(struct The_users), 1, fp);
			printf("\t\t\t\t        账号注册成功,请登录!\n"); 
	        Sleep(500);
	        fclose(fp);
	        system("read");                        //暂停 
			system("cls");
			return;
		}else
		{
		 	printf("\t\t\t\t        两次密码不匹配!请重新输入!\n");
	        scanf("\t\t\t\t\t\t%s",a.pwd);
	        printf("\t\t\t\t        请确认密码:\n");
	        scanf("\t\t\t\t\t\t%s",temp);
		}
	}while(1);
}

2.用户登录信息:

int  Input_login()
{
	system("read");                         
	system("cls");
    users a,b;//定义结构体The_users别名
    FILE *fp;
    printf("\t\t\t\t   -----------  欢迎来到登录界面!   -----------------\n");
    Sleep(1000);
    fp = fopen("D:\\user.text","r");
    fread(&b, sizeof(struct The_users), 1, fp);
    printf("\t\t\t\t		请输入账号:");
    scanf("\t\t\t\t\t\t\t\t%s",a.id);   
    while (1)
   {   
       if (strcmp(a.id, b.id)==0)         //如果有此用户名
       {
           break;       
       }
       else 
       {
            if (!feof(fp))  //如果文件没有读完                            
        	{
               fread(&b, sizeof(struct The_users), 1, fp);
            }
            else
           {
               printf("\t\t\t\t                    此用户名不存在,请重新输入!\n");
			   Sleep(500); 
               fclose(fp);  
			   return 0;              
           }
       }
    }
    printf("\t\t\t\t		请输入密码:");
   	scanf("\t\t\t\t\t\t\t\t\t%s",a.pwd); 		
	do
	{   
        if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/
		{  
		    fclose(fp);
		    printf("\t\t\t\t		登录成功,欢迎使用!");
		    Sleep(500);
		    return 1;
		}
	   else  
	   {    printf("\t\t\t\t		密码不正确!请重新输入密码:");
	   		scanf("\t\t\t\t\t\t\t\t%s",&a.pwd);         
	   }
    }while(strcmp(a.pwd, b.pwd)==0);   
}

3.文件保存

//文件的保存 
void save(film *head)
{
	film *p;
	FILE *fp;
	char str[40];
	printf("\n\t\t\t\t		请输入要保存的文件名:");
	scanf("\t\t\t\t\t\t\t\t\t\t\t\t%s",str);
	if((fp=fopen(str,"wt"))==NULL)
	{
		printf("\t\t\t\t		写文件出错,按任意键退出!");
		getchar();
		exit(1);
	}
	for(p=head->next;p!=NULL;p=p->next)// 
	{
		fprintf(fp,"%s\t%s\t%d\t%.2lf\t ",p->num,p->name,p->money,p->score);
	}
	printf("\n\t\t\t\t		文件已成功保存,按任意键返回!\n");
	getchar();
	fclose(fp);
	return;
}

4.文件读写

//文件的读写 
 film *read()
{
	film *ghead=NULL,*r=NULL,*p;
	FILE *fp;
	char name[40];
	printf("\n\t\t\t\t  请输入要打开的文件名:");
	scanf("%s",name);
	if((fp=fopen(name,"rt"))==NULL)
	{
		printf("\n\t\t\t\t  写文件出错,按任意键退出!\n");
		printf("\t\t\t\t  请创建链表\n"); 
		system("read"); 
		return 0;
	}
	while(!feof(fp))
	{
		p=(film *)malloc(sizeof(film));                                       //开辟空间 
		fscanf(fp,"%s\t%s\t%d\t%lf ",p->num,p->name,&p->money,&p->score);   
		if(ghead==NULL)
		{
			ghead=p;
			ghead->next=NULL;
		}
		else
		{
			r->next=p;
			p->next=NULL;
		}
		r=p;
	}
	fclose(fp);
	printf("\n\t\t\t\t  文件信息正确读入,按任意键退出!\n");
	getchar();
	return ghead;
}

5.影片信息录入

//录入信息 
 film *creat_Film()
 {
	int n,i;
	film *head, *node, *end;
	head=(film*)malloc(sizeof(film)); //开辟空间 ,初始化头指针 
	end=head;
	do
	{
		node=(film*)malloc(sizeof(film));//每读入一个数,都会创建一个新的空间 
		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\t\t      ");
	    scanf("%s",node->num);
	
    	printf("\t\t\t\t  *               录入电影名称                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%s",node->name); 
	
    	printf("\t\t\t\t  *               录入电影票价                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%d",&node->money); 
    	
    	printf("\t\t\t\t  *               录入电影评价                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%lf",&node->score); 
    	printf("\t\t\t\t  ---------------【录入电影信息完成】-----------*\n");
		printf("\t\t\t\t  ***********************************************\n");
		end->next=node; //尾插新节点 
		end=node;      //指向尾结点 
		printf("\t\t\t\t  *               1.是\t2.否                    *\n");
		printf("\t\t\t\t  *               请输入是否要录入数据:         *\n");
		printf("\t\t\t\t\t\t      ");
		scanf("%d",&n);
	}while(n==1);
	end->next=NULL;//尾节点的指针域指向空 
	return head;
}

6.影片信息的删除

//删除信息 
void Delete(film *head)
{
	int n;
	char i[20];
	film *p,*p1=head;
	p=p1->next;
	printf("\t\t\t\t  *               请输入 1 进行删除操作:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  *               请输入要删除的编号:");
			scanf("%s",i);
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0) //比较要删除的编号与p所指的编号 
				{
					printf("\t\t\t\t  *               【以下是你要删除的电影信息】\n\n");
					printf("\t\t\t\t  *%s\t%s\t%d\t%.2lf\t\n",p->num,p->name,p->money,p->score);
					p1->next=p->next; //将p所指的下一个结点的地址赋值给上一个结点 
					free(p); //释放空间 
					printf("\t\t\t\t  -----------------【已经安全删除】--------------\n");
				}
				p1=p;
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  ------------【输入非法!请重新输入】------------\n");
			break;
	}
}

7.影片信息的添加

//添加电影信息
void add_film(film *head)
{
	int n;
	char i[20];
	film *p=head,*p1;
	printf("\t\t\t\t  *               请输入 1 进行插入操作:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  *               请输入编号(会插入在其后):");
			scanf("%s",i);
			while(p!=NULL)
			{
				
				if(strcmp(p->num,i)==0)//比较要添加处的编号与p所指的编号
				{
					p1=(film*)malloc(sizeof(film));  //开辟空间 
	            	printf("\t\t\t\t  *               输入电影编号                  *\n");
					printf("\t\t\t\t\t\t      ");
				    scanf("%s",p1->num);
				
			    	printf("\t\t\t\t  *               录入电影名称                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%s",p1->name); 
				
			    	printf("\t\t\t\t  *               录入电影票价                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%d",&p1->money); 
			    	
			    	printf("\t\t\t\t  *               录入电影评价                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%lf",&p1->score);

                    printf("\t\t\t\t  *添加电影信息完成                              *\n");
                    p1->next=p->next;//将p点的下一个结点的地址赋值给新建的结点的next 
                    p->next=p1;//将新节点的地址值赋值给p点所指的next 
				}
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  ---------【输入非法!请重新输入】--------------\n");
			break;
	}
}

8.影片信息的修改

//修改电影信息
 void change(film *head)
{
	int n,j;
	film *p;
	char i[20];
	printf("\t\t\t\t  1.编号\t2.票价\n");
	printf("\t\t\t\t  请输入你要修改的项目:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			p=head;
			printf("\t\t\t\t  请输入要修改的编号:");
			scanf("%s",i);
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0)//比较读入的编号与想要修改的编号 
				{
					printf("\t\t\t\t  输入想修改为的编号:");
					scanf("%s",p->num);
					printf("\t\t\t\t  ------------【修改完成】----------------------\n");
				}
				p=p->next;
			}
			break;
			
		case 2:
			p=head;
			printf("\t\t\t\t  请输入要修改的编号:");
			scanf("%s",&i);
			printf("\t\t\t\t  请输入要修改的票价:");
			scanf("%d",&j);
			while(p!=NULL)
			{
				if(p->money==j&&strcmp(p->num,i)==0)//比较想要修改的价格和修改的编号是否一致 
				{
					printf("\t\t\t\t  输入想修改为的票价是:");
					scanf("%d",&p->money);
					printf("\t\t\t\t  ------------【修改完成】----------------------\n");
				}
				p=p->next;
			}
			break;
	}
}

9.链表的遍历输出

 void output(film *head)
{
	film *p=head;
	//system("clear");
	printf("\t\t\t\t  *********************************************************\n");
	printf("\t\t\t\t  *\t\t   影院影片列表     \t\t\t*\n");
	printf("\t\t\t\t  ********************************************************\n");
	printf("\t\t\t\t  *编号\t名称\t票价\t评价\t*\n");
	while(p!=NULL)  //遍历链表 
	{
		
		printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->ame,p->money,p->score);
		p=p->next;//每次指向下一个 
	}
	printf("\t\t\t\t  *********************************************************\n\n");
}
void output_film()
{
	film *q;
 	q=read();//打开文件,读出所储存的数据,重新创建一个链表并返回头指针 
	output(q);
	printf("\t\t\t\t  ------------------【影片遍历完成】-----------------------\n");
}

10.链表信息单项查询

//单项查询 
void search(film *head)
{
	int n,j,flag=0;
	char i[40];
	film *p=head;
	printf("\t\t\t\t  1.编号\t2.名称\t3.票价\t4.评价\t\n");
	printf("\t\t\t\t   请输入你要查询的项目:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  请输入编号:");
			scanf("%s",i);
			printf("\t\t\t\t  1.编号\t2.名称\t3.票价\t4.评价\t\n");
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0)                                 
				{
					printf("\t\t\t\t		*%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				}
				p=p->next;
			}
			break;
			
		case 2:
			printf("\t\t\t\t		请输入名称:");
			scanf("\t\t\t\t\t\t%s",&i);
			printf("\t\t\t\t		1.编号\t2.名称\t3.票价\t4.评价\t\n");
			while(p!=NULL)
			{
				
				if(strcmp(p->name,i)==0)
				{
					printf("\t\t\t\t		*%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
					flag=1;
				}
				p=p->next;
			}
			if(flag==0)
			printf("\t\t\t\t		*输入信息错误*\n");
			break;
	}
}

11.信息组合查询

//组合查询主函数 
void search_film()
 {
 	film *q;
 	q=read();
	search(q);
	printf("\t\t\t\t  ----------------【定向查询完成】------------------\n");
 } 
 
 //组合查询 
 void Search_film() 
 {
 	film *p;
 	int flag=0;
 	p=read();
 	char i[100],a[100];
 	printf("\t\t\t\t		请输入编号:");
	scanf("%s",i);
	printf("\n\t\t\t\t      请输入名称:");
	scanf("%s",a);
	printf("\t\t\t\t		1.编号\t2.名称\t3.票价\t4.评价\t\n");
	while(p!=NULL)
	{
		if(strcmp(p->name,a)==0&&strcmp(p->num,i)==0)
		{
			printf("*\t\t\t\t\t\t%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
			flag=1;
		}
		p=p->next;
	}
	if(flag==0)
	printf("\t\t\t\t		*输入信息错误*\n");
 }

12.链表信息统计

//统计 
void statistic(film *head)                    
{
	int count1=0,count2=0,n;
	film *p;
	printf("\t\t\t\t  1.票价50元以下\t2.票价票价50元以下,评分5.0以上\n");
	printf("\t\t\t\t  请选择统计方式:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			p=head;
			while(p!=NULL)
			{
				if(p->money<50)
				count1++; 
				p=p->next;
			}
			printf("\t\t\t\t  票价50元一下的有%d种\n",count1);
			break;
		case 2:
		    p=head;
			while(p!=NULL)
			{
				if(p->money<50&&p->score>5.0)
				count2++;
			  	p=p->next;
			}
			printf("\t\t\t\t  票价50元一下的,评分5.0以上的有%d种\n",count2);
			break;
		default :
			printf("\t\t\t\t  输入类型错误,结束\n");
			break; 
	}
}

13.链表排序

//求链表长度 
int len(film *head)
{
	film *p;
	int i;
	p=head->next;
	for(i=1;p!=NULL;i++)//当p不为NULL时,i++ 
	{
		p=p->next;
	}
	return i;//返回链表的长度 
}
//链表的排序 
void sort(film *head)                    //采用了冒泡排序 
{
	
	int n,j,h,ii,num;
	char i;
	film *p,*q,*head1;
	head1 = (film *)malloc(sizeof(film));//初始化头指针,创建头节点 
	head1->next = head;
	num=len(head1);//接收链表的长度

	printf("\t\t\t\t  1.票价从低向高\t2.票价从高到低\n");
	printf("\t\t\t\t  请选择排序方式:");
	scanf("%d",&n);

	switch(n)
	{
		case 1:	
			for(ii=0;ii<num-1;ii++)
			{
				p=head1;//p指向头结点 
				q=head1->next;//q指向首节点 
				while(q->next!=NULL)//循环进行的条件 
				{
					if( q->money  >  q->next->money ) //当q所指的money大于q所指的下一个节点的money时,进入 
					{
						p->next = q->next;//将q所指的下一个节点的地址值赋值给p所指的next 
						q->next = q->next->next;//将q所指的节点的下一个节点赋值给q所指的next 
						p->next->next = q;//重新链接两个交换的节点 
						q=p->next;//重新让p指向q的相邻节点 
					}
					q=q->next;
					p=p->next;//q与p均向后移动 
				}
			}
			printf("\t\t\t\t  --------------【排序已经完成】--------------\n");
			p=head1->next;//p指向首节点 
			while(p!=NULL)//对排序好的链表进行遍历 
			{
				printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				p=p->next;//p向后移动 
			}
			break;
		case 2:
		    for(ii=0;ii<num-1;ii++)
			{
				p=head1;
				q=head1->next;
				while(q->next!=NULL)
				{
					if(q->money < q->next->money)
					{
						p->next=q->next;
						q->next=q->next->next;
						p->next->next=q;
						q=p->next;
						//printf("%d %d\n",q->money,p->money);
					}
					q=q->next;
					p=p->next;
				}
			}
			printf("\t\t\t\t  --------------【排序已经完成】--------------\n");
			p=head1->next;
			while(p!=NULL)
			{
				printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  --------【输入异常!!!请重新输入】-------\n");
			break;
	}
}

三.课设总代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

//定义电影院信息结构 
typedef struct Film
 {
 	char num[20];
 	char name[20];
 	int money;
 	double score;
 	struct Film *next;
 }film;
 
//定义登录人员信息 
typedef struct The_users   
{
    char id[11]; 
    char pwd[20];
}users;

/*页面显示函数*/ 
void menu();//系统主页面                                        
void menu1();//管理者系统的页面显示                            
void menu2();//售票人员的页面显示                                
void menu3();//顾客人员的页面显示 
void menu4();//负责人员的页面显示 
void ad(); 
/*用户的登录和注册*/ 
void Input();//登录注册 
int  Input_login();//登录 
/*文件函数*/ 
void save(film *head);//文件保存 
film *read();//文件读写 
/*链表创建增删改查*/ 
film *creat_Film();//链表的创建 
void Delete(film *head);//链表的删除 
void add_film(film *head);//链表的添加
void change(film *head);//链表的修改 
void output(film *head);//遍历子函数 
void output_film();//遍历主函数 
/*链表查询*/
void search(film *head);//单项查询子函数,两种查询方式 
void search_film();//单项查询主函数 
void Search_film();//组合查询 
/*链表统计*/ 
void statistic(film *head);//统计票价 
void sort(film *head);//按票价排序 
int len(film *head);//求链表长度

/*影院不同类型人员函数*/
void charge(); //影院负责人员 
void manger();//影院管理人员 
void sale_people();//影院售票人员
void buy_people();//顾客人员 

void menu()
{
	printf("\t\t\t\t  ***********************************************\n");
	printf("\t\t\t\t  ***************欢迎来到XX影院****************\n");
	printf("\t\t\t\t  ******************您是*************************\n");
	printf("\t\t\t\t  ***********************************************\n");
	printf("\t\t\t\t  ********     1.影院负责人@_@    ***************\n");
	printf("\n");
	printf("\t\t\t\t  *******      2.影院管理人员@_@  ***************\n");
	printf("\n");
	printf("\t\t\t\t  *******      3.影院售票人员@_@  ***************\n");
	printf("\n"); 
	printf("\t\t\t\t  *******      4.顾客@_@          ***************\n");
	printf("\n");
	printf("\t\t\t\t  *******      5.影院宣传         ***************\n");
	printf("\n");
	printf("\t\t\t\t  	     选择你的类型:");
}
void menu1()
{
	printf("\t\t\t\t  ********************************************\n");
	printf("\n");
	printf("\t\t\t\t  *********    欢迎来到管理页面   ************\n");
	printf("\n");
	printf("\t\t\t\t  ********     1.录入电影信息@_@  ************\n");
	printf("\n");
	printf("\t\t\t\t  ********     2.修改电影信息@_@  ************\n");
	printf("\n");
	printf("\t\t\t\t  ********     3.删除电影信息@_@  ************\n");
	printf("\n"); 
	printf("\t\t\t\t  ********     4.添加电影信息@_@  ************\n");
	printf("\n");
	printf("\t\t\t\t  ********     0.退出当前界面     ************\n");
	printf("\n");
	printf("\t\t\t\t  	     选择你的类型:");
}
void menu2()
{
	printf("\n\t\t\t\t  ***************************************************\n");
	printf("\n");
	printf("\t\t\t\t  ********      欢迎来到售卖页面          ***********\n");
	printf("\n"); 
	printf("\t\t\t\t  ********     1.单项查询某部电影信息@_@  ***********\n");
	printf("\n");
	printf("\t\t\t\t  ********     2.组合查询某部电影信息@_@  ***********\n");
	printf("\n");
	printf("\t\t\t\t  *******      3.查阅所有电影信息@_@      ***********\n");
	printf("\n");
	printf("\t\t\t\t  *******      0.退出当前界面@_@          ***********\n");
	printf("\n");
	printf("\t\t\t\t  	     选择你的类型:");
} 
void menu3()
{
	printf("\t\t\t\t  ************************************************\n");
	printf("\n");
	printf("\t\t\t\t  *************顾客你好,欢迎来到青柠影院*********\n");
	printf("\t\t\t\t  ******气势恢宏的视听效果,给你真的尊贵体验*****\n");
	printf("\n");
	printf("\t\t\t\t  ********     1.将票价排序            ***********\n");
	printf("\n");
	printf("\t\t\t\t  *******      2.查阅所有电影信息@_@   ***********\n");
	printf("\n");
	printf("\t\t\t\t  *******      3.统计票价信息@_@       ***********\n");
	printf("\n");
	printf("\t\t\t\t  *******      0.退出当前界面@_@       ***********\n");
	printf("\n");
	printf("\t\t\t\t  	     选择你的类型:");
}
void menu4()
{
	printf("\t\t\t\t  *************************************************\n");
	printf("\n");
	printf("\t\t\t\t  *************欢迎来到管理高层页面****************\n");
	printf("\n");
	printf("\t\t\t\t  ********     1.增加管理人员  ********************\n");
	printf("\n");
	printf("\t\t\t\t  *******      2.增加售票人员  ********************\n");
	printf("\n");
	printf("\t\t\t\t  *******      0.退出当前界面  ********************\n");
	printf("\n");
	printf("\t\t\t\t  	     选择你的类型:");
}
void ad()
{
	Sleep(1); 
	printf("\t\t\t\t  ********     在我的心里                                   ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     其实一直有座电影院                           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     放映着我的心情 我的梦 我的渴望               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     有的是我的亲人                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     我的朋友                                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     或者陌生人                                   ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     拥有入场卷的人                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     有的是我的亲人                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     我的朋友                                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     或者陌生人                                   ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     他们纷纷穿梭在我的人生里,来了又去           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     而第一个入场的爱人,去没想到会是你           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     就像许多电影预告片                           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     有时看了反而不精彩                           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     也许我们都走过许多相同的地方......           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     看过很多相同的风景......                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     遇见过很多相同的陌路人......                 ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     然后再某个不经意的瞬间,                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     我遇见了你                                   ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     于是我想                                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     一切那么的突然                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     突然到像是上天的安排                         ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     令人感到无限的惊喜                           ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     邂逅该是多么美丽的语言啊                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     幸福一直静静的存在那里                       ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     以甜美的莫名的悸动召唤着                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     等待着我                                     ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     我知道终有一天                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     抬起手我就能够触碰到它                       ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     亲爱的                                       ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     无论是曾经                                   ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     现在还是将来                                 ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     在我都会是你生活的基石                       ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     是你最坚强的后盾                             ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     你是美好的未来                               ***********\n");
	Sleep(1);
	printf("\t\t\t\t  ********     我会给你无尽的希望                           ***********\n");
	Sleep(10000);
}

//登录注册 
void Input()
{
	system("read");                        //暂停 
	system("cls");
	users a,b;//结构体 The_users 重命名定义
	FILE *fp;
	char temp[20];
	printf("\t\t\t\t  -------------欢迎来到注册界面!-----------------\n");
	                  
	Sleep(1000);
	printf("\t\t\t\t        请输入用户名:");
	scanf("\t\t\t\t\t\t\t%s",a.id);
	printf("\t\t\t\t         请输入密码:");
	scanf("\t\t\t\t\t\t\t%s",a.pwd);
	printf("\t\t\t\t         请确认密码:");
	scanf("\t\t\t\t\t\t\t%s",temp);
	do
	{
	 	if(!strcmp(a.pwd,temp)){
	 		fp = fopen("D:\\user.text","a");
	        fwrite(&a, sizeof(struct The_users), 1, fp);
			printf("\t\t\t\t        账号注册成功,请登录!\n"); 
	        Sleep(500);
	        fclose(fp);
	        system("read");                        //暂停 
			system("cls");
			return;
		}else
		{
		 	printf("\t\t\t\t        两次密码不匹配!请重新输入!\n");
	        scanf("\t\t\t\t\t\t%s",a.pwd);
	        printf("\t\t\t\t        请确认密码:\n");
	        scanf("\t\t\t\t\t\t%s",temp);
		}
	}while(1);
}
 
 /*登录系统*/ 
int  Input_login()
{
	system("read");                         
	system("cls");
    users a,b;//定义结构体The_users别名
    FILE *fp;
    printf("\t\t\t\t   -----------  欢迎来到登录界面!   -----------------\n");
    Sleep(1000);
    fp = fopen("D:\\user.text","r");
    fread(&b, sizeof(struct The_users), 1, fp);
    printf("\t\t\t\t		请输入账号:");
    scanf("\t\t\t\t\t\t\t\t%s",a.id);   
    while (1)
   {   
       if (strcmp(a.id, b.id)==0)         //如果有此用户名
       {
           break;       
       }
       else 
       {
            if (!feof(fp))  //如果文件没有读完                            
        	{
               fread(&b, sizeof(struct The_users), 1, fp);
            }
            else
           {
               printf("\t\t\t\t                    此用户名不存在,请重新输入!\n");
			   Sleep(500); 
               fclose(fp);  
			   return 0;              
           }
       }
    }
    printf("\t\t\t\t		请输入密码:");
   	scanf("\t\t\t\t\t\t\t\t\t%s",a.pwd); 		
	do
	{   
        if (strcmp(a.pwd, b.pwd)==0)            /*如果密码匹配*/
		{  
		    fclose(fp);
		    printf("\t\t\t\t		登录成功,欢迎使用!");
		    Sleep(500);
		    return 1;
		}
	   else  
	   {    printf("\t\t\t\t		密码不正确!请重新输入密码:");
	   		scanf("\t\t\t\t\t\t\t\t%s",&a.pwd);         
	   }
    }while(strcmp(a.pwd, b.pwd)==0);   
}

//文件的保存 
void save(film *head)
{
	film *p;
	FILE *fp;
	char str[40];
	printf("\n\t\t\t\t		请输入要保存的文件名:");
	scanf("\t\t\t\t\t\t\t\t\t\t\t\t%s",str);
	if((fp=fopen(str,"wt"))==NULL)
	{
		printf("\t\t\t\t		写文件出错,按任意键退出!");
		getchar();
		exit(1);
	}
	for(p=head->next;p!=NULL;p=p->next)// 
	{
		fprintf(fp,"%s\t%s\t%d\t%.2lf\t ",p->num,p->name,p->money,p->score);
	}
	printf("\n\t\t\t\t		文件已成功保存,按任意键返回!\n");
	getchar();
	fclose(fp);
	return;
}

 //文件的读写 
 film *read()
{
	film *ghead=NULL,*r=NULL,*p;
	FILE *fp;
	char name[40];
	printf("\n\t\t\t\t  请输入要打开的文件名:");
	scanf("%s",name);
	if((fp=fopen(name,"rt"))==NULL)
	{
		printf("\n\t\t\t\t  写文件出错,按任意键退出!\n");
		printf("\t\t\t\t  请创建链表\n"); 
		system("read"); 
		return 0;
	}
	while(!feof(fp))
	{
		p=(film *)malloc(sizeof(film));                                       //开辟空间 
		fscanf(fp,"%s\t%s\t%d\t%lf ",p->num,p->name,&p->money,&p->score);   
		if(ghead==NULL)
		{
			ghead=p;
			ghead->next=NULL;
		}
		else
		{
			r->next=p;
			p->next=NULL;
		}
		r=p;
	}
	fclose(fp);
	printf("\n\t\t\t\t  文件信息正确读入,按任意键退出!\n");
	getchar();
	return ghead;
}


//录入信息 
 film *creat_Film()
 {
	int n,i;
	film *head, *node, *end;
	head=(film*)malloc(sizeof(film)); //开辟空间 ,初始化头指针 
	end=head;
	do
	{
		node=(film*)malloc(sizeof(film));//每读入一个数,都会创建一个新的空间 
		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\t\t      ");
	    scanf("%s",node->num);
	
    	printf("\t\t\t\t  *               录入电影名称                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%s",node->name); 
	
    	printf("\t\t\t\t  *               录入电影票价                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%d",&node->money); 
    	
    	printf("\t\t\t\t  *               录入电影评价                  *\n");
    	printf("\t\t\t\t\t\t      ");
    	scanf("%lf",&node->score); 
    	printf("\t\t\t\t  ---------------【录入电影信息完成】-----------*\n");
		printf("\t\t\t\t  ***********************************************\n");
		end->next=node; //尾插新节点 
		end=node;      //指向尾结点 
		printf("\t\t\t\t  *               1.是\t2.否                    *\n");
		printf("\t\t\t\t  *               请输入是否要录入数据:         *\n");
		printf("\t\t\t\t\t\t      ");
		scanf("%d",&n);
	}while(n==1);
	end->next=NULL;//尾节点的指针域指向空 
	return head;
}


//删除信息 
void Delete(film *head)
{
	int n;
	char i[20];
	film *p,*p1=head;
	p=p1->next;
	printf("\t\t\t\t  *               请输入 1 进行删除操作:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  *               请输入要删除的编号:");
			scanf("%s",i);
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0) //比较要删除的编号与p所指的编号 
				{
					printf("\t\t\t\t  *               【以下是你要删除的电影信息】\n\n");
					printf("\t\t\t\t  *%s\t%s\t%d\t%.2lf\t\n",p->num,p->name,p->money,p->score);
					p1->next=p->next; //将p所指的下一个结点的地址赋值给上一个结点 
					free(p); //释放空间 
					printf("\t\t\t\t  -----------------【已经安全删除】--------------\n");
				}
				p1=p;
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  ------------【输入非法!请重新输入】------------\n");
			break;
	}
}
//添加电影信息
void add_film(film *head)
{
	int n;
	char i[20];
	film *p=head,*p1;
	printf("\t\t\t\t  *               请输入 1 进行插入操作:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  *               请输入编号(会插入在其后):");
			scanf("%s",i);
			while(p!=NULL)
			{
				
				if(strcmp(p->num,i)==0)//比较要添加处的编号与p所指的编号
				{
					p1=(film*)malloc(sizeof(film));  //开辟空间 
	            	printf("\t\t\t\t  *               输入电影编号                  *\n");
					printf("\t\t\t\t\t\t      ");
				    scanf("%s",p1->num);
				
			    	printf("\t\t\t\t  *               录入电影名称                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%s",p1->name); 
				
			    	printf("\t\t\t\t  *               录入电影票价                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%d",&p1->money); 
			    	
			    	printf("\t\t\t\t  *               录入电影评价                  *\n");
			    	printf("\t\t\t\t\t\t      ");
			    	scanf("%lf",&p1->score);

                    printf("\t\t\t\t  *添加电影信息完成                              *\n");
                    p1->next=p->next;//将p点的下一个结点的地址赋值给新建的结点的next 
                    p->next=p1;//将新节点的地址值赋值给p点所指的next 
				}
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  ---------【输入非法!请重新输入】--------------\n");
			break;
	}
}



 //修改电影信息
 void change(film *head)
{
	int n,j;
	film *p;
	char i[20];
	printf("\t\t\t\t  1.编号\t2.票价\n");
	printf("\t\t\t\t  请输入你要修改的项目:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			p=head;
			printf("\t\t\t\t  请输入要修改的编号:");
			scanf("%s",i);
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0)//比较读入的编号与想要修改的编号 
				{
					printf("\t\t\t\t  输入想修改为的编号:");
					scanf("%s",p->num);
					printf("\t\t\t\t  ------------【修改完成】----------------------\n");
				}
				p=p->next;
			}
			break;
			
		case 2:
			p=head;
			printf("\t\t\t\t  请输入要修改的编号:");
			scanf("%s",&i);
			printf("\t\t\t\t  请输入要修改的票价:");
			scanf("%d",&j);
			while(p!=NULL)
			{
				if(p->money==j&&strcmp(p->num,i)==0)//比较想要修改的价格和修改的编号是否一致 
				{
					printf("\t\t\t\t  输入想修改为的票价是:");
					scanf("%d",&p->money);
					printf("\t\t\t\t  ------------【修改完成】----------------------\n");
				}
				p=p->next;
			}
			break;
	}
}



 
//链表输出 
 void output(film *head)
{
	film *p=head;
	//system("clear");
	printf("\t\t\t\t  *********************************************************\n");
	printf("\t\t\t\t  *\t\t   影院影片列表     \t\t\t*\n");
	printf("\t\t\t\t  ********************************************************\n");
	printf("\t\t\t\t  *编号\t名称\t票价\t评价\t*\n");
	while(p!=NULL)  //遍历链表 
	{
		
		printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
		p=p->next;//每次指向下一个 
	}
	printf("\t\t\t\t  *********************************************************\n\n");
}


//链表的遍历 
void output_film()
{
	film *q;
 	q=read();//打开文件,读出所储存的数据,重新创建一个链表并返回头指针 
	output(q);
	printf("\t\t\t\t  ------------------【影片遍历完成】-----------------------\n");
}


//单项查询 
void search(film *head)
{
	int n,j,flag=0;
	char i[40];
	film *p=head;
	printf("\t\t\t\t  1.编号\t2.名称\t3.票价\t4.评价\t\n");
	printf("\t\t\t\t   请输入你要查询的项目:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			printf("\t\t\t\t  请输入编号:");
			scanf("%s",i);
			printf("\t\t\t\t  1.编号\t2.名称\t3.票价\t4.评价\t\n");
			while(p!=NULL)
			{
				if(strcmp(p->num,i)==0)                                 
				{
					printf("\t\t\t\t		*%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				}
				p=p->next;
			}
			break;
			
		case 2:
			printf("\t\t\t\t		请输入名称:");
			scanf("\t\t\t\t\t\t%s",&i);
			printf("\t\t\t\t		1.编号\t2.名称\t3.票价\t4.评价\t\n");
			while(p!=NULL)
			{
				
				if(strcmp(p->name,i)==0)
				{
					printf("\t\t\t\t		*%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
					flag=1;
				}
				p=p->next;
			}
			if(flag==0)
			printf("\t\t\t\t		*输入信息错误*\n");
			break;
	}
}


//组合查询主函数 
void search_film()
 {
 	film *q;
 	q=read();
	search(q);
	printf("\t\t\t\t  ----------------【定向查询完成】------------------\n");
 } 
 
 //组合查询 
 void Search_film() 
 {
 	film *p;
 	int flag=0;
 	p=read();
 	char i[100],a[100];
 	printf("\t\t\t\t		请输入编号:");
	scanf("%s",i);
	printf("\n\t\t\t\t      请输入名称:");
	scanf("%s",a);
	printf("\t\t\t\t		1.编号\t2.名称\t3.票价\t4.评价\t\n");
	while(p!=NULL)
	{
		if(strcmp(p->name,a)==0&&strcmp(p->num,i)==0)
		{
			printf("*\t\t\t\t\t\t%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
			flag=1;
		}
		p=p->next;
	}
	if(flag==0)
	printf("\t\t\t\t		*输入信息错误*\n");
 }
 
 //统计 
void statistic(film *head)                    
{
	int count1=0,count2=0,n;
	film *p;
	printf("\t\t\t\t  1.票价50元以下\t2.票价票价50元以下,评分5.0以上\n");
	printf("\t\t\t\t  请选择统计方式:");
	scanf("%d",&n);
	switch(n)
	{
		case 1:
			p=head;
			while(p!=NULL)
			{
				if(p->money<50)
				count1++; 
				p=p->next;
			}
			printf("\t\t\t\t  票价50元一下的有%d种\n",count1);
			break;
		case 2:
		    p=head;
			while(p!=NULL)
			{
				if(p->money<50&&p->score>5.0)
				count2++;
			  	p=p->next;
			}
			printf("\t\t\t\t  票价50元一下的,评分5.0以上的有%d种\n",count2);
			break;
		default :
			printf("\t\t\t\t  输入类型错误,结束\n");
			break; 
	}
}

//求链表长度 
int len(film *head)
{
	film *p;
	int i;
	p=head->next;
	for(i=1;p!=NULL;i++)//当p不为NULL时,i++ 
	{
		p=p->next;
	}
	return i;//返回链表的长度 
}
//链表的排序 
void sort(film *head)                    //采用了冒泡排序 
{
	
	int n,j,h,ii,num;
	char i;
	film *p,*q,*head1;
	head1 = (film *)malloc(sizeof(film));//初始化头指针,创建头节点 
	head1->next = head;
	num=len(head1);//接收链表的长度

	printf("\t\t\t\t  1.票价从低向高\t2.票价从高到低\n");
	printf("\t\t\t\t  请选择排序方式:");
	scanf("%d",&n);

	switch(n)
	{
		case 1:	
			for(ii=0;ii<num-1;ii++)
			{
				p=head1;//p指向头结点 
				q=head1->next;//q指向首节点 
				while(q->next!=NULL)//循环进行的条件 
				{
					if( q->money  >  q->next->money ) //当q所指的money大于q所指的下一个节点的money时,进入 
					{
						p->next = q->next;//将q所指的下一个节点的地址值赋值给p所指的next 
						q->next = q->next->next;//将q所指的节点的下一个节点赋值给q所指的next 
						p->next->next = q;//重新链接两个交换的节点 
						q=p->next;//重新让p指向q的相邻节点 
					}
					q=q->next;
					p=p->next;//q与p均向后移动 
				}
			}
			printf("\t\t\t\t  --------------【排序已经完成】--------------\n");
			p=head1->next;//p指向首节点 
			while(p!=NULL)//对排序好的链表进行遍历 
			{
				printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				p=p->next;//p向后移动 
			}
			break;
		case 2:
		    for(ii=0;ii<num-1;ii++)
			{
				p=head1;
				q=head1->next;
				while(q->next!=NULL)
				{
					if(q->money < q->next->money)
					{
						p->next=q->next;
						q->next=q->next->next;
						p->next->next=q;
						q=p->next;
						//printf("%d %d\n",q->money,p->money);
					}
					q=q->next;
					p=p->next;
				}
			}
			printf("\t\t\t\t  --------------【排序已经完成】--------------\n");
			p=head1->next;
			while(p!=NULL)
			{
				printf("\t\t\t\t  *%s\t%s\t%d\t%lf\t*\n",p->num,p->name,p->money,p->score);
				p=p->next;
			}
			break;
		default:
			printf("\t\t\t\t  --------【输入异常!!!请重新输入】-------\n");
			break;
	}
}

//负责人员主页面 
void charge() 
{
	system("read");                        //暂停 
	system("cls");   
	char temp[20],c;
	int count = 0,n;
	printf("\t\t\t\t	输入除0以外任意键,程序开始运行:");
	scanf("\t\t\t\t\t\t%c",&c);
	while(c!='0')
	{
	 	menu4();
		scanf("\t\t\t\t\t\t%d",&n);
		switch (n)
		{
			case 1:
				Input();
				break;
			case 2:
				Input();
				break;
			case 0:
				break;
			default :
				printf("输入异常,请重新输入\n");
				break;
		}
		if(n==0)
		break;
	 }
	 return; 
} 

void manger()
{
	system("read");                        //暂停 
	system("cls");   
	int i=5,n,count;
	film *p1=NULL;
	while(1)
	{
		count=Input_login();
		if(count==1)                                //字符串的比较,在查询功能中起到了作用 
		{
	        system("cls");                          //清屏,没有这个会重复出现目录界面 
			do
			{
			    menu1();                                                     //菜单函数 
		        scanf("%d",&n);
				switch(n)
				{
			        case 1:
					    printf("\t\t\t\t  --------------【信息的录入】----------------\n");
			            p1=creat_Film();
			            break;	
		            case 2:
		    	        printf("\t\t\t\t  --------------【修改电影信息】--------------\n");
		              	change(p1);
		            	break;
		            case 3:
		            	printf("\t\t\t\t  --------------【删除电影信息】--------------\n");
	            		Delete(p1);
		            	break;
	            	case 4:
	            		printf("\t\t\t\t  --------------【添加电影信息】---------------\n");
		            	add_film(p1); 
		            	break;
		            case 0:
	            		printf("\t\t\t\t  -----------------结束------------------------\n");
		            	break;	
	            	default:
		            	printf("\t\t\t\t  --------【输入异常!!!请重新输入】---------\n");
		            	break; 
            	}
			 
	        }
        	while(n!=0);  
			save(p1);            
			return;                     
		}
		else
		{
			i--;
			printf("\t\t\t\t  【输入错误】\n\t\t\t\t  【剩余输入次数为%d】\n",i);
		}
	}
	if(i==0)
	{
	    printf("\t\t\t\t  ---------------【系统退出】------------------"); 
	}
} 


//售卖人员主函数 
void sale_people()
{
	system("read");                        //暂停 
	system("cls");   
	int i=5,n;
	int count=0;
	while(1)
	{
		count=Input_login();
		if(count==1)                              //字符串的比较,在查询功能中起到了作用 
		{
	        //system("cls");                          //清屏,没有这个会重复出现目录界面 
			do
			{
			    menu2();                                                     //菜单函数 
		        scanf("%d",&n);
		        
		        switch(n)
				{
			        case 1:
					    printf("\t\t\t\t  --------【单项查询某部电影的信息】------------\n");
			            search_film();
			            break;
					case 2:
						printf("\t\t\t\t  --------【组合查询某部电影的信息】------------\n");
						Search_film();
						break;		
		            case 3:
		    	        printf("\t\t\t\t  --------【浏览所有电影信息】-----------------\n");
		              	output_film();
		            	break;
		            case 0:
	            		printf("\t\t\t\t  --------------------结束---------------------\n"); 
		            	break;	
	            	default:
		            	printf("\t\t\t\t  -------【输入异常!!!请重新输入】----------\n");
		            	break; 
	            }
	        }
        	while(n!=0);                                       
	        return; 
		}
		else
		{
			i--;
			printf("\t\t\t\t  【输入错误】\n\t\t\t\t  【剩余输入次数为%d】\n",i);
		}
	}
	if(i==0)
	{
			printf("\t\t\t\t  ---------------【系统退出】---------------------"); 
	}
	return; 
 } 
 
 
//顾客主函数 
void buy_people()
 {
 	system("read");                        //暂停 
	system("cls");   
 	int n,num;  
 	printf("\t\t\t\t  请输入任意一个除零以外的数:"); 
	scanf("%d",&n);
	while(n!=0)
	{
		menu3(); 
		scanf("%d",&num); 
		switch (num)
		{
			case 1:
				sort(read()); 
				break;
			case 2:
				printf("\t\t\t\t  --------【浏览所有电影信息】-----------------\n");
              	output_film();
            	break;
            case 3:
            	printf("\t\t\t\t  --------【统计电影票】-----------------------\n");
            	statistic(read()); 
            	break;
			case 0: 
				printf("\t\t\t\t  ----------------【结束】----------------------\n");
				break;
			default:
				printf("\t\t\t\t              输入情况不存在");
				break; 
		}
		if(num==0)
		break;
	}
	return;
 } 
int main()
{
	system("color 3E");
	int n;
	while(1)
	{
		menu();
		scanf("\t\t\t\t  %d",&n);
		switch (n)
		{
			case 1:
				charge();
				break;
			case 2:
				manger();
				break;
			case 3:
				sale_people();
				break;
			case 4:
				buy_people();
				break;
			case 5:
				ad();
				break;
			case 0:
				break;
			default :
				printf("\t\t\t\t  ************输入异常,请重新输入*******************\n");
				break;	
		}
		system("read");                        //暂停 
	    system("cls");                          //清屏,没有这个会重复出现目录界面 
		if(n==0)
		break;
	}
	return 0;
}

四.注意事项:

1.课设代码运行,由于管理者不同的功能函数调用之间传递的是头指针,当退出管理页面的时候,才会调用文件保存,一次性保存之后,如果再次调用管理者则之前保存的会被重写。
2.影院还有一个额外的功能,宣传广告
3.附一张函数调用图
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值