|
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<dos.h>
- #include<string.h>
- #define LEN sizeof(struct commdity)
- #define FORMAT"%-8d%-15s%-12.11f%-12.11f%-12.11f\n"
- #define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total
- struct commdity
- {
- int num;
- char name[15];
- double price;
- double count;
- double total;
- };
- struct commdity comm[50];
- void main()
- {
- int n;
- menu();
- scanf("%d",&n);
- while(n)
- {
- switch(n)
- {
- case 1:
- in();
- break;
- case 2:
- search();
- break;
- case 3:
- del();
- break;
- case 4:
- modify();
- break;
- case 5:
- insert();
- break;
- case 6:
- order();
- break;
- case 7:
- total();
- break;
- default:break;
- }
- getch();
- menu();
- scanf("%d",&n);
- system("pause");
- return 0;
- }
- }
- void menu()
- {
- system("cls");
- printf("\n\n\n\n\n");
- printf("\t\t|------------------商品管理系统------------------|\n");
- printf("\t\t|\t0.退出 |\n");
- printf("\t\t|\t1.录入记录 |\n");
- printf("\t\t|\t2.查找记录 |\n");
- printf("\t\t|\t3.删除记录 |\n");
- printf("\t\t|\t4.修改记录 |\n");
- printf("\t\t|\t5.插入记录 |\n");
- printf("\t\t|\t6.排序记录 |\n");
- printf("\t\t|\t7.统计记录 |\n");
- printf("\t\t|------------------------------------------------|\n\n");
- printf("\t\t\t选择<0-7>:");
- }
- void in()
- {
- int i,m=0;
- char ch[2];
- FILE *fp;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- while(!feof(fp))
- {
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- }
- fclose(fp);
- if(m==0)
- printf("没有找到!\n");
- else
- {
- system("cls");
- show();
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- for(i=0;i<m;i++)
- fwrite(&comm[i],LEN,1,fp);
- printf("是否输入?(y/n):");
- scanf("%s",ch);
- while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("编号:");
- scanf("%d",&comm[m].num);
- for(i=0;i<m;i++)
- if(comm[i].num==comm[m].num)
- {
- printf("该记录已存在,按任意键继续!");
- getch();
- fclose(fp);
- return;
- }
- printf("商品名:");
- scanf("%s",comm[m].name);
- printf("单价:");
- scanf("%1f",&comm[m].price);
- printf("数量:");
- scanf("%1f",&comm[m].count);
- comm[m].total=comm[m].price*comm[m].count;
- if(fwrite(&comm[m],LEN,1,fp)!=1)
- {
- printf("不能保存!");
- getch();
- }
- else
- {
- printf("%s已经保存!\n",comm[m].name);
- m++;
- }
- printf("是否继续?(y/n):");
- scanf("%s",ch);
- }
- fclose(fp);
- printf("OK!\n");
- }
- void search()
- {
- FILE *fp;
- int snum,i,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开文件!");
- return;
- }
- while(!feof(fp))
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("没有记录!\n");
- return;
- }
- printf("请输入编号:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==comm[i].num)
- {
- printf("已经找到该记录,是否显示?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- printf("编号 商品名称 单价 数量 总金额 \t\n");
- printf(FORMAT,DATA);
- break;
- }
- else
- return;
- }
- if(i==m)
- printf("没有找到相应的记录!\n");
- }
- void del()
- {
- FILE *fp;
- int snum,i,j,m=0;
- char ch[2];
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- while(!feof(fp))
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- fclose(fp);
- if(m==0)
- {
- printf("没有记录!\n");
- return;
- }
- printf("请输入编号:");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==comm[i].num)
- break;
- if(i==m)
- {
- printf("没有找到!");
- getchar();
- return;
- }
- printf("已经找到该记录,是否删除?(y/n)");
- scanf("%s",ch);
- if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
- {
- for(j=i;j<m;j++)
- comm[j]=comm[j+1];
- m--;
- printf("成功删除!\n");
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("不能打开!\n");
- return;
- }
- for(j=0;j<m;j++)
- if(fwrite(&comm[j],LEN,1,fp)!=1)
- {
- printf("不能保存!\n");
- getch();
- }
- fclose(fp);
- }
- void modify()
- {
- FILE *fp;
- int i,j,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- while(!feof(fp))
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("没有记录!\n");
- fclose(fp);
- return;
- }
- printf("请输入要修改的记录信息的编号!\n");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==comm[i].num)
- break;
- if(i<m)
- {
- printf("已经找到该记录,是否修改?\n");
- printf("商品名:\n");
- scanf("%s",comm[i].name);
- printf("\n单价:");
- scanf("%1f",&comm[i].price);
- printf("\n数量:");
- scanf("%1f",&comm[i].count);
- comm[i].total=comm[i].price *comm[i].count;
- }
- else
- {
- printf("没有找到!");
- getchar();
- return;
- }
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- for(j=0;j<m;j++)
- if(fwrite(&comm[j],LEN,1,fp)!=1)
- {
- printf("不能保存!");
- getch();
- }
- fclose(fp);
- }
- void insert()
- {
- FILE *fp;
- int i,j,k,m=0,snum;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- while(!feof(fp))
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("没有记录!\n");
- fclose(fp);
- return;
- }
- printf("请输入要插入的记录的位置!\n");
- scanf("%d",&snum);
- for(i=0;i<m;i++)
- if(snum==comm[i].num)
- break;
- for(j=m-1;j>i;j--)
- comm[j+1]=comm[j];
- printf("现在输入新的信息!\n");
- printf("编号:");
- scanf("%d",&comm[i+1].num);
- for(k=0;k<m;k++)
- if(comm[k].num==comm[i+1].num&&k!=i+1)
- {
- printf("该编号已存在,按任意键继续!");
- getch();
- fclose(fp);
- return;
- }
- printf("商品名:\n");
- scanf("%s",comm[i+1].name);
- printf("\n单价:");
- scanf("%1f",&comm[i+1].price);
- printf("\n数量:");
- scanf("%1f",&comm[i+1].count);
- comm[i+1].total=comm[i+1].price *comm[i+1].count;
- if((fp=fopen("data","wb"))==NULL)
- {
- printf("不能打开文件!\n");
- return;
- }
- for(k=0;k<=m;k++)
- if(fwrite(&comm[k],LEN,1,fp)!=1)
- {
- printf("不能保存!");
- getch();
- }
- fclose(fp);
- }
- void order()
- {
- FILE *fp;
- printf("排序成功!");
- getch();
- fclose(fp);
- }
- void total()
- {
- FILE *fp;
- int m=0;
- if((fp=fopen("data","ab+"))==NULL)
- {
- printf("不能打开记录!\n");
- return;
- }
- while(!feof(fp))
- if(fread(&comm[m],LEN,1,fp)==1)
- m++;
- if(m==0)
- {
- printf("没有记录!\n");
- fclose(fp);
- return;
- }
- printf("一共有%d条记录!\n",m);
- fclose(fp);
- }
复制代码 |
|