基于c语言的简易管理系统,已用visual c++6.0调试可用
单片机源程序如下:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <conio.h>
- #define PR printf
- #define SC scanf
- struct goods
- {
- int num;
- char name[20];
- char sort[20];
- int count;
- float price;
- }goods[100]; //全局定义结构体名称
- int k,n,i;
- void input();
- void sequence();
- void purchase();
- void sell();
- void edit();
- void correct();
- void search();
- void scan();
- void reserve();
- int open();
- void main ()
- {
- i=1;
- while(i) /*菜单选择界面*/
- {
- system("color F0");
- PR("\n\n--★-☆--★-☆--☆-★--☆-★--☆-☆--★-\n");
- PR("\n\t\t\t 商品信息管理系统\t\n\n");
- PR("\t 1 →重新输入商品信息\n\n");
- PR("\t 2 →排序商品信息\n\n");
- PR("\t 3 →输入进货信息\n\n");
- PR("\t 4 →输入销售信息\n\n");
- PR("\t 5 →增加/删除商品\n\n");
- PR("\t 6 →修改商品信息\n\n");
- PR("\t 7 →查询商品信息\n\n");
- PR("\t 8 →浏览商品信息\n\n");
- PR("\t 9 →保存商品信息\n\n");
- PR("\t 10→打开一个文件\n\n");
- PR("\t 0 →退出系统\n\n");
- PR("\n\n--☆-★--☆-★--☆-☆--★-☆--★-☆--★-");
- PR("\n\n");
- PR("\t请选择您所要的操作:");
- fflush(stdin);
- SC("%d",&k);
- system("cls");
- switch(k)
- {
- case 1: input();break;
- case 2: sequence();break;
- case 3: purchase();break;
- case 4: sell();break;
- case 5: edit();break;
- case 6: correct();break;
- case 7: search();break;
- case 8: scan();break;
- case 9: reserve();break;
- case 10: open();break;
- case 0: PR("\n\n\t…………谢谢使用,欢迎再来,再见O(∩_∩)O…………");exit(0);
- default: puts("输入错误,请按任意健返回主菜单:\n"); break;
- }
- system("cls"); /*清屏*/
- }
- }
- void input() /*功能1:重新输入商品信息*/
- {
- PR("\n\n\t\t请输入需要建立新库存的商品数量:");
- SC("%d",&n);
- system("cls");
- for(i=0;i<n;i++) /*用循环实现输入n个商品*/
- {
- PR("\n\t 请输入商品的编号:(数字)");
- SC("%ld",&goods[i].num);
- PR("\n\t 请输入商品的名称:");
- SC("%s",goods[i].name);
- PR("\n\t 请输入商品的种类:");
- SC("%s",goods[i].sort);
- PR("\n\t 请输入商品的数量:(数字)");
- SC("%d",&goods[i].count);
- PR("\n\t 请输入商品的单价:(数字)");
- SC("%f",&goods[i].price);
- PR("\n …………………………………………………………………………………………………\n");
- }
- PR("\tPlease press any key to continue");
- getch();
- main();
- }
- void sequence() /*功能2:排序商品信息*/
- {
- int temp;
- float temptemp;
- char p1[30],p2[30];
- for(k=0;k<n-1;k++) /*按商品类别排序*/
- for(i=0;i<n-k-1;i++) /*冒泡排序*/
- if(strcmp(goods[i].sort,goods[i+1].sort)>0) /*按商品类别首字母由小到大排序*/
- {
- temp=goods[i].num;
- goods[i].num=goods[i+1].num;
- goods[i+1].num=temp;
- strcpy(p1,goods[i].name);
- strcpy(goods[i].name,goods[i+1].name);
- strcpy(goods[i+1].name,p1);
- strcpy(p2,goods[i].sort);
- strcpy(goods[i].sort,goods[i+1].sort);
- strcpy(goods[i+1].sort,p2);
- temp=goods[i].count;
- goods[i].count=goods[i+1].count;
- goods[i+1].count=temp;
- temptemp=goods[i].price;
- goods[i].price=goods[i+1].price;
- goods[i+1].price=temptemp;
- }
- PR("--------------------------------------------------------------------------------");
- PR("\n\t\t按商品类别排序后的商品信息\n\n");
- PR("\n|★商品类别★ 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- for(k=0;k<n-1;k++) /*按商品名称排序*/
- for(i=0;i<n-k-1;i++) /*冒泡排序*/
- if(strcmp(goods[i].name,goods[i+1].name)>0) /*按商品首字母由小到大排序*/
- {
- temp=goods[i].num;
- goods[i].num=goods[i+1].num;
- goods[i+1].num=temp;
- strcpy(p1,goods[i].name);
- strcpy(goods[i].name,goods[i+1].name);
- strcpy(goods[i+1].name,p1);
- strcpy(p2,goods[i].sort);
- strcpy(goods[i].sort,goods[i+1].sort);
- strcpy(goods[i+1].sort,p2);
- temp=goods[i].count;
- goods[i].count=goods[i+1].count;
- goods[i+1].count=temp;
- temptemp=goods[i].price;
- goods[i].price=goods[i+1].price;
- goods[i+1].price=temptemp;
- }
- PR("--------------------------------------------------------------------------------");
- PR("\n\t\t按商品名称排序后的商品信息\n");
- PR("\n|商品类别 商品编号 ★商品名称★ 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- for(k=0;k<n-1;k++) /*按编号排序*/
- for(i=0;i<n-k-1;i++) /*冒泡排序*/
- if(goods[i].num>goods[i+1].num) /*按编号由小到大排序*/
- {
- temp=goods[i].num;
- goods[i].num=goods[i+1].num;
- goods[i+1].num=temp;
- strcpy(p1,goods[i].name);
- strcpy(goods[i].name,goods[i+1].name);
- strcpy(goods[i+1].name,p1);
- strcpy(p2,goods[i].sort);
- strcpy(goods[i].sort,goods[i+1].sort);
- strcpy(goods[i+1].sort,p2);
- temp=goods[i].count;
- goods[i].count=goods[i+1].count;
- goods[i+1].count=temp;
- temptemp=goods[i].price;
- goods[i].price=goods[i+1].price;
- goods[i+1].price=temptemp;
- }
- PR("--------------------------------------------------------------------------------");
- PR("\n\t\t按商品编号排序后的商品信息\n\n");
- PR("\n|商品类别 ★商品编号★ 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
-
- PR("--------------------------------------------------------------------------------\n");
- PR("please press any key to continue");
- getch();
- main();
- }
- void purchase() /*功能3:进货商品信息*/
- {
- long temp; /*定义临时变量表示刚进货的商品编号*/
- int j;
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n\t请输入刚进货的商品编号:");
- SC("%ld",&temp);
- fflush(stdin);
- PR("\n\t请输入刚进货的商品数量:");
- SC("%d",&j);
- fflush(stdin);
- for(i=0;i<n;i++) /*寻找与进货相同的商品信息*/
- if(temp==goods[i].num)
- goods[i].count=goods[i].count+j; /*更改商品数量*/
- PR("\n\tpress any key to continue:");
- getch();
- PR("\n\t进货后的商品信息:");
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n\n\t\tPress any key to enter menu");
- getch();
- main();
- }
- void sell() /*功能4:销售商品信息*/
- {
- int number,sell; /*临时变量temp:表示刚销售的商品编号*/
- PR("\n|\t商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n\t请输入刚销售的商品编号:");
- SC("%ld",&number);
- fflush(stdin);
- PR("\n\t请输入刚销售的商品数量:");
- SC("%d",&sell);
- for(i=0;i<n;i++) /*找到刚销售的商品信息*/
- {
- if(number==goods[i].num)
- {
- for(;sell>goods[i].count;) /*如果销售额大于库存量,则出现错误提示*/
- {
- PR("\n\t售出数量大于商品原有数量,请重新输入:");
- SC("%d",&sell);
- }
- goods[i].count=goods[i].count-sell; /*更改商品数量的功能*/
- }
- }
- PR("\n\tpress any key to continue:");
- getch();
- PR("\n| 销售后商品信息: |");
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n\tPress any key to enter menu");
- getch();
- main(); /*返回功能选择界面*/
- }
- void edit() /*功能5:添加或删除商品信息*/
- {
- void add(); /*声明子函数*/
- void delete();
- PR("\n\t请选择:1.添加商品信息; 2.删除商品信息;\n");
- SC("%d",&k);
- switch(k) /*用switch语句实现功能选择*/
- {
- case 1: add();break;
- case 2: delete();break;
- }
- PR("\n\tPress any key to enter menu");
- getch();
- main(); /*返回主菜单*/
- }
- void add() /*添加商品信息*/
- { /*定义子函数*/
- PR("\t*请输入所添加商品的商品编号:");
- SC("%ld",&goods[n].num);
- PR("\n\t请输入所添加商品的名称:");
- SC("%s",goods[n].name);
- PR("\n\t请输入所添加商品的类别:");
- SC("%s",goods[n].sort);
- PR("\n\t请输入所添加商品的数量:");
- SC("%d",&goods[n].count);
- PR("\n\t请输入所添加商品的价格:");
- SC("%f",&goods[n].price);
- n=n+1;
- PR("\n");
- return;
- }
-
- void delete() /*删除商品信息*/
- { /*定义子函数*/
- int temp; /*定义局部变量*/
- int j;
- PR("\n|\t商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n请输入要删除的商品编号:");
- SC("%d",&temp);
- PR("\n\n");
- for(i=0;i<n;i++)
- {
- if(temp==goods[i].num)
- {
- for(j=i;j<n;j++) /*全部前移覆盖一位*/
- {
- goods[j].num=goods[j+1].num;
- strcpy(goods[j].name,goods[j+1].name);
- strcpy(goods[j].sort,goods[j+1].sort);
- goods[j].count=goods[j+1].count;
- goods[j].price=goods[j+1].price;
- }
- n=n-1; /*商品总库存量减少*/
- }
- }
- for(i=0;i<n;i++)
- {
- PR("删除后的商品信息为:\n");
- PR("\n|\t商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- }
- return; /*返回主界面*/
- }
- void correct() /*功能6:修改商品信息*/
- {
- int temp; /*定义局部变量*/
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\t请输入要修改的商品的编号:");
- SC("%d",&temp); /*输入新的商品信息*/
- PR("\n");
- for(i=0;i<n;i++) /*保存新的商品信息*/
- {
- if(temp==goods[i].num)
- {
- PR("\t请输入一个新的的商品编号:");
- SC("%ld",&goods[i].num);
- PR("\n\t请输入新的商品的名称:");
- SC("%s",goods[i].name);
- PR("\n\t请输入新的商品的类别:");
- SC("%s",goods[i].sort);
- PR("\n\t请输入新的商品的数量:");
- SC("%d",&goods[i].count);
- PR("\n\t请输入新的商品价格:");
- SC("%f",&goods[i].price);
- PR("\n");
- }
- }
- PR("修改之后的商品信息为:\n");
- PR("\n|\t商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("Please press any key to continue"); /*返回功能选择界面*/
- getch();
- main(); /*返回主菜单*/
- }
- void search() /*功能7:查询商品信息*/
- {
- int a; /*定义局部变量*/
- int temp1;
- char temp2[30],temp3[20];
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("\n1-按商品编号查询\n2-按商品名查询\n3-按商品类别查询\n4-查需要进货的商品\n");
- PR("\n\t请输入数字确定查询方式:");
- SC("%d",&k);
- switch(k) /*查询方式的选择*/
- {
- case 1:
- PR("\n\t请输入要查询的商品的编号:"); /*按商品编号查询*/
- SC("%d",&temp1);
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- if(temp1==goods[i].num)
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- break;
- case 2:
- PR("\n\t请输入要查询的商品名:"); /*按商品名查询数据*/
- SC("%s",temp2);
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- if(strcmp(temp2,goods[i].name)==0)
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- break;
- case 3:
- PR("\n\t请输入要查询的商品类别:"); /*按商品类别查询数据*/
- SC("%s",temp3);
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- if(strcmp(temp3,goods[i].sort)==0)
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- break;
- case 4:
- printf("请输入进货标准:(标准库存)");
- scanf("%d",&a);
- for(i=0;i<n;i++) /*查询需要进货的商品名*/
- {
- if(goods[i].count<a)
- PR("\n需要进货的商品名:%s 现有库存量:%d\n",goods[i].name,goods[i].count);
- }
- break;
- }
- PR("\n\n\tPress any key to enter menu");
- getch();
- main();
- }
- void scan() /*功能8:浏览商品信息*/
- {
- PR("\t\t\t浏览输入的商品信息\n");
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- PR("Press any key to enter menu");
- getch();
- main();
- }
- void reserve() /*功能9:保存文件*/
- {
- FILE *fp;
- system("cls"); /*清屏*/
- PR("\n\t请输入文件名");
- fp=fopen("GOODS.txt","w+"); /*创建并打开一个文件,并得到该文件的地址*/
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for(i=0;i<n;i++)
- {
- fprintf(fp,"%10s %5d %10s %5d %6.2f\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- }
- fclose(fp); /*关闭文件*/
- PR("文件已经保存!\n");
- getch();
- system("cls"); /*清屏*/
- main();
- }
- int open()
- {
- int number=0;
- FILE *fp;
- if((fp=fopen("GOODS.txt","r"))==NULL)/*p1是图书管理系统的书籍信息文件指针*/
- {
- PR("还没有保存过文件呢,朋友\n");
- PR("按任意键回到主菜单!\n");
- getch();
- return(0);
- main();
- }
- else
- {
- n=0;
- fflush(stdin);
- PR("文件内容如下:\n\n\n");
- PR("\n|商品类别 商品编号 商品名称 商品数量 商品单价|\n");
- for (i=0; !feof(fp); i++)
- {
- fflush(stdin);
- /*fscanf(里边必须加\n,否则会有奇怪的一行0)*/
- fscanf(fp,"%s %d %s %5d %f\n",goods[i].sort,&goods[i].num,goods[i].name,&goods[i].count,&goods[i].price);
- PR("|%-10s %5d %10s %5d %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
- n++;
- }
- fclose(fp);
- printf("按任意键回到主菜单!\n\n");
- getch();
- return(n);
- main();
- }
- }
复制代码
所有资料51hei提供下载:
基于c语言的简易商品管理系统.rar
(3.27 KB, 下载次数: 10)
|