- 主题
- 68
- 帖子
- 348
- 精华
- 0
- 积分
- 635
- C币
- 578 枚
- 在线时间
- 57 小时
- 注册时间
- 2010-7-9
- 最后登录
- 2012-1-28
- 性别
- 保密
 
- 主题
- 68
- 帖子
- 348
- C币
- 578 枚
- 在线时间
- 57 小时
|
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define NAMELENGTH 21 //??×?3¤?è
- #define ERRFLAG 1 //′í?ó±êê?
- #define SUCFLAG 0 //3é1|±êê?
- #define EXIST 1 //′??ú±êê?
- #define NOTEXIST 0 //2?′??ú±êê?
- struct item
- {
- char itemname;
- unsigned int itemtarget;
- unsigned int itemsum;
- };
- struct itemsale
- {
- unsigned int itemnum;
- unsigned int salenum;
- };
- struct saveitem
- {
- unsigned int itemcode;
- struct item itemnode;
- };
- struct deletenode
- {
- struct saveitem first;
- struct deletenode *next;
- };
- typedef item ITEM;
- typedef itemsale ITEMSALE;
- typedef saveitem SAVEITEM;
- typedef deletenode DELETENODE;
- int additem(void);
- int recorditem(void);
- int deleteitem(void);
- int dispitem(void);
- int dispsales(void);
- int main(int argc, char *argv[])
- {
- short int choice;
- printf("********************************************");
- printf("\n\n----------Sales Monitoring System---------");
- printf("\n 1. Add new item details");
- printf("\n 2. Record sale details");
- printf("\n 3. Delete existing item details");
- printf("\n 4. Display sale details based on item number");
- printf("\n 5. Display report on salses target achieved items");
- printf("\n 6. Quit");
- printf("\nPlease enter you choice:");
- scanf("%d",&choice);
- while(6!=choice)
- {
- switch(choice)
- {
- case 1:
- additem();
- break;
- case 2:
- recorditem();
- break;
- case 3:
- deleteitem();
- break;
- case 4:
- dispitem();
- break;
- case 5:
- dispsales();
- break;
- default:
- printf("\nYou have enter a wrong number,please input a integer between 1--6\n");
- }
- printf("\n********************************************");
- printf("\n\n----------Sales Monitoring System---------");
- printf("\n 1. Add new item details");
- printf("\n 2. Record sale details");
- printf("\n 3. Delete existing item details");
- printf("\n 4. Display sale details based on item number");
- printf("\n 5. Display report on salses target achieved items");
- printf("\n 6. Quit");
- printf("\nPlease enter you choice:");
- scanf("%d",&choice);
- }
- printf("\nYou have choice to quit, please waiting......");
- printf("\nThe program will be quit, \nplease press any key to continue");
- choice=getc(stdin);
- return 1;
- }
- int additem(void)
- {
- ITEM add;
- FILE *fp;
- SAVEITEM save;
- short int i;
- long int filelen;
- printf("\nPlease enter the item's name:");
- scanf("%s",&add.itemname);
- i=strlen(&add.itemname);
- while(i>=20 || i<=0 )
- {
- printf("\nThe name which you have input is too long or too short,the length shoule between 1 to 20!");
- printf("\nPlease input again:");
- i=scanf("%s",&add.itemname);
- }
- printf("\nPlease input the target of the new item:");
- scanf("%d",&add.itemtarget);
- printf("\nPlease input the sales sum of the item:");
- scanf("%d",&add.itemsum);
- if(NULL==(fp=fopen("item.dat","a+")))
- {
- printf("\nCan not open the file \"item.dat\".");
- return ERRFLAG;
- }
- if(!feof(fp))
- {
- fseek(fp,0L,SEEK_END);
- filelen=ftell(fp);
- }
- if(filelen<=0)
- {
- save.itemcode=1;
- }
- else
- {
- fread(&save,sizeof(SAVEITEM),1,fp);
- save.itemcode++;
- }
- strcpy(&save.itemnode.itemname,&add.itemname);
- save.itemnode.itemsum=add.itemsum;
- save.itemnode.itemtarget=add.itemtarget;
- fseek(fp,0L,SEEK_END);
- fwrite(&save,sizeof(SAVEITEM),1,fp);
- fclose(fp);
- return SUCFLAG;
- }
- int recorditem(void)
- {
- ITEM record; //????item.dat?áè?μ?êy?Y
- ITEMSALE sale; //????òa′?′¢μ?sales.dat?Dμ?êy?Y
- SAVEITEM save; //±£′?μ?item.dat?Dêy?Y
- //long int count; //ó?à′′?′¢???t3¤?è
- short int exist;
- //unsigned int num; //ó?à′áùê±′?′¢′óitem.dat?D?áè?μ?êy?Y
- FILE *fpitem,
- *fpsales;
- //ê?è?????
- printf("\nPlease enter the item number you want to record:");
- scanf("%d",&sale.itemnum);
- while(sale.itemnum <=0)
- {
- printf("\nYou have enter a wrong number,the item number must great then 0.");
- printf("\nPlease enter the item number you want to record again:");
- scanf("%d",&sale.itemnum);
- }
- //ê?è??úê?êyá?
- printf("\nPlease enter the sale acount you want to record:");
- scanf("%d",&sale.salenum);
- while(sale.salenum<=0)
- {
- printf("\nYou have enter a wrong number, the sale's acount must great then 0.");
- printf("\nPlease enter the sale sum you want to record again:");
- scanf("%d",&sale.salenum);
- }
- //ê?è??úê??e??
- printf("\nPlease enter the sale's sum you want record:");
- scanf("%d",&record.itemsum);
- while(record.itemsum<=0)
- {
- printf("\nYou have enter a wrong number, the sale's sum must great then 0.");
- printf("\nPlease enter the sale's sum you want record again:");
- scanf("%u",&record.itemsum);
- }
- //′óitem.dat?D?áè?êy?Y 2é?′ê?·?′??úòa±£′?μ?????,2¢±£′?êy?Y
- if(NULL==(fpitem=fopen("item.dat","r+")))
- {
- printf("Can not open the file \"item.dat\",Please check it!");
- return ERRFLAG;
- }
- exist=NOTEXIST;
- while(!feof(fpitem))
- {
- fread(&save,sizeof(SAVEITEM),1,fpitem);
- if(save.itemcode==sale.itemnum)
- {
- fseek(fpitem,-(long)(sizeof(SAVEITEM)) ,SEEK_CUR);
- save.itemcode =sale.itemnum;
- save.itemnode.itemsum=record.itemsum;
- fwrite(&save,sizeof(SAVEITEM),1,fpitem);
- exist=EXIST;
- break;
- }
- }
- //è?1?′??ú????£??ò±£′?D??¢μ?sales.dat, ·??òí?3?
- if(NOTEXIST==exist)
- {
- printf("\nNot such a item number exist in the file \"item.dat\",\nPlease check it befor you record.\n");
- return ERRFLAG;
- }
- else if(NULL==(fpsales=fopen("sales.dat","a+")))
- {
- printf("\nCan not open the file \"sales.dat\", Please check it befor you record.");
- return ERRFLAG;
- }
- fwrite(&sale,sizeof(ITEMSALE),1,fpsales);
- fclose(fpitem);
- fclose(fpsales);
- return SUCFLAG;
- }
- int deleteitem(void)
- {
- unsigned int itemnum;
- short int exist;
- SAVEITEM save;
- DELETENODE *header,
- *psecond,
- *pfirst,
- *p;
- FILE *fp;
- //ê?è?′yé?3yμ?????′ú??
- printf("\nPleae enter the item number you want to delete:");
- scanf("%d",&itemnum);
- if(NULL==(fp=fopen("item.dat","r")))
- {
- printf("\nCan not open the file \"item.dat\",Please check it befor delete item!");
- return ERRFLAG;
- }
- exist=NOTEXIST;
- while(!feof(fp))
- {
- fread(&save,sizeof(SAVEITEM),1,fp);
- if(save.itemcode == itemnum)
- {
- exist=EXIST;
- break;
- }
- }
- if(NOTEXIST==exist) //??óD????′ú???íí?3?
- {
- printf("\nNot such a item number what you want to delete in the file \"item.dat\",\nPlease check it befor you delete!");
- return ERRFLAG;
- }
- //?′DD????μ?′ú???í±íê?ò??¨óD′yé?3yμ?????
- //??D??¨??μ????t?aê?′|?áè????t?úèY
- fseek(fp,0L,SEEK_SET);
- fread(&save,sizeof(SAVEITEM),1,fp); //?áè?μúò????á11μ??úèY
- pfirst=psecond=(DELETENODE *)malloc(sizeof(DELETENODE));
- header=pfirst; //á′±íμ?í·2?
- pfirst->first.itemcode=save.itemcode;
- strcpy(&pfirst->first.itemnode.itemname,&save.itemnode.itemname);
- pfirst->first.itemnode.itemsum=save.itemnode.itemsum;
- pfirst->first.itemnode.itemtarget=save.itemnode.itemtarget;
- while(!feof(fp))
- {
- psecond->next=pfirst;
- psecond=pfirst;
- pfirst=(DELETENODE *)(malloc(sizeof(DELETENODE)));
- fread(&save,sizeof(SAVEITEM),1,fp);
- pfirst->first.itemcode=save.itemcode;
- strcpy(&pfirst->first.itemnode.itemname,&save.itemnode.itemname);
- pfirst->first.itemnode.itemsum=save.itemnode.itemsum;
- pfirst->first.itemnode.itemtarget=save.itemnode.itemtarget;
- }
- psecond->next=NULL;
- fclose(fp);
- //?ì2é????á′±í é?3yó?′yé?3y?????àí?μ??a???a??
- //?ì2éê×?a??£?μ±ê×?a???àí?ê±
- if(header->first.itemcode==itemnum)
- {
- p=header->next;
- header=p;
- }
- else //·?ê×?a??ê±′|àíμ??é??
- {
- p=pfirst=header;
- while(NULL!=p->next)
- {
- pfirst=p->next;
- if(p->first.itemcode==itemnum)
- {
- pfirst=p;
- p=pfirst->next;
- break;
- }
- pfirst=p;
- p=pfirst->next;
- }
- }
- //??′|àííêμ?á′±íêy?Y??D?D′è????t
- if(NULL==(fp=fopen("item.dat","w")))
- {
- printf("\nCan not open the file \"item.dat\",Please check it before delete a item!");
- return ERRFLAG;
- }
- p=header;
- save.itemcode=p->first.itemcode;
- strcpy(&p->first.itemnode.itemname,&save.itemnode.itemname);
- save.itemnode.itemsum=p->first.itemnode.itemsum;
- save.itemnode.itemtarget=p->first.itemnode.itemtarget;
- fwrite(&save,sizeof(SAVEITEM),1,fp);
- while(NULL != p->next)
- {
- pfirst=p->next;
- p=pfirst;
- save.itemcode=p->first.itemcode;
- strcpy(&save.itemnode.itemname,&p->first.itemnode.itemname);
- save.itemnode.itemsum=p->first.itemnode.itemsum;
- save.itemnode.itemtarget=p->first.itemnode.itemtarget;
- fwrite(&save,sizeof(SAVEITEM),1,fp);
- }
- fclose(fp);
- return SUCFLAG;
- }
- int dispitem(void)
- {
- FILE *fp;
- SAVEITEM save;
- if(NULL==(fp=fopen("item.dat","r")))
- {
- printf("\nCan not open the file \"item.dat\",Please check it befor display!");
- return ERRFLAG;
- }
- fread(&save,sizeof(SAVEITEM),1,fp);
- printf("\nItem number\tItem name\tItem sum\tItem target");
- printf("\n%d\t\t%s\t\t%d\t\t%d",save.itemcode,&save.itemnode.itemname,save.itemnode.itemsum,save.itemnode.itemtarget);
- while(!feof(fp))
- {
- fread(&save,sizeof(SAVEITEM),1,fp);
- printf("\n%u\t\t%s\t\t%d\t\t%d",save.itemcode,&save.itemnode.itemname,save.itemnode.itemsum,save.itemnode.itemtarget);
- }
- return SUCFLAG;
- }
- int dispsales(void)
- {
- FILE *fp;
- ITEMSALE sale;
- if(NULL==(fp=fopen("sales.dat","r")))
- {
- printf("\nCan not open the file \"sales.dat\",Please check it befor display");
- return ERRFLAG;
- }
- printf("\nItem number\tItem saled number");
- while(!feof(fp))
- {
- fread(&sale,sizeof(ITEMSALE),1,fp);
- printf("\n%d\t\t\t%d",sale.itemnum,sale.salenum);
- }
- return SUCFLAG;
- }
复制代码 |
|