用c编程实现以下功能(1)添加普通用户用户名和密码信息。 (2)重置普通用户初始密码。(如:1) (3)添加功能:根据选择界面添加商品类别,添加各类商品信息。添加记录时,要求商品编号唯一。如果添加了重复记录,则提示数据添加重复并取消添加。 (4)查询功能:可按商品类别、商品编号、商品名称、生产厂家等信息进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。(包括模糊查询和精准查询) (5)修改功能:可修改相应记录中除商品编号以外的信息。注意修改前要求有确认提示操作。 (6)删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。注意删除前要求确认提示操作。 (7)统计功能:输出当前库存中所有商品的总数及详细信息;可按商品的销售情况进行统计,输出统计信息时,要按从大到小进行排序。库存量不足提示。 (8)保存功能:将当前程序中的商品信息存入文件中。 (9)导入功能:从文件中将商品信息读入程序。
时间: 2023-12-14 08:39:18 浏览: 68
用c实现计算器的基本功能
3星 · 编辑精心推荐
以下是用C语言实现以上功能的示例代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义用户结构体
struct User {
char username[50];
char password[50];
};
// 定义商品结构体
struct Product {
char category[50];
char id[50];
char name[50];
char manufacturer[50];
int quantity;
float price;
};
// 全局变量,用于保存用户信息和商品信息
struct User users[50];
int user_count = 0;
struct Product products[50];
int product_count = 0;
// 函数声明
void add_user();
void reset_password();
void add_product();
void search_product();
void modify_product();
void delete_product();
void statistics();
void save_to_file();
void load_from_file();
int main() {
int choice;
load_from_file(); // 从文件中读取商品信息
while (1) {
// 显示菜单
printf("\n-------- 商品管理系统 --------\n");
printf("1. 添加用户\n");
printf("2. 重置密码\n");
printf("3. 添加商品\n");
printf("4. 查询商品\n");
printf("5. 修改商品\n");
printf("6. 删除商品\n");
printf("7. 统计商品\n");
printf("8. 保存商品信息到文件\n");
printf("9. 从文件中导入商品信息\n");
printf("0. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_user();
break;
case 2:
reset_password();
break;
case 3:
add_product();
break;
case 4:
search_product();
break;
case 5:
modify_product();
break;
case 6:
delete_product();
break;
case 7:
statistics();
break;
case 8:
save_to_file();
break;
case 9:
load_from_file();
break;
case 0:
printf("谢谢使用!\n");
return 0;
default:
printf("无效选项,请重新输入!\n");
break;
}
}
}
void add_user() {
if (user_count >= 50) {
printf("用户数量已达上限!\n");
return;
}
printf("请输入用户名:");
scanf("%s", users[user_count].username);
printf("请输入密码:");
scanf("%s", users[user_count].password);
user_count++;
printf("用户添加成功!\n");
}
void reset_password() {
char username[50];
char password[50];
int i;
printf("请输入用户名:");
scanf("%s", username);
for (i = 0; i < user_count; i++) {
if (strcmp(users[i].username, username) == 0) {
printf("请输入新密码:");
scanf("%s", password);
strcpy(users[i].password, password);
printf("密码重置成功!\n");
return;
}
}
printf("该用户不存在!\n");
}
void add_product() {
if (product_count >= 50) {
printf("商品数量已达上限!\n");
return;
}
printf("请输入商品类别:");
scanf("%s", products[product_count].category);
printf("请输入商品编号:");
scanf("%s", products[product_count].id);
printf("请输入商品名称:");
scanf("%s", products[product_count].name);
printf("请输入生产厂家:");
scanf("%s", products[product_count].manufacturer);
printf("请输入商品数量:");
scanf("%d", &products[product_count].quantity);
printf("请输入商品价格:");
scanf("%f", &products[product_count].price);
product_count++;
printf("商品添加成功!\n");
}
void search_product() {
int choice, i;
char keyword[50];
printf("请选择查询方式:\n");
printf("1. 按商品类别查询\n");
printf("2. 按商品编号查询\n");
printf("3. 按商品名称查询\n");
printf("4. 按生产厂家查询\n");
printf("请输入选项:");
scanf("%d", &choice);
printf("请输入查询关键字:");
scanf("%s", keyword);
for (i = 0; i < product_count; i++) {
if ((choice == 1 && strcmp(products[i].category, keyword) == 0)
|| (choice == 2 && strcmp(products[i].id, keyword) == 0)
|| (choice == 3 && strcmp(products[i].name, keyword) == 0)
|| (choice == 4 && strcmp(products[i].manufacturer, keyword) == 0)) {
printf("类别:%s,编号:%s,名称:%s,生产厂家:%s,数量:%d,价格:%.2f\n",
products[i].category, products[i].id, products[i].name,
products[i].manufacturer, products[i].quantity, products[i].price);
return;
}
}
printf("该记录不存在!\n");
}
void modify_product() {
int i;
char id[50];
printf("请输入要修改的商品编号:");
scanf("%s", id);
for (i = 0; i < product_count; i++) {
if (strcmp(products[i].id, id) == 0) {
printf("类别:%s,编号:%s,名称:%s,生产厂家:%s,数量:%d,价格:%.2f\n",
products[i].category, products[i].id, products[i].name,
products[i].manufacturer, products[i].quantity, products[i].price);
printf("请输入新的商品类别:");
scanf("%s", products[i].category);
printf("请输入新的商品名称:");
scanf("%s", products[i].name);
printf("请输入新的生产厂家:");
scanf("%s", products[i].manufacturer);
printf("请输入新的商品数量:");
scanf("%d", &products[i].quantity);
printf("请输入新的商品价格:");
scanf("%f", &products[i].price);
printf("商品信息修改成功!\n");
return;
}
}
printf("该商品不存在!\n");
}
void delete_product() {
int i, j;
char category[50], name[50];
printf("请输入商品类别:");
scanf("%s", category);
printf("请输入商品名称:");
scanf("%s", name);
for (i = 0; i < product_count; i++) {
if (strcmp(products[i].category, category) == 0 && strcmp(products[i].name, name) == 0) {
printf("类别:%s,编号:%s,名称:%s,生产厂家:%s,数量:%d,价格:%.2f\n",
products[i].category, products[i].id, products[i].name,
products[i].manufacturer, products[i].quantity, products[i].price);
printf("确认删除该商品吗?(1-是,0-否)");
scanf("%d", &j);
if (j == 1) {
for (; i < product_count - 1; i++) {
products[i] = products[i + 1];
}
product_count--;
printf("商品删除成功!\n");
} else {
printf("取消删除商品!\n");
}
return;
}
}
printf("该商品不存在!\n");
}
void statistics() {
int choice, i, j, k;
float total_price = 0;
printf("请选择统计方式:\n");
printf("1. 统计所有商品\n");
printf("2. 按销售情况统计\n");
printf("请输入选项:");
scanf("%d", &choice);
if (choice == 1) {
printf("当前库存中所有商品的总数及详细信息:\n");
for (i = 0; i < product_count; i++) {
printf("类别:%s,编号:%s,名称:%s,生产厂家:%s,数量:%d,价格:%.2f\n",
products[i].category, products[i].id, products[i].name,
products[i].manufacturer, products[i].quantity, products[i].price);
total_price += products[i].price * products[i].quantity;
}
printf("总计:%d 件商品,总价值:%.2f 元\n", product_count, total_price);
} else if (choice == 2) {
printf("按销售情况统计:\n");
// 冒泡排序
for (i = 0; i < product_count - 1; i++) {
for (j = 0; j < product_count - 1 - i; j++) {
if (products[j].quantity < products[j + 1].quantity) {
struct Product temp = products[j];
products[j] = products[j + 1];
products[j + 1] = temp;
}
}
}
for (i = 0; i < product_count; i++) {
printf("%d. 商品名称:%s,销售数量:%d,销售金额:%.2f 元\n",
i + 1, products[i].name, products[i].quantity, products[i].price * products[i].quantity);
}
} else {
printf("无效选项!\n");
}
}
void save_to_file() {
FILE *fp;
int i;
fp = fopen("products.dat", "wb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fwrite(&product_count, sizeof(int), 1, fp); // 先写入商品数量
for (i = 0; i < product_count; i++) {
fwrite(&products[i], sizeof(struct Product), 1, fp); // 逐个写入商品信息
}
fclose(fp);
printf("商品信息保存成功!\n");
}
void load_from_file() {
FILE *fp;
int i;
fp = fopen("products.dat", "rb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fread(&product_count, sizeof(int), 1, fp); // 先读取商品数量
for (i = 0; i < product_count; i++) {
fread(&products[i], sizeof(struct Product), 1, fp); // 逐个读取商品信息
}
fclose(fp);
printf("商品信息导入成功!\n");
}
```
以上代码中,我们使用了结构体来分别存储用户和商品的信息,并且定义了相应的函数来实现各项功能。在主函数中,我们通过一个循环来显示菜单并等待用户输入选项,然后根据选项调用相应的函数来完成操作。同时,我们还提供了将商品信息保存到文件和从文件中读取商品信息的功能,这样可以保证商品信息不会因程序关闭而丢失。
阅读全文