回 帖 发 新 帖 刷新版面

主题:急求高手帮忙

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <conio.h>
#define  M    30
#define  N    10000


 struct Lnode
 {
    char            code[20];
    char            name[80];
    int                price;
    Lnode    *next;
 };

typedef Lnode *SqList;

int sum = 0;
int goodnum = 0;
int NUMBER[N];
char  str[N][80];



int  Listname(char str[][], char name[]);
void Listrecord(Lnode *head);
int Listsearch(SqList L, char code2[]);
void Listfoundinformation(SqList &L);
void Listsert(Lnode *head);
void ListDelete(Lnode *head, char code[]);
void ListDelete2(SqList &L, char code[]);
void Listpint(Lnode *head);
void Listallpint(SqList L);



void  main()
{
    char  code2[20];
    char  ch;
    SqList  L;
    int x, i, s;
    Lnode *head;

    head = new struct Lnode;
    if(head == NULL)
    {
        printf("the memory is not enough!");
        return;
    }
    else
        head->next = NULL;
    
    printf("Please input the information of the good:\n");


    
    while(1)   //输入初始商品信息
    {
        Listfoundinformation(head);

        printf("Do you want to continue(YES 1 or NO 0):");
        scanf("%d", &s);

        if(s==0)
           break;
    }
   
    
    printf("output print 1 or 0 :");// 查找商品信息
    ch = getchar();
    while (ch == '1') 
    {
        printf("please input the good's code:");
        scanf("%s", code2);
        Listsearch(L, code2);
        printf("if you want to continue please 1 ,other 0:");
        ch = getchar();
   }
    system("cls");
   

   printf("if you want to delete good information(input 1 or 0):");//删除商品信息
   scanf("%d", &x);
   while (x == 1)
   {
        printf("\ninput code:");
        scanf("%s", code2);
        ListDelete(head, code2);
        
   }


   printf("\nif want to insert the good information 1 0r 0:");//插入商品信息
   scanf("%d", &x);
   while(x == 1)
   {
    Listsert(head);
    printf("\nCONTINUE OR NOT(1 or 0):");
    scanf("%d", &x);
   }


   printf("\nif you want to sell the good please input 1 other 0 :");//出售商品
   ch = getchar();
   if(ch == '1')
      Listpint(L);
   printf("\nthe sum price of all good is %d", sum);
   printf("\nthe number of all goods is %d",goodnum);
   system("cls");


   printf("if you want to print the all information(1 or 0):");//商品总货清单
   scanf("%d", &x);
   if(x == 1)
       Listallpint(L);


   printf("if you want to record the information please input 1 or 0:");//信息入文件
   scanf("%d", &x);
   if(x == 1)
       Listrecord(head);
}



void Listfoundinforation(SqList &L)
{
    char name[80];
    char code[20];
    int  price, i;
    Lnode *pnew;

    printf("please input the code:");
    scanf("%s", code);
    printf("\nplease input the name:");
    scanf("%s" , name);
    fflush(stdin);
    printf("\nplease input the price:");
    scanf("%d", &price);

    pnew = new struct Lnode;
    if(pnew == NULL)
    {
        printf("the room is not enough");
        exit;
    }
    strcpy(pnew->code , code);
    strcpy(pnew->name , name);
    pnew->price = price;

    Listsert(L, code);

    i = Listsearch(L, name);
    if(i > N)
    {
        NUMBER[i++]++;
    }
    else
        NUMBER[i]++;

    Listrecord(L);
}


void Listsert(Lnode *head)
{
    char name[80];
    char code[20];
    int  price;
    int  i;
    Lnode *pnew, *p;

    printf("CODE:");
    scanf("%s",code);
    printf("\nNAME:");
    scanf("%s", name);
    fflush(stdin);
    printf("\nPRICE:");
    scanf("%d", &price);

    pnew = new struct Lnode;
    if(pnew = NULL)
    {
        printf("the memory is not enough!");
    }
    strcpy(pnew->code , code);
    strcpy(pnew->name , name);
    pnew->price = price;

    p = head;
    while(p ->next != NULL)
        p = p->next;
    p->next = pnew;
    pnew ->next = NULL;
    

    i = Listname(str, name);
    NUMBER[i]++;
}

void Listsearch(SqList L, char code2[])
{
    int i, j;
    char name[80];
    Lnode *q;
    for(q = head; q->next!=NULL;q = q->next)
        if(strcmp(q->code, code2) == 0)
            break;

    strcpy(name, p->name);
    i = Listname(str, name);
    if(q->next == NULL)
    {
        printf("the good is not exist\n");
        return;
    }
    printf("编号        名称        价格        数量\n");
    printf("%-10c%-10c%-10d%-10d\n", q->code, q->name, q->price,    NUMBER[i]);
    printf("------------------------------------------------------------------\n");
    printf("\n");

    if(NUMBER[i] < M)
    {
        printf("the good is not enough!");
    }
 }

int Listname(char str[][80], char name[])
{
    int i = 0;
    while((strcmp(str[i] , name)!= 0) )
        i++;
    return (i);
    
}


void  ListDelete(SqList &L, char code[])
{
    Lnode *q , *h;
    int i;

    q = head;
    h = q->next;
    while(h->code != code)
    {    
            q = q->next;
         h = q ->next;
    }
    
    i = Listname(str, h->name);
    if(i == -1)
    {
        printf("the code is not exist!\n");
        return;
    }
    NUMBER[i]--;
    free(h);
}


void ListDelete2(SqList &L, char code[])
{
    int i;
    Lnode *q , *p;
    q = head;
    p = q->next;

    while(q->next->code != code)
    {    
           q = q->next;
        p = q ->next;
    }

    i = Listname(str, p->name);
    NUMBER[i]--;

    
    printf("%-10c%-10d%-10d\n",  p->name, p->price,    NUMBER[i]);
    printf("\n");

    sum += p->price;
    goodnum++;

    q->next = p->next;
    free(p);
    
}

void Listrecord(Lnode *head)//退出并把数据写入文件//
{
    FILE *fp;
    Lnode *pnew, *q;
    
    fp = fopen("data.txt","w");        
    for(pnew=head->next;pnew!=NULL;pnew=pnew->next)
    {
        
    if(pnew->next!=NULL)
    {
        fputs (pnew->name, fp);
        fputs ("\n",fp);
        fprintf(fp,"%f",pnew->price);
        fputs ("\n",fp);
        fprintf(fp,"%d",pnew->code);
        fputs ("\n",fp);
    }

    else
    {
        fputs (pnew->name, fp);
        fputs(pnew->price, fp);
        fputs ("\n",fp);
        fprintf(fp,"%d",pnew->code);

    }
    
    }

void Listpint()
{

    int x = 1;
    int price;
    char name[80], code[20];
    
    printf("\t\t\t\t\t编号        名称        价格        数量\n");
    while(x)
    {
     printf("编号:");
     scanf("%s",  code);
     ListDelete(L, code);
     printf("\ncontinue or not (1 or 0):");
     scanf("%d", &x);
     }
    return;
}


void Listallprint(Lnode *head)
{
    Lnode *q;
    int i;

    q = head->next;
    printf("编号        名称        价格        数量\n");
    while(q->next != NULL)
    { 
      i = Listname(str, q->name);
      
      printf("%-10c%-10c%-10.2f%-10d\n", q->code, q->name, q->price,    NUMBER[i]);
         printf("------------------------------------------------------------------\n");
      printf("\n");
    }

    printf("\n");
    printf("\n");
    printf("\n");
    printf("\t\t\t\t\");
    printf("商品存货信息");
    printf("------------------------------------------------------");

    q = head->next;
    while(q->next != NULL)
    {
        i = Listname(str,q->name);
        if(i < M)
            printf("the good of %d is not enough ,please buy some\n", str[i]);
    }
}

回复列表 (共2个回复)

沙发

[quote]急求高手帮忙[/quote]

What is your problem?
Do you have a question?
[em18]

板凳

太长不看纯路过

我来回复

您尚未登录,请登录后再回复。点此登录或注册