#include
#include
#include
#define MAXSIZE 20
typedef struct movie
{
int id;
char name[30];
char director[30];
char lang[30];
int year;
float point;
char name2[10];
struct movie *next;
} movie;
movie *first, *last;
typedef struct SqList
{
char classification[MAXSIZE][20];
int length;
} SqList;
SqList *L;
void InitList()
{
{ L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
int n;
printf("请输入创建电影分类的个数:\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("请输入电影分类\n");
scanf("%s",L->classification[i]);
L->length++;
}
printf("------完成------\n");
}
int IsExistsList(char *classification)
{
for(int i=0;ilength;i++)
{
if(strcmp(L->classification[i],classification)==0)
{
return 1;
}
}
return 0;
}
movie *createList()
{
movie *node =(movie *)malloc(sizeof(movie));
if (node==NULL)
{
printf("-------创建失败------\n.");
return NULL;
}
node->next=NULL;
printf("请输入电影名称:\n");
scanf("%s",&node->name);
printf("请输入导演:\n");
scanf("%s",&node->director);
printf("请输入语言:\n");
scanf("%s",&node->lang);
printf("请输入年份:\n");
scanf("%d",&node->year);
printf("请输入评分:\n");
scanf("%f",&node->point);
printf("请输入电影分类:\n");
scanf("%s",&node->name2);
while(IsExistsList(node->name2)!=1)
{
printf("---没有找到电影分类,请重新输入电影分类---\n");
scanf("%s",&node->name2);
}
printf("----完成----\n");
return node;
}
void displayList()
{
if(first->next==NULL)
{
printf("暂无数据\n");
return;
}
movie *p;
for (p=first->next; p!=NULL; p=p->next)
{
printf("编号:%d,电影名称:%s,导演:%s,语言:%s,年份:%d,评分:%f,分类:%s\n",p->id,p->name,p->director,p->lang,p->year,p->point,p->name2);
}
}
void removeList()
{
if(first->next==NULL)
{
printf("\n暂无数据\n\n");
return;
}
int input;
printf("请输入删除的编号(数字)\n");
scanf("%d",&input);
movie *p , *tempLast;
tempLast = first;
for (p=first->next; p!=NULL; p=p->next)
{
if (p->id==input)
{
if(last==p)
{
last=NULL;
}
tempLast->next=p->next;
free(p);
printf("删除成功\n");
return;
}
else
{
tempLast = p;
}
}
printf("该编号不存在\n");
}
void modifyList()
{
if(first->next==NULL)
{
printf("\n暂无数据\n\n");
return;
}
printf("请输入修改的编号\n");
int input;
scanf("%d",&input);
movie *p;
for (p=first->next; p!=NULL; p=p->next)
{
if (p->id==input)
{
printf("找到电影 编号:%d,电影名称:%s,导演:%s,语言:%s,年份:%d,评分:%f,分类:%s\n",p->id,p->name,p->director,p->lang,p->year,p->point,p->name2);
printf("请输入新评分\n");
scanf("%f",&p->point);
printf("修改完成\n\n");
return;
}
}
printf("该编号不存在\n");
}
void MovieLast()
{
movie *node= createList();
if(last==NULL)
{
node->id=1;
first->next=node;
}
else
{
node->id=last->id+1;
last->next=node;
}
last=node;
printf("------添加成功-------\n");
}
void createMovieList()
{
while (true)
{
MovieLast();
printf("是否继续创建电影(1 继续 0 返回) \n");
int num;
scanf("%d",&num);
if(num==0)
{
break;
}
}
}
void queryList()
{
if(first->next==NULL)
{
printf("\n暂无数据\n\n");
return;
}
printf("请输入电影名称\n");
char input[10];
scanf("%s",input);
movie *p;
for (p=first->next; p!=NULL; p=p->next)
{
if (strcmp( p->name,input)==0)
{
printf("查询到电影 编号:%d,电影名称:%s,导演姓名:%s,语言:%s,年份:%d,评分:%f,电影分类:%s\n",p->id,p->name,p->director,p->lang,p->year,p->point,p->name2);
return;
}
printf("未查询到结果!\n");
}
}
void BubbleSort()
{
movie *p,*q;
p=first->next;
float s;
if(first->next==NULL)
{
printf("\n暂无数据\n\n");
return;
}
for (p=first->next; p!=NULL; p=p->next)
{
for(q=p->next;q!=NULL;q=q->next)
{
if((p->point)>(q->point))
{
s=q->point;
q->point=p->point;
p->point=s;
}
}
printf("分数: %lf \n",p->point);
}
}
void showMenu()
{
int num;
while(num!=3)
{
printf("1. 管理员登录\n");
printf("2. 用户入口\n");
printf("3. 退出系统\n");
printf("请输入(1,2,3)来选择功能 \n");
scanf("%d",&num);
}
switch(num)
{
case 1:
{
int i;
char a[20]={"syy"},b[20],c[20]={"0531"};
while(1)
{
printf("输入管理员账号\n");
scanf("%s",a);
if(strcmp(b,c)==0)
printf("账号错误再次输入\n");
else
break;
}
while(1)
{
printf("输入密码\n");
scanf("%s",c);
if(strcmp(a,c)==0)
printf("密码错误请重新输入\n");
else
break;
}
do
{
int num;
{
printf("1. 录入电影分类\n");
printf("2. 录入电影信息\n");
printf("3. 创建电影\n");
printf("4. 删除电影\n");
printf("5. 修改电影\n");
printf("6. 查看所有电影\n");
printf("7. 返回\n");
printf("请选择功能 \n");
scanf("%d",&num);
}
switch(num)
{
case 1:
InitList();
break;
case 2:
createList();
break;
case 3:
MovieLast();
break;
case 4:
removeList();
break;
case 5:
modifyList();
break;
case 6:
displayList();
break;
default:
showMenu();
break;
}
}while(1);
}
case 2:
{
int num;
while(num!=3)
{
printf("1. 查看所有电影\n");
printf("2. 按评分升序排序\n");
printf("3. 返回主界面\n");
printf("请选择功能 \n");
scanf("%d",&num);
}
switch(num)
{
case 1:
queryList();
break;
case 2:
BubbleSort();
break;
default:
break;
}
}
default:
break;
}