搭建一个影片管理系统

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);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值