公司现有以下设备:普通电视机、DVD、 收藏 带DVD 的电视机,带DVD 的电视机的售价为普通电视机和 DVD 单价之和的 80%,要求对所有的库存设备都能按照品 名进行显示、修改、查找、增加、删除、保存设备信息、的功能,不使用指针和链表 用c语言编程
时间: 2023-07-10 15:15:46 浏览: 106
C/C++实现的进销存管理系统下载(电视机库存管理系统)
好的,根据您的要求,我可以给出以下的代码示例,实现对设备信息的管理:
```c
#include <stdio.h>
#include <string.h>
#define MAX_DEVICES 100 // 最多支持的设备数量
struct Device {
char name[50]; // 设备名称
int type; // 设备类型,0表示普通电视机,1表示DVD,2表示带DVD的电视机
float price; // 设备价格
};
struct Device devices[MAX_DEVICES]; // 存储设备信息的数组
int num_devices = 0; // 当前存储的设备数量
// 显示所有设备信息
void display_devices() {
printf("当前共有 %d 个设备:\n", num_devices);
printf("%-20s%-20s%-20s\n", "设备名称", "设备类型", "设备价格");
for (int i = 0; i < num_devices; i++) {
printf("%-20s%-20s%-20.2f\n", devices[i].name,
devices[i].type == 0 ? "普通电视机" :
devices[i].type == 1 ? "DVD" : "带DVD的电视机", devices[i].price);
}
}
// 根据设备名称查找设备,返回设备在数组中的下标,如果找不到则返回-1
int find_device(char* name) {
for (int i = 0; i < num_devices; i++) {
if (strcmp(devices[i].name, name) == 0) {
return i;
}
}
return -1;
}
// 修改设备信息
void modify_device() {
char name[50];
printf("请输入要修改的设备名称:");
scanf("%s", name);
int index = find_device(name);
if (index == -1) {
printf("找不到此设备!\n");
return;
}
printf("请输入新的设备类型(0表示普通电视机,1表示DVD,2表示带DVD的电视机):");
scanf("%d", &devices[index].type);
printf("请输入新的设备价格:");
scanf("%f", &devices[index].price);
printf("设备信息修改成功!\n");
}
// 增加设备
void add_device() {
if (num_devices >= MAX_DEVICES) {
printf("设备数量已达上限,无法添加新设备!\n");
return;
}
printf("请输入新设备的名称:");
scanf("%s", devices[num_devices].name);
printf("请输入新设备的类型(0表示普通电视机,1表示DVD,2表示带DVD的电视机):");
scanf("%d", &devices[num_devices].type);
printf("请输入新设备的价格:");
scanf("%f", &devices[num_devices].price);
num_devices++;
printf("新设备添加成功!\n");
}
// 删除设备
void delete_device() {
char name[50];
printf("请输入要删除的设备名称:");
scanf("%s", name);
int index = find_device(name);
if (index == -1) {
printf("找不到此设备!\n");
return;
}
for (int i = index; i < num_devices - 1; i++) {
devices[i] = devices[i + 1];
}
num_devices--;
printf("设备删除成功!\n");
}
// 保存设备信息到文件
void save_devices() {
FILE* fp = fopen("devices.txt", "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < num_devices; i++) {
fprintf(fp, "%s %d %.2f\n", devices[i].name, devices[i].type, devices[i].price);
}
fclose(fp);
printf("设备信息保存成功!\n");
}
// 从文件中读取设备信息
void load_devices() {
FILE* fp = fopen("devices.txt", "r");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
num_devices = 0;
while (fscanf(fp, "%s %d %f", devices[num_devices].name,
&devices[num_devices].type, &devices[num_devices].price) == 3) {
num_devices++;
}
fclose(fp);
printf("设备信息读取成功!\n");
}
int main() {
int choice;
load_devices(); // 读取设备信息
while (1) {
printf("请选择操作:\n");
printf("1.显示所有设备信息 2.修改设备信息 3.增加设备 4.删除设备 5.保存设备信息 6.退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
display_devices();
break;
case 2:
modify_device();
break;
case 3:
add_device();
break;
case 4:
delete_device();
break;
case 5:
save_devices();
break;
case 6:
save_devices(); // 退出前保存设备信息
printf("程序已退出!\n");
return 0;
default:
printf("无效操作,请重新输入!\n");
}
}
}
```
以上代码实现了对设备信息的显示、修改、增加、删除、保存等操作,并且使用了一个结构体数组来存储设备信息,不使用指针和链表。同时,设备信息会被保存到文件中,下次启动程序时可以从文件中读取设备信息。
阅读全文