电影院管理系统
上周我做了一个简易版的电影院管理系统,内容包括链表的创建,链表节点的增加、删除、修改、查找。
此电影系统还包含了文件的操作,例如将链表中的数据存到文件中去,也可将文件中的数据赋给链表。
先定义一个链表的结点(因为链表结点需多次使用,所以将其定义在头文件中):
#ifndef _STRUCT_H_
#define _STRUCT_H_
typedef struct Node{
int number;
char name[20];
char date[20];
char time[20];
int price;
int people;
struct Node *next;
}LinkList;
#endif
(将其后缀需改成.h)
文件操作
这是将链表中的数据存放到文件中:
#include<stdio.h>
#include<stdlib.h>
#include"struct.h"
void enter_file(LinkList *head)
{
FILE *fp;
LinkList *p;
p = head->next;
fp = fopen("D:\\电影院管理系统\\电影信息.txt","wt");
if(!fp){
printf("打开文件失败!\n");
exit(1);
}
while(p){
fprintf(fp,"%d %s %s %s %d %d\n",p->number,p->name,p->date,p->time,p->price,p->people);
p = p->next;
}
fclose(fp);
}
这是将文件中的数据存放到链表当中:
#include<stdio.h>
#include<stdlib.h>
#include"struct.h"
#include<conio.h>
LinkList *file_to_link()
{
LinkList *head, *p, *temp;
head = (LinkList *)malloc(sizeof(LinkList));
head->next = NULL;
temp = head;
FILE *fp;
fp = fopen("D:\\电影院管理系统\\电影信息.txt","rt");
if(!fp){
printf("打开文件失败!\n");
printf("按任意键进入菜单!\n");
getch();
return NULL;
}
while(!feof(fp)){
p = (LinkList *)malloc(sizeof(LinkList));
fscanf(fp,"%d %s %s %s %d %d\n",&p->number,p->name,p->date,p->time,&p->price,&p->people);
//此处需加上\n,如果不加,将会在文件中出现乱码
temp->next = p;
temp = p;
temp->next = NULL;
}
fclose(fp);
return head;
}
注册与登录
这里将注册信息存放到文件中,同时在登陆时从文件中调取(此处只能存放一个人的信息)。
注册:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void register_()
{
printf("请输入用户名:");
char s[20];
scanf("%s",s);
printf("请输入密码:");
char a[20],p[20];
int i = 0;
do{
a[i] = getch();
if(a[i] == '\r') break;
if(a[i] == '\b'){
if(!i){
printf("\a");
continue;
}
i = i -1;
printf("\b");
}
else{
i = i + 1;
printf("*");
}
}while(a[i] != '\n');
a[i] = '\0';
i = 0;
printf("\n");
printf("请确认密码:");
do{
p[i] = getch();
if(p[i] == '\r') break;
if(p[i] == '\b'){
if(!i){
printf("\a");
continue;
}
i = i -1;
printf("\b");
}
else{
i = i + 1;
printf("*");
}
}while(p[i] != '\n');
p[i] = '\0';
i = 0;
printf("\n");
while(strcmp(a,p)){
printf("请重新确认密码:");
i =