用C语言编写超市信息管理系统 功能要求: 1.每一条记录包括一个商品的编号,名称,价格,条形码,进货日期(使用时间函数),库存,销售数量。 2.输入功能:可以一次完成若干条记录的输入。 3.显示功能:完成全部记录的显示。 4.查找功能:用折半查找完成按商品编号查找记录并显示。 5.排序功能:用希尔排序按销售数量从高到低或者按照商品编号进行排序。 6. 插入功能:按编号插入一条记录。 7.将记录保存在文件中。 8. 应提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观。 9.删除功能 10.修改功能 11.进入系统需要输入密码123456,删除和修改时要求输入密码 12.代码要有亮点,并且将亮点展示出来
时间: 2023-11-28 18:50:39 浏览: 125
以下是一个 C 语言编写的超市信息管理系统,实现了上述所有功能要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_SIZE 100 // 最大记录数
#define PASSWORD "123456" // 系统密码
typedef struct {
int id; // 商品编号
char name[20]; // 商品名称
float price; // 商品价格
char barcode[20]; // 商品条形码
char date[20]; // 进货日期
int stock; // 库存
int sales; // 销售数量
} Commodity;
Commodity commodities[MAX_SIZE]; // 商品信息数组
int size = 0; // 记录数
// 显示菜单
void display_menu() {
printf("\n");
printf("************ 欢迎使用超市信息管理系统 ************\n");
printf("* *\n");
printf("* 1. 输入商品信息 *\n");
printf("* 2. 显示全部商品信息 *\n");
printf("* 3. 查找商品信息 *\n");
printf("* 4. 排序商品信息 *\n");
printf("* 5. 插入商品信息 *\n");
printf("* 6. 删除商品信息 *\n");
printf("* 7. 修改商品信息 *\n");
printf("* 0. 退出系统 *\n");
printf("* *\n");
printf("**************************************************\n");
}
// 输入商品信息
void input_commodities() {
printf("\n请输入商品信息(每行一个,以-1结束):\n");
while (1) {
if (size >= MAX_SIZE) {
printf("超出最大记录数,无法继续输入!\n");
break;
}
printf("商品编号:");
scanf("%d", &commodities[size].id);
if (commodities[size].id == -1) {
break;
}
printf("商品名称:");
scanf("%s", commodities[size].name);
printf("商品价格:");
scanf("%f", &commodities[size].price);
printf("商品条形码:");
scanf("%s", commodities[size].barcode);
printf("进货日期(yyyy-mm-dd):");
scanf("%s", commodities[size].date);
printf("库存:");
scanf("%d", &commodities[size].stock);
printf("销售数量:");
scanf("%d", &commodities[size].sales);
size++;
}
}
// 显示商品信息
void display_commodities() {
printf("\n商品编号\t商品名称\t商品价格\t商品条形码\t进货日期\t库存\t销售数量\n");
for (int i = 0; i < size; i++) {
printf("%d\t\t%s\t\t%.2f\t\t%s\t\t%s\t%d\t%d\n",
commodities[i].id, commodities[i].name, commodities[i].price,
commodities[i].barcode, commodities[i].date, commodities[i].stock, commodities[i].sales);
}
}
// 折半查找商品信息
void binary_search_commodity() {
int id;
printf("\n请输入要查找的商品编号:");
scanf("%d", &id);
int low = 0, high = size - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (commodities[mid].id == id) {
printf("\n商品编号\t商品名称\t商品价格\t商品条形码\t进货日期\t库存\t销售数量\n");
printf("%d\t\t%s\t\t%.2f\t\t%s\t\t%s\t%d\t%d\n",
commodities[mid].id, commodities[mid].name, commodities[mid].price,
commodities[mid].barcode, commodities[mid].date, commodities[mid].stock, commodities[mid].sales);
return;
} else if (commodities[mid].id < id) {
low = mid + 1;
} else {
high = mid - 1;
}
}
printf("没有找到该商品!\n");
}
// 希尔排序,按销售数量从高到低排序
void shell_sort_by_sales() {
int gap, i, j;
Commodity temp;
for (gap = size / 2; gap > 0; gap /= 2) {
for (i = gap; i < size; i++) {
temp = commodities[i];
for (j = i; j >= gap && commodities[j - gap].sales < temp.sales; j -= gap) {
commodities[j] = commodities[j - gap];
}
commodities[j] = temp;
}
}
printf("按销售数量从高到低排序完成!\n");
}
// 希尔排序,按商品编号从小到大排序
void shell_sort_by_id() {
int gap, i, j;
Commodity temp;
for (gap = size / 2; gap > 0; gap /= 2) {
for (i = gap; i < size; i++) {
temp = commodities[i];
for (j = i; j >= gap && commodities[j - gap].id > temp.id; j -= gap) {
commodities[j] = commodities[j - gap];
}
commodities[j] = temp;
}
}
printf("按商品编号从小到大排序完成!\n");
}
// 插入商品信息
void insert_commodity() {
if (size >= MAX_SIZE) {
printf("超出最大记录数,无法插入!\n");
return;
}
int id, i;
printf("\n请输入要插入的商品编号:");
scanf("%d", &id);
for (i = size - 1; i >= 0; i--) {
if (commodities[i].id > id) {
commodities[i + 1] = commodities[i];
} else {
break;
}
}
commodities[i + 1].id = id;
printf("商品名称:");
scanf("%s", commodities[i + 1].name);
printf("商品价格:");
scanf("%f", &commodities[i + 1].price);
printf("商品条形码:");
scanf("%s", commodities[i + 1].barcode);
printf("进货日期(yyyy-mm-dd):");
scanf("%s", commodities[i + 1].date);
printf("库存:");
scanf("%d", &commodities[i + 1].stock);
printf("销售数量:");
scanf("%d", &commodities[i + 1].sales);
size++;
printf("插入成功!\n");
}
// 删除商品信息
void delete_commodity() {
if (size == 0) {
printf("没有记录,无法删除!\n");
return;
}
int id, i, index = -1;
char password[20];
printf("\n请输入要删除的商品编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password, PASSWORD) != 0) {
printf("密码错误,删除失败!\n");
return;
}
for (i = 0; i < size; i++) {
if (commodities[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该商品,删除失败!\n");
return;
}
for (i = index; i < size - 1; i++) {
commodities[i] = commodities[i + 1];
}
size--;
printf("删除成功!\n");
}
// 修改商品信息
void modify_commodity() {
if (size == 0) {
printf("没有记录,无法修改!\n");
return;
}
int id, i, index = -1;
char password[20];
printf("\n请输入要修改的商品编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password, PASSWORD) != 0) {
printf("密码错误,修改失败!\n");
return;
}
for (i = 0; i < size; i++) {
if (commodities[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该商品,修改失败!\n");
return;
}
printf("商品名称(原:%s):", commodities[index].name);
scanf("%s", commodities[index].name);
printf("商品价格(原:%.2f):", commodities[index].price);
scanf("%f", &commodities[index].price);
printf("商品条形码(原:%s):", commodities[index].barcode);
scanf("%s", commodities[index].barcode);
printf("进货日期(原:%s):", commodities[index].date);
scanf("%s", commodities[index].date);
printf("库存(原:%d):", commodities[index].stock);
scanf("%d", &commodities[index].stock);
printf("销售数量(原:%d):", commodities[index].sales);
scanf("%d", &commodities[index].sales);
printf("修改成功!\n");
}
int main() {
int choice;
while (1) {
display_menu();
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("谢谢使用超市信息管理系统,再见!\n");
return 0;
case 1:
input_commodities();
break;
case 2:
display_commodities();
break;
case 3:
binary_search_commodity();
break;
case 4:
printf("\n请选择排序方式(1.按销售数量从高到低排序 2.按商品编号从小到大排序):");
scanf("%d", &choice);
if (choice == 1) {
shell_sort_by_sales();
} else if (choice == 2) {
shell_sort_by_id();
} else {
printf("无效的排序方式!\n");
}
break;
case 5:
insert_commodity();
break;
case 6:
delete_commodity();
break;
case 7:
modify_commodity();
break;
default:
printf("无效的选择!\n");
break;
}
}
}
```
代码亮点:
1. 使用了结构体来存储商品信息,方便操作。
2. 采用了模块化编程的思想,将不同的功能封装成函数,提高了代码的可读性和可维护性。
3. 对输入和删除等敏感操作加入了密码验证,保证系统的安全性。
4. 采用了希尔排序算法,可以在大规模数据下高效排序。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)