C语言实现影院管理系统
语言实现影院管理系统
主要为大家详细介绍了C语言实现影院管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣
的小伙伴们可以参考一下
本文实例为大家分享了C语言影院管理系统的具体代码,供大家参考,具体内容如下
#include
#include
#include
#include
#include"state.h"
#define change 3
int iCount;
int n;
//*****************注册*****************//
void router_registe(pAccout ahead)
{
 system("cls");
 char username[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",username);
 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("e:\\课设\\Accout1.txt", "ab+");
  fprintf(fp," %s %s",username,password); //把内存中的文件输入到硬盘中
 fclose(fp);
 system("cls");
 printf("\n\n\n\n注册成功\n");
 }
 else goto loop2;
}
//*****************登录*****************//
pAccout router_acc(pAccout ahead)
{
 pAccout p1,p2;
 FILE *fp;
 int m=0;
 if((fp=fopen("e:\\课设\\Accout.txt", "rw"))==NULL)
 {
 printf("读取失败!");
 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;
}
pAccout router_acc1(pAccout ahead)
{
 pAccout p1,p2;
 FILE *fp;
 int m=0;
 if((fp=fopen("e:\\课设\\Accout1.txt", "rw"))==NULL)
 {
 printf("读取失败!");
 return ahead;
 }
 ahead==NULL;
 p1=(pAccout)malloc(sizeof(Accout));
 while(fscanf(fp,"%s %s",p1->name,p1->pass)==2)
 {
 
 //printf("%s\n",p1->name);   //由于文件没有读入换行,读出的时候将先一个人的密码和 
 //printf("%s",p1->pass);   //后一个人的名称 
 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_printf()
{
 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 login_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");
}
void login_acc()
 {
 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:
  login_printf();
 printf("请输入:");
 scanf("%s",a);
 bk=back(a);
 switch(bk)
 {
  case 1:{
   login_printf1();
   printf("请输入:");
   scanf("%s",b);
   bb=back(b);
   switch(bb)
   {
    case 1:{
     router_acc(ahead);
     ahead=login_panduan(ahead);//管理员登录 
     meun();
    break;
     } 
   case 2:{
     router_acc1(ahead);
     ahead=login_panduan(ahead);//用户登陆 
     menu1();
     break;
    } 
   case 0:
    {
    print2();
    exit(0);
    break;
    }
   default:printf("输入错误!");
    Sleep(1000);
    system("cls");
     break;
   }
   if(bb!=0)//丢失此处则会无法跳出循环 
    break;
   }
  case 2:{
   router_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 login_panduan(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 panduan(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);
 }
 else
   return 10;
}
 
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|||             |||\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<100;i++) 
 {
  Sleep(40);
  printf(">");
 }
}
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|     6.删除信息      |\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);
}
void print3()
{
 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|-------------------------------|\n");
 printf("\t\t\t|-------------------------------|\n");
 printf("\t\t\t|     0.退出程序      |\n");
 printf("\t\t\t|===============================|\n");
}
/*******************查询模块********************/ 
pticket searchmenu(pticket phead)   //查询子系统菜单 
{
 fflush(stdin);
 system("cls");
 int bk;
 while(1)
 {
 char P[200];
 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|-------------------------------|\n");
 printf("\t\t\t|     0.返回上一层     |\n");
 printf("\t\t\t|*******************************|\n\n");
 printf("请输入指令:");
 scanf("%s",P);
 bk=back(P);
 switch(bk)
 {
  case 1:
    {
    phead=search1(phead);//按影院查询 
    break;
    }
  case 2:
  {
   phead=search2(phead);//按电影查询 
   break;
  }
  case 3:{
  phead=search3(phead);//按价格区间查询 
  break;
  } 
  case 0:break;
  default:printf("输入错误!请重新输入\n");
   system("pause");
   break;
 }
 if(bk==0)
 break;
 }
 return phead;
}
pticket search1(pticket phead)     //影院查询 
{
 system("cls");
 char cinema1[30],choice;
 pticket p;
 int flag=0;
 char q;
 p=(pticket)malloc(sizeof(ticket));
 while(1)
 {
 system("cls");
 printf("\n\n\n\t\t\t请输入影院名称:"); 
 scanf("%s",cinema1);
 if(strlen(cinema1)>=30)
 {
  system("cls");
  printf("**************\n");
  printf("请输入正确的名字!\n");
  printf("**************\n");
  Sleep(1000);
 }
 else
 break;
 }
 while(1)
 {
 system("cls");
 if(phead->next==NULL)
 {
  printf("\n\n\n\t\t\t没有信息!\n");
  system("pause");
  break;
 }
 p=phead->next;
 print_stu2();
   do
   {
  if(strcmp(p->cinema,cinema1)==0)
  { 
  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");
  flag=1;
  }
  p=p->next;
 }while(p!=NULL);
 if(flag==0)
 {
  printf("不存在的!\n");
 }
 printf("是否继续查找?(Y or N)");
 q=getchar();
 if(panduan(q)==1)
 {
  while(1)
  {
  system("cls");
  printf("\n\n\n\t\t\t请输入影院名称:"); 
  scanf("%s",cinema1);
  if(strlen(cinema1)>=30)
  {
   system("cls");
   printf("**************\n");
   printf("请输入正确的名字!\n");
   printf("**************\n");
   Sleep(1000);
  }
  else
   break;
  }
 }
 else if(panduan(choice)==0)
  break; 
 }
 return phead; 
}
pticket search2(pticket phead)     //按电影名称查询 
{
 system("cls");
 char name1[30],choice;
 pticket p;
 int flag=0;
 char q;
 while(1)
 {
 system("cls");
 printf("\n\n\n\t\t\t请输入电影名称:"); 
 scanf("%s",name1);
 if(strlen(name1)>=30)
 {
  system("cls");
  printf("**************\n");
  printf("请输入正确的名字!\n");
  printf("**************\n");
  Sleep(1000);
 }
 else
 break;
 }
 while(1)
 {
 system("cls");
 if(phead->next==NULL)
 {
  printf("没有信息!\n");
  system("pause");
  break;
 }
 p=phead->next;
 print_stu2();
  
  do{ 
 if(strcmp(p->name,name1)==0)
 {
  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");
  flag=1;
 }
  p=p->next;
 }while(p!=NULL);
 if(flag==0)
 {
  printf("不存在的!\n");
  
 }
 printf("是否继续查找?(Y or N)\n");
 q=getchar();
 if(panduan(q)==1)
 {
  while(1)
  {
  system("cls");
  printf("请输入电影名称:"); 
  scanf("%s",name1);
  if(strlen(name1)>=30)
  {
   system("cls");
   printf("**************\n");
   printf("请输入正确的名字!\n");
   printf("**************\n");
   Sleep(1000);
  }
  else
   break;
  }
 }
 else if(panduan(choice)==0)
  break; 
 
}
 return phead; 
} 
pticket search3(pticket phead)     //按价格区间名称查询 
{
 system("cls");
 int count=0;
 char choice;
 float x,y;
 pticket p;
 int flag=0;
 char q;
 loop2: 
 system("cls");
 printf("\n\n\n\t\t\t请输入价格下限:"); 
 scanf("%f",&x);
 printf("\n\t\t\t请输入价格上限:");
 scanf("%f",&y);
 while(1)
 {
  
 system("cls");
 if(phead->next==NULL)
 {
  printf("没有信息!\n");
  system("pause");
  break;
 }
 p=phead->next;
 print_stu2();
  
  do{ 
 if(p->price>x&&p->pricenumber);