公司现有以下设备:普通电视机、DVD、 收藏 带DVD 的电视机,将这三个设备提前存进文件中。并且条件是 带DVD 的电视机的售价为普通电视机和 DVD 单价之和的 80%。 设备结构体中定义名称、价格、数量、类型 要求对所有的库存设备都能按照品 名进行显示、修改、查找、增加、删除、保存设备信息、的功能,先写主函数 然后在编写每个函数 函数简单 尽量有注释 用c语言编写 不使用指针和链表
时间: 2023-07-10 13:15:56 浏览: 139
首先,我们需要定义一个设备结构体,包含名称、价格、数量、类型等信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DEVICES 100 // 最多存储100个设备
typedef struct Device {
char name[50]; // 名称
float price; // 价格
int quantity; // 数量
char type[20]; // 类型
} Device;
Device devices[MAX_DEVICES]; // 存储所有设备的数组
int num_devices = 0; // 当前存储的设备数量
// 初始化设备信息
void init_devices() {
// 普通电视机
strcpy(devices[0].name, "普通电视机");
devices[0].price = 1000.0;
devices[0].quantity = 10;
strcpy(devices[0].type, "电视");
// DVD
strcpy(devices[1].name, "DVD");
devices[1].price = 500.0;
devices[1].quantity = 5;
strcpy(devices[1].type, "光盘机");
// 带DVD的电视机
strcpy(devices[2].name, "带DVD的电视机");
devices[2].price = devices[0].price + devices[1].price * 0.8;
devices[2].quantity = 3;
strcpy(devices[2].type, "电视");
num_devices = 3;
}
```
接下来,我们实现主函数,包括菜单、输入、输出、调用各个函数等。
```c
int main() {
init_devices(); // 初始化设备信息
int choice;
do {
printf("\n1. 显示所有设备\n");
printf("2. 查找设备\n");
printf("3. 修改设备\n");
printf("4. 增加设备\n");
printf("5. 删除设备\n");
printf("6. 保存设备信息\n");
printf("0. 退出程序\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
display_all_devices();
break;
case 2:
search_device();
break;
case 3:
modify_device();
break;
case 4:
add_device();
break;
case 5:
delete_device();
break;
case 6:
save_devices();
break;
case 0:
printf("程序已退出。\n");
break;
default:
printf("无效选项,请重新输入。\n");
break;
}
} while (choice != 0);
return 0;
}
```
接下来,我们实现各个函数。
1. 显示所有设备
```c
void display_all_devices() {
printf("\n所有设备:\n");
for (int i = 0; i < num_devices; i++) {
printf("%d. 名称:%s,价格:%.2f,数量:%d,类型:%s\n", i + 1, devices[i].name, devices[i].price, devices[i].quantity, devices[i].type);
}
}
```
2. 查找设备
```c
void search_device() {
char name[50];
printf("\n请输入要查找的设备名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < num_devices; i++) {
if (strcmp(devices[i].name, name) == 0) {
printf("名称:%s,价格:%.2f,数量:%d,类型:%s\n", devices[i].name, devices[i].price, devices[i].quantity, devices[i].type);
found = 1;
break;
}
}
if (!found) {
printf("未找到设备。\n");
}
}
```
3. 修改设备
```c
void modify_device() {
char name[50];
printf("\n请输入要修改的设备名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < num_devices; i++) {
if (strcmp(devices[i].name, name) == 0) {
printf("名称:%s,价格:%.2f,数量:%d,类型:%s\n", devices[i].name, devices[i].price, devices[i].quantity, devices[i].type);
printf("请输入新的价格:");
scanf("%f", &devices[i].price);
printf("请输入新的数量:");
scanf("%d", &devices[i].quantity);
found = 1;
break;
}
}
if (!found) {
printf("未找到设备。\n");
} else {
printf("设备已修改。\n");
}
}
```
4. 增加设备
```c
void add_device() {
if (num_devices >= MAX_DEVICES) {
printf("设备库已满,无法添加新设备。\n");
return;
}
printf("\n请输入新设备的名称:");
scanf("%s", devices[num_devices].name);
printf("请输入新设备的价格:");
scanf("%f", &devices[num_devices].price);
printf("请输入新设备的数量:");
scanf("%d", &devices[num_devices].quantity);
printf("请输入新设备的类型:");
scanf("%s", devices[num_devices].type);
num_devices++;
printf("设备已添加。\n");
}
```
5. 删除设备
```c
void delete_device() {
char name[50];
printf("\n请输入要删除的设备名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < num_devices; i++) {
if (strcmp(devices[i].name, name) == 0) {
for (int j = i; j < num_devices - 1; j++) {
devices[j] = devices[j + 1];
}
num_devices--;
found = 1;
break;
}
}
if (!found) {
printf("未找到设备。\n");
} else {
printf("设备已删除。\n");
}
}
```
6. 保存设备信息
```c
void save_devices() {
FILE *fp;
fp = fopen("devices.txt", "w");
if (fp == NULL) {
printf("无法保存设备信息。\n");
return;
}
for (int i = 0; i < num_devices; i++) {
fprintf(fp, "%s %.2f %d %s\n", devices[i].name, devices[i].price, devices[i].quantity, devices[i].type);
}
fclose(fp);
printf("设备信息已保存到文件 devices.txt 中。\n");
}
```
完整代码如下:
阅读全文