链表做的简易手机销售系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct phone{
    int number;
    char name[30];
    int price;
    int num;
    struct phone *next;
} myphone;

myphone *head,*p,*p1,*p2;
int n =0;

void myadd(){
    p1 = (myphone*)malloc(sizeof(myphone));
    if(n == 0){
        head = p1;
    }else{
        p2->next = p1;
    }
    system("cls");
    printf("请输入手机基本信息:\n手机编号:");
    scanf("%d",&p1->number);
    printf("手机名:");
    scanf("%s",&p1->name);
    printf("手机价格:");
    scanf("%d",&p1->price);
    printf("库存数量:");
    scanf("%d",&p1->num);
    p2 = p1;
    p2->next = NULL;
    n += 1;
    system("pause");
    system("cls");    
}

void myshow(){
    if(n!=0){
        p = head;
        system("cls");
        printf("编号\t手机名\t价格\t库存数量\n");
        do{
            printf("%-8d%-8s%-8d%-8d\n",p->number,p->name,p->price,p->num);
            p = p->next;
        }while(p!=NULL);
    }else{
        printf("还没添加手机信心!\n");
    } 
    system("pause");
    system("cls");
}

void mysave(){
    FILE *fp;
    myphone *p;
    if((fp=fopen("data.txt","wb"))==NULL)
    {
        printf("不能打开文件!"); 
    }
    p = head;
    if(p==NULL)
    {
        printf("保存内容不能为空!\n");
    }else{
        while(p!= NULL){
            if(fwrite(p,sizeof(myphone),1,fp)!= 1){
                printf("写入手机信息出错\n");
                fclose(fp);
                break;
            }
            p = p->next;
        }
        fclose(fp);
        printf("手机信息存储完成\n"); 
    } 
    system("pause");
    system("cls");
}

void myread(){
    FILE *fp;
    if((fp=fopen("data.txt","rb+"))==NULL)
    {
        printf("不能打开文件!"); 
        exit(0);
    }
    
    do{
        p1 = malloc(sizeof(myphone));
        if(n==0){
            head = p1;
        }else{
            p2->next = p1;
        }
        fread(p1,sizeof(myphone),1,fp);
        p2= p1;
        n+=1;
    }while(p2->next!=NULL);
    fclose(fp);
    printf("手机信息读取完成!\n");
    system("pause") ;
    system("cls");
}

void findprice(){
    int myprice1,myprice2;
    printf("请输入要买手机的最高价格:");
    scanf("%d",&myprice1);
    printf("请输入要买手机的最低价格:");
    scanf("%d",&myprice2);
    
    p = head;
    do{
        if(p->price>=myprice2 && p->price<=myprice1)
        {
            printf("编号\t手机名\t价格\t库存数量\n");
            printf("%-8d%-8s%-8d%-8d\n",p->number,p->name,p->price,p->num);
        }
        p = p->next;
    }while(p!=NULL);
    system("pause");
    system("cls");    
}

void findnumber(){
    int mynumber;
    printf("请输入要买手机的编号:");
    scanf("%d",&mynumber);
    
    p = head;
    do{
        if(p->number == mynumber)
        {
            printf("编号\t手机名\t价格\t库存数量\n");
            printf("%-8d%-8s%-8d%-8d\n",p->number,p->name,p->price,p->num);
        }
        p = p->next;
    }while(p!=NULL);
    system("pause");
    system("cls");    
}

void findnum(){
    int mynum1,mynum2;
    printf("请输入要买手机的最大库存:");
    scanf("%d",&mynum1);
    printf("请输入要买手机的最小库存:");
    scanf("%d",&mynum2);
    
    p = head;
    do{
        if(p->num>=mynum2 && p->num<=mynum1)
        {
            printf("编号\t手机名\t价格\t库存数量\n");
            printf("%-8d%-8s%-8d%-8d\n",p->number,p->name,p->price,p->num);
        }
        p = p->next;
    }while(p!=NULL);
    system("pause");
    system("cls");    
}

void findname(){
    char a[30];
    printf("请输入要买手机的名称:");
    scanf("%d",&a);
    
    p = head;
    do{
        if(strcmp(a,p->name) == 0)
        {
            printf("编号\t手机名\t价格\t库存数量\n");
            printf("%-8d%-8s%-8d%-8d\n",p->number,p->name,p->price,p->num);
        }
        p = p->next;
    }while(p!=NULL);
    system("pause");
    system("cls");    
}

void myfind(){
    if(n!= 0){
        int a;
        system("cls");
        printf("1.按价格查找手机信息\n2.按编号查找手机信息\n");
        printf("3.按库存数量查找手机信息\n4.按手机名查找手机信息\n");
        printf("请选择操作的项(即输入数字1~4):") ;
        scanf("%d",&a);
        switch(a)
        {
            case 1: findprice();
                    break;
            case 2: findnumber();
                    break;
            case 3: findnum();
                    break;
            case 4: findname();
                    break;
        }
    }else{
        printf("还没有手机数据!\n");
        system("pause") ;
    }
}

void mybuy()
{
    if(n!=0)
    {
        int knumber;
        printf("请输入要购买手机的编号:");
        scanf("%d",&knumber);
        p = head;
        do{
            if(p->number == knumber){
                p->num = p->num -1;
                printf("已成功购买编号为%d的手机!\n",knumber);
                break;
            }
            p = p->next;
        }while(p!=NULL);
    }else{
        printf("还没手机数据信息!\n");
    }
    system("pause");
    system("cls");
}

void mydel(){
    if(n!=0){
        myphone *f,*l;
        int knumber;
        printf("请输入要删除手机的编号:");
        scanf("%d",&knumber);
        p = head;
        if(head->number == knumber){
            f=head;
            head=head->next;
            free(f);
        }else{
            do{
                if(p->number == knumber){
                    f = p;
                    l->next = p->next;
                    free(f);
                    break;
                }
                l = p;
                p = p->next;
            }while(p!=NULL);
        }
        printf("编号为%d的手机数据信息已被删除!\n",knumber);
    }else{
        printf("还没有手机数据信息!"); 
    }
    system("pause");
    system("cls");
}

int main(){
    int myn = 1;
    while(myn != 8){
        system("cls");
        printf("===================手机销售管理系统==================\n");
        printf("===================1.增加手机信息====================\n");
        printf("===================2.显示全部手机信息================\n");
        printf("===================3.查找手机信息====================\n");
        printf("===================4.删除手机信息====================\n");
        printf("===================5.购买手机功能====================\n");
        printf("===================6.保存手机信息====================\n");
        printf("===================7.读取手机信息====================\n");
        printf("===================8.退出当前系统====================\n");
        printf("请选择操作的项(即输入数字1~8):\n");
        scanf("%d",&myn);
        if(myn>0 && myn<9){
            switch(myn){
                case 1: myadd();
                        break;
                case 2: myshow();
                        break;
                case 3: myfind();
                        break;
                case 4: mydel();
                        break;
                case 5: mybuy();
                        break;
                case 6: mysave();
                        break;
                case 7: myread();
                        break;
            }
        }else{
            printf("输入有误,请输入1~8之间都数字,将返回主菜单!\n");
            system("pause");
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
//--------------------Add_info.h-----------------------// #ifndef Add_info_h #define Add_info_h #include"Goodnode.h" //------------------------添加节点(货物信息)的函数-------------------------// int Add_Goodnode(int Goodnum,char *Goodname,char *exp,char *pubname,int innum,float buyp,float sellp,Good* last); //-----------------------添加货物信息模块-----------------------// void Add_info(Good *p); #endif //--------------------Attached_fun.h----------------// #ifndef Attached_fun_h #define Attached_fun_h //-----------------------------------计算盈利函数----------------------------------// template //函数模板 T Cal_income(Good *p,T m) //??? { T total_income; //定义总盈利变量total_income total_income=((p->Sellp)-(p->Buyp))*(p->Innum); return total_income; } //-----------------------------------显示盈利函数----------------------------------// void Show_income(Good *p); //---------------------------显示盈利最多的货物的信息函数---------------------------// void Show_max_income(Good *p); //----------------------------显示盈利最少的货物的信息函数----------------------------// void Show_min_income(Good *p); //--------------------------------显示全部盈利函数------------------------------------// void Show_all_income(Good *p); //----------------------------------附加功能模块--------------------------------------// void Attached_fun(Good *p); #endif //-------------------Delete_info.h------------------// #ifndef Delete_info_h #define Delete_info_h #include"Goodnode.h" //--------------------显示所有货物信息的函数-----------------// void Show_info(Good *p); //--------------------删除节点函数-----------------------// void Delete_node(Good *pr,Good *p); //------------------------删除货物信息模块-----------------// void Delete_info(Good *p); #endif //--------------------Goodclass.h--------------------// //---------------------------------------------货物类头文件-----------------------------------------------// #ifndef Goodclass_h //条件编译 #define Goodclass_h #include using namespace std; class Data //定义数据类 { protected:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值