C语言实现影院管理系统
本文实例为大家分享了C语言影院管理系统的具体代码,供大家参考,具体内容如下
#include#include #include #include #include"state.h" #definechange3 intiCount; intn; //*****************注册*****************// voidrouter_registe(pAccoutahead) { system("cls"); charusername[20]; charpassword[13]; charpass[13]; charq; inti; 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"); } elsegotoloop2; } //*****************登录*****************// pAccoutrouter_acc(pAccoutahead) { pAccoutp1,p2; FILE*fp; intm=0; if((fp=fopen("e:\\课设\\Accout.txt","rw"))==NULL) { printf("读取失败!"); returnahead; } 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); returnahead; } pAccoutrouter_acc1(pAccoutahead) { pAccoutp1,p2; FILE*fp; intm=0; if((fp=fopen("e:\\课设\\Accout1.txt","rw"))==NULL) { printf("读取失败!"); returnahead; } 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); returnahead; } voidlogin_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"); } voidlogin_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"); } voidlogin_acc() { system("cls"); intbk; intbb; pAccoutahead,p1; ahead=(pAccout)malloc(sizeof(Accout)); ahead->next=NULL; while(1) { chara[200]; charb[200]; loop: login_printf(); printf("请输入:"); scanf("%s",a); bk=back(a); switch(bk) { case1:{ login_printf1(); printf("请输入:"); scanf("%s",b); bb=back(b); switch(bb) { case1:{ router_acc(ahead); ahead=login_panduan(ahead);//管理员登录 meun(); break; } case2:{ router_acc1(ahead); ahead=login_panduan(ahead);//用户登陆 menu1(); break; } case0: { print2(); exit(0); break; } default:printf("输入错误!"); Sleep(1000); system("cls"); break; } if(bb!=0)//丢失此处则会无法跳出循环 break; } case2:{ router_registe(ahead); gotoloop; break; } case0:{ //printf("BUG!!!!\n");测试bug!!!!! print2(); exit(0); break; } default:printf("输入错误!"); Sleep(1000); system("cls"); break; } if(bk!=0) break; } } pAccoutlogin_panduan(pAccoutahead) { charname1[20],pass1[20]; charq; pAccoutp1; inti=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); returnahead; } 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); gotoloop1; 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); } } returnahead; }//登录成功 intpanduan(charchoice) { while(1) { fflush(stdin); choice=getchar(); if(choice=='y'||choice=='Y') return1; elseif(choice=='n'||choice=='N') return0; while(getchar()!='\n') continue; printf("输入错误!请重新输入您的选择:\n"); } } intback(char*a) { if(strlen(a)==1) { if(a[0]>='0'&&a[0]<='9') return((int)a[0]-48); } else return10; } voidprint1() { inti; 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(">"); } } voidprint()//主界面 { 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"); } voidprint2() { 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); } voidprint3() { 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"); } /*******************查询模块********************/ pticketsearchmenu(pticketphead)//查询子系统菜单 { fflush(stdin); system("cls"); intbk; while(1) { charP[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) { case1: { phead=search1(phead);//按影院查询 break; } case2: { phead=search2(phead);//按电影查询 break; } case3:{ phead=search3(phead);//按价格区间查询 break; } case0:break; default:printf("输入错误!请重新输入\n"); system("pause"); break; } if(bk==0) break; } returnphead; } pticketsearch1(pticketphead)//影院查询 { system("cls"); charcinema1[30],choice; pticketp; intflag=0; charq; 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("是否继续查找?(YorN)"); 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; } } elseif(panduan(choice)==0) break; } returnphead; } pticketsearch2(pticketphead)//按电影名称查询 { system("cls"); charname1[30],choice; pticketp; intflag=0; charq; 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("是否继续查找?(YorN)\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; } } elseif(panduan(choice)==0) break; } returnphead; } pticketsearch3(pticketphead)//按价格区间名称查询 { system("cls"); intcount=0; charchoice; floatx,y; pticketp; intflag=0; charq; 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->price number); printf("%-12s",p->name); printf("%-16s",p->cinema); printf("%4d",p->time); printf("%.2lf",p->price); printf("%.1lf",p->grade); printf("\n"); count++; flag=1; } p=p->next; }while(p!=NULL); printf("\t\t\t此价格区间内的电影共有%d场\n",count); if(flag==0) { printf("不存在的!\n"); } system("pause"); printf("是否继续查找?(YorN)\n"); q=getchar(); if(panduan(q)==1) { count=0; gotoloop2; } elseif(panduan(choice)==0) break; } returnphead; } /******************排序模块*******************/ pticketsortmenu(pticketphead)//排序子系统菜单 { fflush(stdin); system("cls"); intbk; while(1) { system("cls"); charP[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|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); printf("%d",bk); switch(bk) { case1:phead=sort1(phead);//按价格排序 break; case2:phead=sort2(phead);//按时长排序 break; case3:phead=sort3(phead);//按评分排序 break; case0:break; default:printf("输入错误,重新输入!"); Sleep(1000); system("cls"); break; } if(bk==0) break; } Save_Stu(phead); returnphead; } pticketsort(pticketphead) { pticketpTemp,pj,pj_f,pj_b; inti,j,flag; for(i=0;i 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; } } returnphead; } pticketsort22(pticketphead) { pticketpTemp,pj,pj_f,pj_b; inti,j,flag; for(i=0;i next; pj_b=pj->next; } if(flag==1) { pj_f=pj_f->next; pj_b=pj->next; } flag=0; if(pj->time 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; } } returnphead; } pticketsort11(pticketphead) { pticketpTemp,pj,pj_f,pj_b; inti,j,flag; for(i=0;i next; pj_b=pj->next; } if(flag==1) { pj_f=pj_f->next; pj_b=pj->next; } flag=0; if(pj->grade grade) { 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; } } returnphead; } pticketsort1(pticketphead)//按价格排序 { system("cls"); if(phead->next==NULL) { printf("没有信息!\n"); Sleep(1000); returnphead; } sort(phead); print_stu1(phead); returnphead; } pticketsort2(pticketphead)//按时长排序 { system("cls"); if(phead->next==NULL) { printf("没有信息!\n"); Sleep(1000); returnphead; } sort22(phead); print_stu1(phead); returnphead; } pticketsort3(pticketphead)//评分排序 { system("cls"); if(phead->next==NULL) { printf("没有信息!\n"); Sleep(1000); returnphead; } sort11(phead); print_stu1(phead); returnphead; } /********************增加模块**********************/ pticketInsert(pticketphead) { system("cls"); pticketpNew,p=phead; /*if(phead->next==NULL) { printf("无信息!"); Sleep(1000); returnphead; }*/ charchoice; 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("是否继续添加信息(YorN):"); choice=getchar(); }while(panduan(choice)==1); printf("已增加电影信息.\n"); Sleep(1000); Save_Stu(phead); returnphead; } /*****************输出模块******************/ voidprint_stu1(pticketphead) { system("cls"); if(phead->next==NULL) { printf("没有信息!\n"); Sleep(1000); return; } print_stu2(); pticketp; 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"); } voidprint_stu2() { printf("信息如下:\n"); printf("-----------------------------------------------------------------------\n"); printf("****序号******名称*************影院**********时间*****价格*****评分****\n"); printf("-----------------------------------------------------------------------\n"); } voidprint_stu3() { printf("\t\t\t价格评分报表如下\n"); printf("-----------------------------------------------------------------------\n"); printf("*********名称******************价格*******************评分*************\n"); printf("-----------------------------------------------------------------------\n"); } voidprint_stu4(pticketphead) { system("cls"); if(phead->next==NULL) { printf("没有信息!\n"); Sleep(1000); return; } print_stu3(); pticketp; p=phead->next; while(p!=NULL) { printf("\t%-20s",p->name); printf("%.2f\t\t\t",p->price); printf("%.1lf",p->grade); printf("\n"); p=p->next; } system("pause"); } /*****************保存模块***************/ voidSave_Stu(pticketphead)//定义保存函数 { system("cls"); FILE*fp; if((fp=fopen("e:\\课设\\Student","wt"))==NULL) { printf("不能打开文件\n"); exit(1); } pticketp; 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); } /******************读取模块**********************/ pticketrouter_Stu(pticketphead) { system("cls"); FILE*fp; intm=0; if((fp=fopen("e:\\课设\\Student","rw"))==NULL) { printf("读取失败!"); return; } pticketp1,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); returnphead; } /******************删除模块**********************/ pticketdelete_Stu(pticketphead) { system("cls"); if(phead->next==NULL) { printf("\n\n\n\n\n\t\t\t\t没有可删除的信息!\n"); system("pause"); returnphead; } charname1[30]; pticketpTemp,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(); Save_Stu(phead); returnphead; } /********************修改*******************/ pticketrevise(pticketphead) { system("cls"); charP[200]; intbk; charname[30]; pticketpTemp; if(phead->next==NULL) { printf("没有可修改的信息!\n"); system("pause"); returnphead; } 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\t1.修改代码2.修改名称\t\t\t\n"); printf("\t\t\t3.修改影院4.修改时长\t\t\t\n"); printf("\t\t\t5.修改价格6.修改评分\t\t\t\n"); printf("\t\t\t0.返回上一层\t\t\t\n"); printf("\t\t\t********************************\t\t\t\n"); printf("请输入您的选择:"); scanf("%s",P); bk=back(P); switch(bk) { case1:{ system("cls"); printf("请输入新代码:"); scanf("%s",pTemp->number); system("cls"); printf("修改成功!"); Sleep(1000); break; } case2:{ system("cls"); printf("请输入新的名称:"); scanf("%s",pTemp->name); system("cls"); printf("修改成功!"); Sleep(1000); break; } case3:{ system("cls"); printf("请输入新的影院:"); scanf("%s",&pTemp->cinema); printf("请输入正确的影院:"); scanf("%s",&pTemp->cinema); system("cls"); printf("修改成功!"); Sleep(1000); break; } case4:{ system("cls"); printf("请输入新的时长:"); getchar(); scanf("%d",&pTemp->time); system("cls"); printf("修改成功!"); Sleep(1000); break; } case5:{ system("cls"); printf("请输入新的价格:"); scanf("%lf",&pTemp->price); system("cls"); printf("修改成功!"); Sleep(1000); break; } case6:{ system("cls"); printf("请输入新的评分:"); scanf("%lf",&pTemp->grade); system("cls"); printf("修改成功!"); Sleep(1000); break; } case0:break; default:printf("输入错误,请重新输入"); system("pause"); } if(bk==0) break; } Save_Stu(phead); returnphead; } else { printf("无该电影信息!"); Sleep(1000); returnphead; } } voidmenu1() { pticketphead; phead=(pticket)malloc(sizeof(ticket)); phead->next=NULL; router_Stu(phead); charP,a[200]; charchoice; intbk; while(1) { system("cls"); print3(); fflush(stdin); printf("请输入指令:"); scanf("%s",a); bk=back(a); switch(bk) { case1:{print_stu1(phead);//查看 system("cls"); break;} case2:{phead=searchmenu(phead);//查找 system("cls"); break;} case3:{phead=sortmenu(phead);//排序 system("cls"); break;} case4:{ print_stu4(phead); system("cls");//打印报表 break; } case0:{ print2(); exit(1); } default:{printf("输入错误!请重新输入\n"); system("pause");} } } } voidmeun() { pticketphead; phead=(pticket)malloc(sizeof(ticket)); phead->next=NULL; router_Stu(phead); charP,a[200]; charchoice; intbk; while(1) { system("cls"); print(); fflush(stdin); printf("请输入指令:"); scanf("%s",a); bk=back(a); switch(bk) { case1:{phead=Insert(phead);//插入 system("cls"); break;} case2:{print_stu1(phead);//查看 system("cls"); break;} case3:{phead=searchmenu(phead);//查找 system("cls"); break;} case4:{phead=revise(phead);//修改 system("cls"); break;} case5:{phead=sortmenu(phead);//排序 system("cls"); break;} case6:{phead=delete_Stu(phead);//删除 system("cls"); break;} case0:{ print2(); exit(1); } default:{printf("输入错误!请重新输入\n"); system("pause");} } } free(phead); } voidmain()//主函数 { system("color3A"); print1(); login_acc(); } pticketCreate(pticketpHead)//创建链表 { fflush(stdin); system("cls"); charchoice; while(1) { printf("确定重新输入所有信息麽?\n如果重新输入,之前所有信息会被删除!\n请谨慎选择!(YorN)\n"); if(panduan(choice)==1) break; else returnpHead; } pticketpNew,pEnd; iCount=0; fflush(stdin); pEnd=pHead; do { pNew=(pticket)malloc(sizeof(ticket)); if(pNew==NULL) returnpHead; 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); pEnd->next=pNew; pEnd=pNew; iCount++; fflush(stdin); printf("是否继续?YorN\n"); choice=getchar(); getchar(); while(choice!='y'&&choice!='Y'&&choice!='n'&&choice!='N') { printf("输入错误!请重新输入您的选择:\n"); choice=getchar(); getchar(); } getchar(); }while(choice=='y'||choice=='Y'); pEnd->next=NULL; system("cls"); returnpHead; }
很简易的一个影院管理系统,写出来也只能是一个参考,菜鸡代码,希望有用。
另附stata.h文件
#ifndefstate_h #definestate_h typedefstructaccout { charpass[20]; charname[20]; structaccout*next; }Accout,*pAccout; typedefstructticket { charnumber[15]; charname[30]; charcinema[30]; inttime; doubleprice; doublegrade; structstudent*next; }ticket,*pticket; pAccoutrouter_acc(pAccoutahead);//读取账户信息 //voidpAccoutsave_acc(pAccoutahead);//保存账户 voidlogin_acc();//登录函数 voidlogin_printf();//登录界面 pAccoutlogin_panduan(pAccoutahead); pticketCreate(pticketphead);//声明创建链表 voidmeun();//综合 voidprint();//主菜单 voidprint1();//主界面 voidprint2();//退出界面 pticketsearchmenu(pticketphead);//查询子系统菜单 pticketsearch1(pticketphead);//学号查询 pticketsearch2(pticketphead);//姓名查询 pticketsearch3(pticketphead); pticketsortmenu(pticketphead);//排序子系统菜单 pticketsort1(pticketphead);//年龄排序 pticketsort2(pticketphead);//平均分排序 pticketsort3(pticketphead);//总分排序 pticketsort_1(pticketphead); pticketsort_2(pticketphead); pticketsort_3(pticketphead); pticketInsert(pticketphead);//新学生信息录入 voidprint_stu1(pticketphead);//打印学生信息 voidprint_stu2();//学生信息表格 pticketdelete_Stu(pticketphead);//删除信息 voidSave_Stu(pticketphead);//信息保存 pticketrouter_Stu(pticketphead);//信息读取 pticketrevise(pticketphead);//修改信息 intpanduan(charchoice);//布尔判断 intback(char*a);//返回整数函数 #endif
具体的设计思路及流程图如下所示:
各个模块详细的功能描述。
(1)、主函数
主函数从文件中读取文件,根据每个字符对应的ASCII码的数值,统计各字符出现的次数,用s数组存取出现的字符,用w数组存取各字符的权值,进行树的创建与各字符的编码。
(2)、树的创建
首先将哈夫曼树置空,根据字符的个数确定需要的初始化的长度,如果有n个字符,则会有2*n-1个结点,将前n个结点的左右孩子父亲结点置空,将对应的权值存入,在前n个结点中选出没有父亲结点的最大值和最小值,进行相加,将和存入新的节点中,并更新对应孩子结点的父亲结点,及相应的父亲结点。
(3)、对每个字符进行编码
从叶子结点向根回溯,将建立好的哈夫曼树进行编码,如果是左孩子则编码为0,如果是右孩子则编码为1,当回溯到根结点时,则这个字符编码结束,将字符对应的编码存入到hc数组中,不断重复此步骤,直至所有的字符都编码结束。
(4)、对文件里的文件进行编码
将文件中的文章通过fgetc();进行读出,将读出的字符一一的读入到c数组中,如果c数组中的字符与s数组中的字符一致,则输出其对应的hc数组中的编码,并将其存入到文件中。
(5)、对文件里的文件进行译码
译码过程不同于编码过程,译码过程是从根结点向叶子结点回溯如果是0则进入左孩子,如果是1则进入右孩子,由于哈夫曼树是一棵最小二叉树,所以哈夫曼树的结点只能是0或者2,其中一个结点若为空,则证明其为叶子结点,当遇到叶子结点,则输出叶子结点对应的字符,将译码后的字符串记录到文件中。
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。