超市管理系统,有没有会的老哥,要全套方法以及讲解。有意的请和我联系,有偿
中午写了好大会儿,代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 1000
typedef struct goods {
int num; // 编号
char name[20]; // 名称
float purprice;// 进价
float selprice;// 售价
int selnum ; // 日销售量
int repnum; // 库存
char producer[20]; // 生产者
}GOODS;
int n;
GOODS goods[N];
// 菜单
void menu(void) {
printf("请选择系统功能项:\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");
}
// 输出单个商品信息
void printgoods(GOODS g) {
printf("编号 名称 进价 售价 日销售量 库存 生产者\n");
printf("%d %s %.2f %.2f %d %d %s\n", g.num, g.name, g.purprice, g.selprice, g.selnum, g.repnum, g.producer);
}
// (7)输出商品信息表
void printallgoods(void) {
printf("========== 商品信息表 ==========\n");
printf("编号 名称 进价 售价 日销售量 库存 生产者\n");
for (int i = 0; i < n; i++) {
GOODS g = goods[i];
printf("%d %s %.2f %.2f %d %d %s\n", g.num, g.name, g.purprice, g.selprice, g.selnum, g.repnum, g.producer);
}
}
// (1)添加商品
void insertdata(void) {
printf("========== 添加商品 ==========\n");
printf("请输入商品信息(编号 名称 进价 售价 日销售量 库存 生产者)\n");
GOODS g;
scanf("%d %s %f %f %d %d %s", &g.num, g.name, &g.purprice, &g.selprice, &g.selnum, &g.repnum, g.producer);
goods[n] = g;
n++;
}
// 通过编号查询
GOODS selectbynum(int num) {
for (int i = 0; i < n; i++) {
GOODS g = goods[i];
if (g.num == num) {
return g;
}
}
GOODS g;
g.num = -1;
return g;
}
// 通过名称查询
GOODS selectbyname(char name[20]) {
for (int i = 0; i < n; i++) {
GOODS g = goods[i];
if (strcmp(g.name, name) == 0) {
return g;
}
}
GOODS g;
g.num = -1;
return g;
}
// (2)查询商品
void selectdata(void) {
printf("========== 查询商品 ==========\n");
int f = 1;
while (f) {
printf("请输入操作选项:\n");
printf("(1)通过编号查找商品\n");
printf("(2)通过名称查找商品\n");
int op;
scanf("%d", &op);
switch (op) {
case 1:
{
printf("请输入商品编号:");
int num;
scanf("%d", &num);
GOODS g = selectbynum(num);
if (g.num == -1) {
printf("未查到该商品,继续查找请输入:1\n");
int o;
scanf("%d", &o);
if (o != 1) {
f = 0;
}
} else {
printgoods(g);
f = 0;
}
}
break;;
case 2:
{
printf("请输入商品名称:");
char name[20];
scanf("%s", name);
GOODS g = selectbyname(name);
if (g.num == -1) {
printf("未查到该商品,继续查找请输入:1\n");
int o;
scanf("%d", &o);
if (o != 1) {
f = 0;
}
} else {
printgoods(g);
f = 0;
}
}
break;
default:
{
printf("请正确输入选项~\n");
}
break;
}
}
}
// (3)商品排序
void sortdata(void) {
printf("========== 商品排序 ==========\n");
while (1) {
printf("请输入操作选项:\n");
printf("(1)按销售价降序\n");
printf("(2)按日销售量降序\n");
int op;
scanf("%d", &op);
if (op != 1 && op != 2) {
printf("请正确输入选项~\n");
continue;
}
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (op == 1) {
if (goods[i].selprice < goods[j].selprice) {
GOODS temp = goods[i];
goods[i] = goods[j];
goods[j] = temp;
}
} else if (op == 2) {
if (goods[i].selnum < goods[j].selnum) {
GOODS temp = goods[i];
goods[i] = goods[j];
goods[j] = temp;
}
}
}
}
printf("排序完成~~\n");
break;
}
}
// (4)删除商品
void deletedata(void) {
printf("========== 删除商品 ==========\n");
while (1) {
printf("请输入商品编号:");
int num;
scanf("%d", &num);
int i;
for (i = 0; i < n; i++) {
if (goods[i].num == num) {
break;
}
}
if (i < n) {
for (; i < n - 1; i++) {
goods[i] = goods[i+1];
}
n--;
printf("删除成功~~\n");
break;
}
printf("未查到该商品,继续查找请输入:1\n");
int o;
scanf("%d", &o);
if (o != 1) {
break;
}
}
}
// (5)修改商品
void updatedata(void) {
printf("========== 修改商品 ==========\n");
while (1) {
printf("请输入商品编号:");
int num;
scanf("%d", &num);
int i;
for (i = 0; i < n; i++) {
if (goods[i].num == num) {
printf("请重新输入商品信息(编号 名称 进价 售价 日销售量 库存 生产者)\n");
GOODS ng;
scanf("%d %s %f %f %d %d %s", &ng.num, ng.name, &ng.purprice, &ng.selprice, &ng.selnum, &ng.repnum, ng.producer);
goods[i] = ng;
printf("修改成功~~\n");
return;
}
}
if (i == n) {
printf("未查到该商品,继续查找请输入:1\n");
int o;
scanf("%d", &o);
if (o != 1) {
break;
}
}
}
}
// (6)日销售盈利分析
void gain(void) {
printf("========== 日销售盈利分析 ==========\n");
float totalsel = 0;
for (int i = 0; i < n; i++) {
GOODS g = goods[i];
totalsel += g.selnum * (g.selprice - g.purprice);
}
printf("日销售盈利:%.2f\n", totalsel);
}
// (8)保存到文件
void save(void) {
FILE *pf;
pf = fopen("supermarket.txt", "w");
if (pf != NULL) {
for (int i = 0; i < n; i++) {
GOODS g = goods[i];
fprintf(pf, "%d %s %f %f %d %d %s\n", g.num, g.name, g.purprice, g.selprice, g.selnum, g.repnum, g.producer);
}
fclose(pf);
} else {
printf("supermarket.txt is not exist!\n");
}
}
int main(int argc, const char * argv[]) {
n = 0;
char pwd[20];
while (1) {
printf("请输入密码:\n");
scanf("%s", pwd);
// 如果有校验可以在次校验
printf("密码正确,欢迎进入系统!\n");
break;
}
while (1) {
menu();
int o;
scanf("%d", &o);
switch (o) {
case 1:
{
insertdata();
}
break;
case 2:
{
selectdata();
}
break;
case 3:
{
sortdata();
}
break;
case 4:
{
deletedata();
}
break;
case 5:
{
updatedata();
}
break;
case 6:
{
gain();
}
break;
case 7:
{
printallgoods();
}
break;
case 8:
{
save();
}
break;
default:
{
printf("请正确输入选项~\n");
}
break;
}
}
return 0;
}
如有帮助,还望采纳~
用C#还是java,在电脑端还是android端你要说清楚,而且你这个属于量身定做,这个工作量有点大啊
https://blog.csdn.net/qq_62199249/article/details/121986389
https://blog.csdn.net/qq_51596715/article/details/115446040
https://blog.csdn.net/bingongzi/article/details/85757881
这些可以参考。
这是要做毕业设计吗?
同学是哪个班的,你很会解决问题,发一下你的学号给你加学分