tooler.h文件
定义一个结构体,表示影片信息:
编号 片名 导演 片长
struct film_info
{
int id;
char name[32];
char director[32];
int time;
};
main.c文件
通过结构体数组存储影片信息
设计菜单:
1==========》添加影片
2==========》删除影片
3==========》修改影片
4==========》查找影片
5==========》显示所有影片
6==========》退出
#include <stdio.h>
#include "film.h"
int main()
{
struct film_info f[NUM];
int sel;
int flag = 1;
int count = 0 ; //影片的数量
while(flag)
{
printf("1、添加影片信息\n");
printf("2、删除影片信息\n");
printf("3、修改影片信息\n");
printf("4、显示所有影片信息\n");
printf("5、查找影片信息\n");
printf("0、退出系统\n");
printf("请输入你的选择:");
scanf("%d", &sel);
while(getchar()!='\n');
switch(sel)
{
case 1:
add_film_info(f, &count);
break;
case 2:
del_film_info(f, &count);
break;
case 3:
mod_film_info(f, count);
break;
case 4:
show_film_info(f, count);
break;
case 5:
find_film_info(f, count);
break;
case 0:
flag = 0;
break;
default:
printf("输入有误,请重新选择!\n");
break;
}
}
return 0;
}
film.c文件
将每一模块功能封装成一个函数
添加影片:void add_film_info(struct film_info f[], int *pcount)
删除影片:void del_film_info(struct film_info f[], int *pcount)
修改影片:void mod_film_info(struct film_info f[], int count)
查找影片:
①定位到影片在数组中的下标 int find_film_info_by_id(struct film_info f[], int count, int id)
②根据下标查找影片信息 void find_film_info(struct film_info f[], int count)
显示所有影片:void show_film_info(struct film_info f[], int count)
#include <stdio.h>
#include "film.h"
void add_film_info(struct film_info f[], int *pcount)
{
if(*pcount > NUM)
{
printf("内存已满,添加失败!\n");
return ;
}
struct film_info t;
static int id = 1000;
t.id = id;
id ++;
printf("请输入影片名称:");
scanf("%s", t.name);
while(getchar()!='\n');
printf("请输入影片的导演:");
scanf("%s", t.director);
while(getchar()!='\n');
printf("请输入影片时长:");
scanf("%d", &t.time);
while(getchar()!='\n');
f[*pcount] = t;
(*pcount) ++;
printf("添加影片信息成功!\n");
return ;
}
void show_film_info(struct film_info f[], int count)
{
if(count == 0)
{
printf("暂无影片信息!\n");
return ;
}
printf("编号\t名称\t导演\t时长\n");
for(int i=0; i<count; i++)
{
printf("%d\t%s\t%s\t%d\n", f[i].id, f[i].name, f[i].director, f[i].time);
}
}
// 查找失败: -1
// 查找成功: 返回对应的下标
int find_film_info_by_id(struct film_info f[], int count, int id)
{
for(int i=0; i<count; i++)
{
if(f[i].id == id)
{
return i;
}
}
return -1;
}
void find_film_info(struct film_info f[], int count)
{
int id;
printf("请输入查找的影片编号:");
scanf("%d", &id);
while(getchar()!='\n');
int index = find_film_info_by_id(f, count, id);
if(index<0)
{
printf("影片编号为 %d 不存在!\n", id);
}
else
{
printf("编号为%d影片信息如下:\n", id);
printf("名称: %s\n", f[index].name);
printf("导演: %s\n", f[index].director);
printf("时长: %d\n", f[index].time);
}
return ;
}
void del_film_info(struct film_info f[], int *pcount)
{
int id;
printf("请输入删除的影片编号:");
scanf("%d", &id);
while(getchar()!='\n');
int index = find_film_info_by_id(f, *pcount, id);
if(index < 0)
{
printf("编号不存在,删除失败!\n");
return ;
}
for(int j= index+1; j<*pcount; j++)
{
f[j-1] = f[j];
}
(*pcount) --;
printf("删除成功!\n");
return ;
}
void mod_film_info(struct film_info f[], int count)
{
int id;
printf("请输入修改的影片编号:");
scanf("%d", &id);
while(getchar()!='\n');
int index = find_film_info_by_id(f, count, id);
if(index<0)
{
printf("修改失败,编号不存在!\b");
return ;
}
int flag = 1;
int sel;
while(flag)
{
printf("1、名称 2、导演 3、时长 0、返回上一层\n");
printf("请输入修改选项:");
scanf("%d", &sel);
while(getchar()!='\n');
switch(sel)
{
case 1:
printf("请输入新的影片名称:");
scanf("%s", f[index].name);
while(getchar()!='\n');
break;
case 2:
printf("请输入新的影片导演:");
scanf("%s", f[index].director);
while(getchar()!='\n');
break;
case 3:
printf("请输入新的影片时长:");
scanf("%d", &f[index].time);
while(getchar()!='\n');
break;
case 0:
flag = 0;
break;
default:
printf("输入有误,请重新选择!\n");
break;
}
}
}
film.h文件
存放函数的头文件
#include <stdio.h>
#include "tooler.h"
#define NUM 10
void add_film_info(struct film_info f[], int *pcount);
void show_film_info(struct film_info f[], int count);
int find_film_info_by_id(struct film_info f[], int count, int id);
void find_film_info(struct film_info f[], int count);
void del_film_info(struct film_info f[], int *pcount);
void mod_film_info(struct film_info f[], int count);