程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> access voliation-本人初學C語言仿照網上的程序自行寫了點,可是存在一些錯誤,還望大神指點!

access voliation-本人初學C語言仿照網上的程序自行寫了點,可是存在一些錯誤,還望大神指點!

編輯:編程解疑
本人初學C語言仿照網上的程序自行寫了點,可是存在一些錯誤,還望大神指點!

#include
#include
#include

typedef struct store//定義商品
{

int number; //商品序號
char name[10]; //商品名稱及型號
int shuliang; //商品數量
int jiage; //商品價格
int kucun; //商品庫存
int zonge; //銷售總額
char riqi; //銷售日期
}store;

typedef struct unit
{
store date;
struct unit*next;
}unit;

unit* build()
{

unit p;

if((p=(unit
)malloc(sizeof(unit)))==NULL)

{
printf("=>初始化失敗!");

return 0;

}

else

{
p->next=NULL;

p->date.number=0;//頭結點存放商品數量

printf("初始化成功!\n");

return p;

}
}

void sole(unit head)//賣出商品
{

unit *p,*q;

int m,n=0;
q=head->next;

p=(unit
)malloc(sizeof(unit));

printf("=>商品編號:\n");
scanf("%d",&m);
fflush(stdin);
p->date.number;
printf("=>賣出商品及型號:\n");

scanf("%s",&m);
fflush(stdin);
p->date.number=m;
printf("=>請輸入數量!\n");
scanf("%d",&m);
fflush(stdin);
p->date.shuliang=m;

printf("=>請輸入價格!\n");

scanf("%d",&m);
fflush(stdin);

p->date.jiage=m;

printf("=>請輸入庫存!\n");

scanf("%d",&m);
fflush(stdin);

p->date.kucun=m;
printf("=>請輸入日期!\n");

scanf("%s",&m);
fflush(stdin);

p->date.riqi=m;

p->date.zonge=((p->date.shuliang)*(p->date.jiage));

q=head->next;

head->next=p;
p->next=q;

head->date.number++;
}
void deletion(unit *head)//刪除訂單
{

unit *p=head->next,*q=head;

char N[10];

printf("=>請輸入你想刪除訂單!\n");

gets(N);
fflush(stdin);

if(p==NULL)

printf("=>系統無訂單可刪除!\n");

while(p)

{

if(strcmp(p->date.name,N)==0)

{

q->next=p->next;

head->date.number--;

printf("=>刪除%s成功!\n",p->date.name);

free(p);

break;

}
else

{

p=p->next;

q=q->next;

if(p==NULL)

printf("=>你要刪除的訂單不存在,刪除失敗!\n");

}

}

}
int display(unit *head)//顯示商品訂單信息
{

unit *p=head->next;

int m,n=0;

if(p==NULL)

{

printf("=>系統無訂單!\n");

return 0;
}

while(n==0)

{
printf("=>請選擇你的操作!\n");

printf("=>\t\t\t1.顯示所有\t2.按編號查找\t3.返回主菜單\n");
scanf("%d",&m);

fflush(stdin);
switch(m)

{

case 1:printf("\n=>該系統擁有%d份訂單!\n\n",head->date.number);

p=head->next;

printf("\t商品名稱及型號\t數量\t價格\t總額\t日期\n\n");

while(p)

{
printf("\t%s\t%d\t%d\t%d\t%s\n",p->date.name,p->date.shuliang,p->date.jiage,p->date.zonge,p->date.riqi);

p=p->next;

}

break;
case 2:printf("=>請輸入查找編號!\n");

scanf("%d",&m);

fflush(stdin);

p=head->next;

while(p)

{

if(p->date.number==m)

{

printf("\t商品名稱及型號\t數量\t價格\t總額\t日期\n\n");

printf("\t%s\t%d\t%d\t%d\t%s\n",p->date.name,p->date.shuliang,p->date.jiage,p->date.zonge,p->date.riqi);
break;

}
else

{

p=p->next;

if(p==NULL)

printf("=>你要查的訂單不存在!\n");

}

}

break;

case 3:n=1;break;

}

}

return 1;
}
void menu()
{
printf("\t\t\t1.新建系統\t2.添加訂單\n\t\t\t3.刪除訂單\t4.查看信息\n\t\t\t5.退出系統\n");

printf("=>請選擇你的操作!\n");
}

void main()
{

int m=0,n, i;

unit head;
printf("\t\t\t
歡迎使用商品訂單管理系統 * \n");
//if((head=read())==0)

//{

printf("=>是否新建?\n");

printf("\t\t\t是(1)\t\t否(2)\n");

scanf("%d",&i);

fflush(stdin);

if(i==1)

head=build();

else if(i==2)

exit(1);

//}

else

printf("=>信息導入成功!");
while(m==0)

{

menu();

scanf("%d",&n);

fflush(stdin);

switch(n)

{

case 1:head=build();
break;

case 2:sole(head);
break;

case 3:deletion(head);
break;

case 4:display(head);
break;

case 5:m=1;
break;

}

}
}

最佳回答:


我把錯誤都修改並在注釋中說明了,可以運行。不懂的地方追問,加油!
圖片說明

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
 typedef struct store //定義商品 
{

    int number; //商品序號
    char name[10]; //商品名稱及型號
    int shuliang; //商品數量
    int jiage; //商品價格
    int kucun; //商品庫存
    int zonge; //銷售總額
    //日期應該是一個字符串,即char數組 
    char riqi[10]; //銷售日期
}
store;
typedef struct unit {
    store date;
    struct unit * next;
}
unit;
unit * build() {
    //這裡要返回的是指針,所以要加*,即unit *p 
    unit *p;
    //注意,malloc返回的是void指針
    //這裡把(unit)改為(unit*) 
    if ((p = (unit*) malloc(sizeof(unit))) == NULL)

    {
        printf("=>初始化失敗!");
        //初始化失敗應該返回空指針NULL而不是0 
        return NULL;

    }

    else

    {
        p ->next = NULL;

        p ->date.number = 0; //頭結點存放商品數量
        printf("初始化成功!\n");

        return p;

    }
}
//傳入的head改為指針,即*head,原因在後面 
void sole(unit *head) //賣出商品
{

    unit * p,
    *q;

    int m,
    n = 0;
    //注意,->運算符是對指針進行的 ,因此head必須是指針,否則要改為head.next 
    q = head->next;

    p = (unit*) malloc(sizeof(unit));

    printf("=>商品編號:\n");
    scanf("%d", &m);
    fflush(stdin);
    p->date.number;
    printf("=>賣出商品及型號:\n");

    //m是一個int整數,而%s是對字符串的輸入,要輸入名稱型號,可以用以下語句 
    scanf("%s", p->date.name);
    fflush(stdin);
    p->date.number = m;
    printf("=>請輸入數量!\n");
    scanf("%d", &m);
    fflush(stdin);
    p->date.shuliang = m;

    printf("=>請輸入價格!\n");

    scanf("%d", &m);
    fflush(stdin);

    p->date.jiage = m;

    printf("=>請輸入庫存!\n");

    scanf("%d", &m);
    fflush(stdin);

    p->date.kucun = m;
    printf("=>請輸入日期!\n");

    //m是一個int整數,而%s是對字符串的輸入,不能再這裡用&m,可以直接用下面的語句輸入日期 
    scanf("%s", p->date.riqi);
    fflush(stdin);


    p->date.zonge = ((p->date.shuliang) * (p->date.jiage));

    q = head->next;

    head->next = p;
    p->next = q;

    head->date.number++;
}
void deletion(unit * head) //刪除訂單
{

    unit * p = head->next,
    *q = head;

    char N[10];

    printf("=>請輸入你想刪除訂單!\n");

    gets(N);
    fflush(stdin);

    if (p == NULL)

    printf("=>系統無訂單可刪除!\n");

    while (p)

    {

        if (strcmp(p->date.name, N) == 0)

        {

            q->next = p->next;

            head->date.number--;

            printf("=>刪除%s成功!\n", p->date.name);

            free(p);

            break;

        } else

        {

            p = p->next;

            q = q->next;

            if (p == NULL)

            printf("=>你要刪除的訂單不存在,刪除失敗!\n");

        }

    }

}
int display(unit * head) //顯示商品訂單信息
{

    unit * p = head->next;

    int m,
    n = 0;

    if (p == NULL)

    {

        printf("=>系統無訂單!\n");

        return 0;
    }

    while (n == 0)

    {
        printf("=>請選擇你的操作!\n");

        printf("=>\t\t\t1.顯示所有\t2.按編號查找\t3.返回主菜單\n");
        scanf("%d", &m);

        fflush(stdin);
        switch (m)

        {

        case 1:
            printf("\n=>該系統擁有%d份訂單!\n\n", head->date.number);

            p = head->next;

            printf("\t商品名稱及型號\t數量\t價格\t總額\t日期\n\n");

            while (p)

            {
                printf("\t%s\t%d\t%d\t%d\t%s\n", p->date.name, p->date.shuliang, p->date.jiage, p->date.zonge, p->date.riqi);

                p = p->next;

            }

            break;
        case 2:
            printf("=>請輸入查找編號!\n");

            scanf("%d", &m);

            fflush(stdin);

            p = head->next;

            while (p)

            {

                if (p->date.number == m)

                {

                    printf("\t商品名稱及型號\t數量\t價格\t總額\t日期\n\n");

                    printf("\t%s\t%d\t%d\t%d\t%s\n", p->date.name, p->date.shuliang, p->date.jiage, p->date.zonge, p->date.riqi);
                    break;

                } else

                {

                    p = p->next;

                    if (p == NULL)

                    printf("=>你要查的訂單不存在!\n");

                }

            }

            break;

        case 3:
            n = 1;
            break;

        }

    }

    return 1;
}
void menu() {
    printf("\t\t\t1.新建系統\t2.添加訂單\n\t\t\t3.刪除訂單\t4.查看信息\n\t\t\t5.退出系統\n");

    printf("=>請選擇你的操作!\n");
}
int main() {

    int m = 0,
    n,
    i;

    unit *head;
    printf("\t\t\t 歡迎使用商品訂單管理系統 * \n");
    //if((head=read())==0)
    //{
    printf("=>是否新建?\n");

    printf("\t\t\t是(1)\t\t否(2)\n");

    scanf("%d", &i);

    fflush(stdin);

    if (i == 1)

    head = build();

    else if (i == 2)

    exit(1);

    //}
    else

    printf("=>信息導入成功!");
    while (m == 0)

    {

        menu();

        scanf("%d", &n);

        fflush(stdin);

        switch (n)

        {

        case 1:
            head = build();
            break;

        case 2:
            sole(head);
            break;

        case 3:
            deletion(head);
            break;

        case 4:
            display(head);
            break;

        case 5:
            m = 1;
            break;

        }

    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved