C语言课程设计物品竞拍管理(成品版!)

欢迎大家关注我的公众号:Smooth前端成长记录
公众号同步更新CSDN博客内容,想方便阅读博客的C友可以来关注我的公众号以便获得更优良的阅读体验~

 

任务要求设计一个类物品竞拍管理系统,实现的功能有:

1.管理端和拍卖者端

2.账户的注册登录

3.拍卖品的增删改查(查分为通过物品名称、编号、类型查找)

4.管理端输出所有已注册账户名称及已录入拍卖物名称

5.竞拍系统

由于涉及到账户注册登录及拍卖品增删改查,通过数组会更方便查找,但课设要求通过链表写入文件,我的思路便是通过数组及链表存储,数组方便查找。

在程序初始化时先通过fgets及fscanf函数从文件中读取数据至数组。

不足:每个账户只能录入一件拍卖品,但方便管理;竞拍系统可能不太符合实际生活中的需求

但能满足课设要求了

1、界面主要函数:

void fileset();

//将文件中已存在的数据读取并存入对应数组及链表(已注册用户及拍卖物)

int main();

//main函数,初始化程序功能界面并列出可实现的各个功能

void wait();

//输出数据后等待一段时间再清屏

2、登录函数:

int login();

//登录账户

//返回值i有-1和别的数字,-1代表查找账户失败,拍卖场中无该拍卖者信息;别的//数字代表找到该账户,并返回数组中该位置的拍卖者数组下标。

int loginjingpai(int k);

//竞拍专用账户登录,验证是否本人登录,账号登录成功则代表是本人,能使用该账户参与竞拍

//返回值为-1为找不到该账户即失败,若返回别的数字则返回该账户对应的数组下标

//参数k代表该拍卖者在结构体数组中所对应的下标,即位置。

3、拍卖者相关功能实现函数:

void createuser();

//创建拍卖者账户

void adminprintpeople();

//输出当前拍卖场已注册账户的名称,以防拍卖者注册后忘记自身已注册账号的名称

4、物品相关功能实现函数:

void adminprintgoods();

//输出所有拍卖场内的拍卖物名称

void printGoods(int n);

//输出某物品全部信息

参数n代表拍卖品结构体数组中处于该下标位置的物品。

void insideGoods(int n);

//录入物品信息

参数n代表该下标所对应的拍卖者,准备往他账户录入他需要进行拍卖的物品信息了。

void changeGoods(int n);

//更改物品信息

参数n代表该下标所对应的拍卖者,该拍卖者准备更改他账户的拍卖物信息了。

void deleteGoods(int n);

//删除物品信息

参数n代表该下标所对应的拍卖者,该拍卖者准备删除他账户的拍卖物信息了。

void searchnumber();

//输入物品编号获得拍卖物信息

void searchname();

//输入物品名称获得拍卖物信息

void searchtype();

//输入物品类型获得该类型所有拍卖物信息

void typeprint(char c);

//输出某类型所有拍卖物

参数c代表字符c所对应的物品种类是哪种,以使该函数输出该类型所有拍卖物信息。

5、竞拍函数

void jingpai();

//开始竞拍

源代码如下:

#include <iostream>
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int total=0;//有多少名拍卖者注册
int n,m,i,j,k,now,choice1,choice2,choice3;
int password=8888;
int who;//出最高价的拍卖者
int z=0;//记录当前拍卖场中已有几类拍卖品
char a[20],b[4],t;
char goodstype[6];//记录当前拍卖场中已有几类拍卖品


//定义拍卖品信息
typedef struct
{
    char name[20];//物品名称
    int xinjiu;//物品新旧情况分为三个档次,0为未知,1为全新,2为较新,3为一般
    char description[50];//提示拍卖者录入物品描述时,要用英文
    int price;//估价
    char sum[20];//物品编号
    char type[2];//物品类型为a,b,c,d,e型
    int nowprice;//物品当前竞拍者出的最高价格
}goods;
goods Goods[10];

//定义拍卖者信息
typedef struct
{
    char peoplename[20];//用户自己定义在拍卖场中的名字
    char number[20];//用户自己设置登录的密码,3位数
}user;
user person[10];

//链表
typedef struct material
{
    char name[20];//物品名称
    int xinjiu;//物品新旧情况分为三个档次,0为未知,1为全新,2为较新,3为一般
    char description[50];//提示拍卖者录入物品描述时,要用英文
    int price;//估价
    char sum[20];//物品编号
    char type[2];//物品类型为a,b,c,d,e型
    int nowprice;//物品当前竞拍者出的最高价格
    struct material *next;
}material,*materials;

typedef struct userr
{
    char peoplename[20];//用户自己定义在拍卖场中的名字
    char number[20];//用户自己设置登录的账号,3位数
    struct userr *next;
}userr,*userrs;

userr *head=NULL;
//用户信息链表

material *head2=NULL;
//拍卖品信息链表



void fileset();//初始化文件信息,使文件第一行对应相应的中文信息
int login();//登录账户
int loginjingpai(int k);//竞拍专用账户登录
void adminprintpeople();//输出当前拍卖场已注册账户的名称,以防拍卖者注册后忘记自身已注册账号的名称
void adminprintgoods();//输出所有拍卖场内的拍卖物名称
void printGoods(int n);//输出某物品全部信息
void wait();//输出数据后等待一段时间再清屏
void createuser();//创建拍卖者账户
void insideGoods(int n);//录入物品信息
void changeGoods(int n);//更改物品信息
void deleteGoods(int n);//删除物品信息
void searchnumber();//输入物品编号获得拍卖物信息
void searchname();//输入物品名称获得拍卖物信息
void searchtype();//输入物品类型获得该类型所有拍卖物信息
void jingpai();//开始竞拍
void typeprint(char c);//输出某类型所有拍卖物


int main()
{
    system("color F0");
    int temp,temp2;

    fileset();//读取文件中已有的用户和商品数据,读入数组及链表

    while(1)
 {
        printf("\n");
        printf("\n");
		printf("\t\t\t\t    ╭════════════════════════════════○●○●═══╮\n");
		printf("\t\t\t\t    │               物品竞拍管理系统            │\n");
		printf("\t\t\t\t    ╰═══○●○●════════════════════════════════╯\n");
		printf("\n");
		printf("\n");
		printf("\t\t\t\t      *******************************************\n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *              您的身份是:               * \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *            拍卖者(请输入1)              * \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *            管理员(请输入2)              * \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *                                         *  \n");
		printf("\t\t\t\t      *******************************************\n\n");
		printf("\t\t\t\t                      请输入:");
		scanf("%d",&temp);
        system("cls");


    if(temp==1)
    {
        while(1)
     {
        printf("\n");
		printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
		printf("\t\t\t\t   │               物品竞拍管理系统             │\n");
		printf("\t\t\t\t   │                   拍卖者端                 │\n");
		printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
		printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 1.注册一个新账户                           │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 2.录入物品信息                             │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 3.修改物品信息                             │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 4.删除物品信息                             │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 5.查询物品信息                             │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 6.回到账户选择界面                         │\n");
        printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 0.退出程序                                 │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
		printf("\t\t\t\t\t\t  请您选择(0-6):");

        scanf("%d",&choice1);
        if(choice1==6)
        {
            system("cls");
            break;
        }


        switch(choice1)
        {
        case 1:
                    createuser();

                    break;

        case 2://录入
                    printf("\n\n\t\t\t\t\t       当前拍卖场已有%d名拍卖者\n\n",total);
                    i=login();
                    if(i==-1)break;

                    wait();
                    insideGoods(i);
                    break;

        case 3://修改
                    i=login();
                    if(i==-1)break;

                    wait();
                    changeGoods(i);
                    break;


        case 4://删除
                    i=login();
                    if(i==-1)break;

                    wait();
                    deleteGoods(i);

                   break;




        case 5://5.输入物品编号,获得该拍卖物的物品信息
                    while(1)
                    {
                        system("cls");
                        printf("\n");
                        printf("\n");
                        printf("\n");
                        printf("\n");
                        printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
                        printf("\t\t\t\t   │               物品竞拍管理系统             │\n");
                        printf("\t\t\t\t   │                   拍卖者端                 │\n");
                        printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
                        printf("\n");
                        printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
                        printf("\t\t\t\t   │                                            │\n");
                        printf("\t\t\t\t   │ 1.输入物品编号,获得该拍卖物的物品信息     │\n");
                        printf("\t\t\t\t   │                                            │\n");
                        printf("\t\t\t\t   │ 2.输入物品名称,获得该拍卖物的物品信息     │\n");
                        printf("\t\t\t\t   │                                            │\n");
                        printf("\t\t\t\t   │ 3.输入物品类型,获得该拍卖物的物品信息     │\n");
                        printf("\t\t\t\t   │                                            │\n");
                        printf("\t\t\t\t   │ 0.返回上一页面                             │\n");
                        printf("\t\t\t\t   │                                            │\n");
                        printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
                        printf("\t\t\t\t\t\t  请您选择(0-3):");

                        scanf("%d",&choice2);

                        if(choice2==0)
                        {
                            system("cls");
                            break;
                        }


                        switch(choice2)
                            {
                            case 1://输入物品编号,获得该拍卖物的物品信息
                                searchnumber();

                                break;

                            case 2://输入物品名称,获得该拍卖物的物品信息
                                searchname();

                                break;

                            case 3://显示您想知道的某个物品类型中所有的物品
                                searchtype();

                                break;


                            default:continue;


                            }


                    }


                break;


        case 0:exit(0);

        default://没输入数字
                    printf("\t\t\t\t\t请重新输入数字");

                    wait();

                    break;

        }


     }

    }

    else if(temp==2)
    {
        printf("\n\n\n\n\n");
        printf("\t\t\t\t\t   请输入管理员密码:");
        scanf("%d",&temp2);
        if(temp2!=password)
        {
            system("cls");
            printf("\n\n\n\n\n");
            printf("\t\t\t\t\t\t       密码错误!");
            wait();
            continue;
        }

        system("cls");
        printf("\n\n\n\n\n");
        printf("\t\t\t\t\t\t    管理员登陆成功!");
        wait();
        system("cls");

        while(1)
     {
        printf("\n");
		printf("\t\t\t\t   ╭═════════════════════════════════○●○●═══╮\n");
		printf("\t\t\t\t   │               物品竞拍管理系统             │\n");
		printf("\t\t\t\t   │                   管理员端                 │\n");
		printf("\t\t\t\t   ╰═══○●○●═════════════════════════════════╯\n");
		printf("\t\t\t\t   ┌───────────────────────────────────────────-┐\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 1.输出所有已注册账户名称                   │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 2.输出所有拍卖物名称                       │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 3.开始竞拍                                 │\n");
		printf("\t\t\t\t   │                                            │\n");
        printf("\t\t\t\t   │                                            │\n");
        printf("\t\t\t\t   │ 4.回到账户选择界面                         │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   │ 0.退出程序                                 │\n");
		printf("\t\t\t\t   │                                            │\n");
		printf("\t\t\t\t   └────────────────────────────────────────────┘\n");
		printf("\t\t\t\t\t\t  请您选择(0-3):");

        scanf("%d",&choice1);
        if(choice1==4)
        {
            system("cls");
            break;
        }


        switch(choice1)
        {

        case 1://输出所有已注册的拍卖者账户名称
                    adminprintpeople();

                    break;

        case 2://输出所有拍卖场内的拍卖物名称
                    adminprintgoods();

                    break;

        case 3://开始竞拍
                    jingpai();

                    break;


        case 0:exit(0);

        default:
                    printf("\t\t\t\t\t请重新输入数字");

                    wait();

                    break;

        }
     }


    }

    else
    {
        for(int i=2;i>0;i--)
        {
            printf("\n\n\n\n\n");
            printf("\t\t\t\t\t\t选择错误,请%d秒后重新输入",i);
            Sleep(1000);
            system("cls");
        }
    }



 }


    return 0;
}
//主函数结束

void fileset()
{

    head=(userrs)malloc(sizeof(userr));
    head->next=NULL;
    //初始化用户信息链表

    head2=(materials)malloc(sizeof(material));
    head2->next=NULL;
    //初始化拍卖物信息链表


    FILE *fp;
    fp=fopen("user.txt","r");

    int i;
    char f[21];

    while(!feof(fp))
    {
        fgets(f,20,fp);
        total++;
    }
    total--;

    rewind(fp);

    for(i=total-1;i>=0;i--)
    {
        fscanf(fp,"%s\t%s\n",person[i].peoplename,person[i].number);
    }


    fclose(fp);


    //*****************************************************************************************
    //*****************************************************************************************
    //*****************************************************************************************

    fp=fopen("Goods.txt","r");

    for(i=total-1;i>=0;i--)
    {
        fscanf(fp,"%s\t%d\t%s\t%d\t%s\t%s\n",Goods[i].name,&Goods[i].xinjiu,Goods[i].description,&Goods[i].price,Goods[i].sum,Goods[i].type);
    }

    fclose(fp);

}

int login()
{
                printf("\n\t\t\t\t\t    请输入账号以登录您的账户:");
                    scanf("%s",b);
                    for(i=0;i<total;i++)
                    {
                        for(j=0;j<3;j++)
                        {
                            if(b[j]!=person[i].number[j])
                                break;
                        }
                        if(j==3)
                        {
                            printf("\n\t\t\t\t\t       登录成功,尊敬的%s!\n",person[i].peoplename);
                           return i;
                        }
                    }
                    //登录成功

                    if(i==total)
                    {
                        printf("\n\t\t\t\t\t┌──────────────────────────────────-┐\n");
                        printf("\t\t\t\t        │                                   │\n");
                        printf("\t\t\t\t\t│ 对不起,找不到该账户,您可以选择注册│\n");
                        printf("\t\t\t\t        │                                   │\n");
                        printf("\t\t\t\t\t└───────────────────────────────────┘\n");

                        wait();

                        return -1;
                    }
                    //登录失败
                    return 0;
}

int loginjingpai(int k)
{
    int h;
                printf("\t\t\t\t  尊敬的%s,请您输入账号以登录账户:",person[k].peoplename);
                scanf("%s",b);

                printf("\n\n\n");

                    for(h=0;h<total;h++)
                    {
                        for(j=0;j<3;j++)
                        {
                            if(b[j]!=person[h].number[j])
                                break;
                        }
                        if(j==3)
                        {
                            printf("\n\t\t\t\t\t    登录成功,尊敬的%s!\n\n",person[h].peoplename);
                           return h;
                        }
                    }
                    //登录成功

                    if(h==total)
                    {
                        printf("\n\t\t\t\t\t┌──────────────────────────────────-┐\n");
                        printf("\t\t\t\t        │                                   │\n");
                        printf("\t\t\t\t\t│       对不起,您的账号输入错误     │\n");
                        printf("\t\t\t\t\t│      由于拍卖时间有限,您被跳过   │\n");
                        printf("\t\t\t\t\t│             请您谅解              │\n");
                        printf("\t\t\t\t\t│    希望您下一件拍卖物能登录成功   │\n");
                        printf("\t\t\t\t        │                                   │\n");
                        printf("\t\t\t\t\t└───────────────────────────────────┘\n");

                        wait();

                        return -1;
                    }
                    //登录失败
                    return 0;
}

void adminprintpeople()
{
    int i,temp;

    printf("\n\n\n\t\t\t\t\t\t   已注册%d名账户\n\n",total);

    printf("\t\t\t\t\t    名称分别为:");
    for(i=0;i<total;i++)
    {
        printf("%s",person[i].peoplename);
        if(i!=total-1)
            printf("/");
    }

    while(1)
    {
        printf("\n\n\n\t\t\t\t\t        请输入0以回到主菜单:");
        scanf("%d",&temp);
        if(temp==0)break;
    }

    system("cls");
}

void adminprintgoods()
{
    int i,temp;

    printf("\n\n\n\t\t\t\t\t\t拍卖场内已拥有%d件拍卖品\n\n",total);

    printf("\t\t\t\t\t    名称分别为:");
    for(i=0;i<total;i++)
    {
        printf("%s",Goods[i].name);
        if(i!=total-1)
            printf("/");
    }

    while(1)
    {
        printf("\n\n\n\t\t\t\t\t        请输入0以回到主菜单:");
        scanf("%d",&temp);
        if(temp==0)break;
    }

    system("cls");
}

void printGoods(int i)
{
        printf("\n\n\n\n\n\n\t\t\t\t\t   第%d件拍卖物信息如下:",i+1);
        printf("\n");
        printf("\t\t\t\t\t      物品名称为:%s\n",Goods[i].name);
        printf("\t\t\t\t      *物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[i].xinjiu);
        printf("\t\t\t\t      *物品描述:%s\n",Goods[i].description);
        printf("\t\t\t\t      *估价(0为初始价):%d万元\n",Goods[i].price);
        printf("\t\t\t\t      *物品编号:%s\n",Goods[i].sum);
        printf("\t\t\t\t      *物品类型(a,b,c,d,e类):%s\n",Goods[i].type);
        printf("                                                                    \n");
}

void wait()
{
        Sleep(2000);
        system("cls");
}

void createuser()
{
    FILE *fp1;
    fp1= fopen("user.txt", "a+");


    printf("\n");
    printf("\n\t\t\t\t\t     请为自己取一个英文名称:");


    scanf("%s",person[total].peoplename);

    while(1)//建立代码排除已注册的账号
                    {
                        for(i=0;i<total;i++)
                        {
                                if(strcmp(person[total].peoplename,person[i].peoplename)==0)
                                {
                                    printf("\n\t\t\t\t\t>>该账户名称已被注册,请重新输入:");
                                    scanf("%s",person[total].peoplename);
                                    break;
                                }

                        }
                        if(i==total)break;//没有相同账号的用户,注册成功


                    }

    printf("\n\t\t\t\t\t      *设置成功,您的名称是:%s\n", person[total].peoplename);

    printf("\n\t\t\t\t\t  请设置登录账户的账号,长度为3位:");
    scanf("%s",person[total].number);
    while(1)//建立代码排除已注册的账号
                    {
                        for(i=0;i<total;i++)
                        {
                                if(strcmp(person[total].number,person[i].number)==0)
                                {
                                    printf("\n\t\t\t\t\t >>该账号已被注册,请重新输入:");
                                    scanf("%s",person[total].number);
                                    break;
                                }

                        }

                        if(i==total)break;//没有相同账号的用户,注册成功

                    }
    printf("\n\t\t\t\t\t       *设置成功,您的账号是:%s\n", person[total].number);

    userr *New=(userrs)malloc(sizeof(userr));


    strcpy(New->peoplename,person[total].peoplename);
    strcpy(New->number,person[total].number);

    //fprintf(fp1,"%s\t%s\n",New->peoplename,New->number);


                    printf("\n");
                    printf("\n");
                    printf("\t\t\t\t\t    ******************************\n");
                    printf("\t\t\t\t\t             新建账户成功!                                     \n");
                    printf("\n");
                    printf("\t\t\t\t\t           您的名称为:%s\n",New->peoplename);
                    printf("\t\t\t\t\t           您的账号为:%s\n",New->number);
                    printf("\n");
                    printf("\t\t\t\t\t    ******************************\n");

        New->next=head->next;
        head->next=New;
        New=NULL;



        //fprintf(fp1,"用户名称\t账号(最新录入的位于上方)\n");
        userr *old;
        old=head->next;

        while(old!=NULL)
        {
            fprintf(fp1,"%s\t%s\n",old->peoplename,old->number);
            old=old->next;
        }


                    total++;
                    fclose(fp1);

                    printf("\n");
                    printf("\t\t\t\t\t\t       注册成功\n");
                    printf(" \n");
                    printf("\t\t\t\t\t        当前拍卖场已有%d名拍卖者\n",total);
                    printf(" \n");

                    Sleep(2000);
                    system("cls");
}

//录入物品信息
void insideGoods(int n)
{
    FILE *fp1;
    fp1=fopen("Goods.txt","w");


    while(1)
    {
        printf("\n\n\t\t\t\t\t     请输入您要录入的物品信息:\n\n");
        printf("\n");
        printf("\t\t\t\t   *物品名称为:");
        scanf("%s",Goods[n].name);
        printf("\n");
        printf("\t\t\t\t   *物品新旧程度(0为未知,1为全新,2为较新,3为一般):");
        scanf("%d",&Goods[n].xinjiu);
        printf("\n");
        printf("\t\t\t\t   *物品描述(英文且不能有空格):");
        scanf("%s",Goods[n].description);
        printf("\n");
        printf("\t\t\t\t   *估价(万元):");
        scanf("%d",&Goods[n].price);
        printf("\n");
        printf("\t\t\t\t   *物品编号(五位数):");
        scanf("%s",Goods[n].sum);
        printf("\n");
        printf("\t\t\t\t   *物品类型(a,b,c,d,e类):");
        scanf("%s",Goods[n].type);

        printf("\n\t\t\t   是否确定保存上述物品信息?(确定则选择1,重新输入则选择0):");
        scanf("%d",&choice1);
        if(choice1==1)break;

        system("cls");
    }


    material *New=(materials)malloc(sizeof(material));
    New->next=NULL;

    strcpy(New->name,Goods[n].name);
    New->xinjiu=Goods[n].xinjiu;
    strcpy(New->description,Goods[n].description);
    New->price=Goods[n].price;
    strcpy(New->sum,Goods[n].sum);
    strcpy(New->type,Goods[n].type);

    //fprintf(fp1,"%s\t%d\t%s\t%d\t%s\t%s\n",New->name,New->xinjiu,New->description,New->price,New->sum,New->type);

        printf("\n");
        printf("\n");
        printf("\t\t\t\t  **************************************************************\n");
        printf("\t\t\t\t\t            恭喜你,录入物品成功!    \n\n");
        printf("\t\t\t\t\t物品名称为:%s\n",New->name);
        printf("\t\t\t\t\t物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",New->xinjiu);
        printf("\t\t\t\t\t物品描述:%s\n",New->description);
        printf("\t\t\t\t\t估价(0为初始价):%d万元\n",New->price);
        printf("\t\t\t\t\t物品编号:%s\n",New->sum);
        printf("\t\t\t\t\t物品类型(a,b,c,d,e类):%s\n\n",New->type);
        printf("\t\t\t\t  **************************************************************\n");
        printf("\n");

        New->next=head2->next;
        head2->next=New;
        New=NULL;

        //fprintf(fp1,"名称\t新旧\t描述\t估价\t编号\t类型(最新录入的位于上方)\n");
        material *old;
        old=head2->next;

        while(old!=NULL)
        {
            fprintf(fp1,"%s\t%d\t%s\t%d\t%s\t%s\n",old->name,old->xinjiu,old->description,old->price,old->sum,old->type);
            old=old->next;
        }

        fclose(fp1);

        Sleep(3500);
        system("cls");

}

//更改物品信息
void changeGoods(int n)
{
    FILE *fp1;
    fp1=fopen("Goods.txt","w");

                    printf("\n");
                    printf("\n");
                    printf("\t\t\t\t   ╭══════════════════════════════════════════○●○●═══╮\n");
                    printf("\t\t\t\t   │                      更改物品信息                   │\n");
                    printf("\t\t\t\t   ╰═══○●○●══════════════════════════════════════════╯\n");
                    printf("\t\t\t\t   ┌────────────────────────────────────────────────────-┐\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 1.物品名称                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 2.物品新旧程度(0为未知,1为全新,2为较新,3为一般)│\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 3.物品描述                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 4.估价                                              │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 5.物品编号                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 6.物品类型(a,b,c,d,e类)                           │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 0.更改完毕                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   └─────────────────────────────────────────────────────┘\n");
                    printf("\t\t\t\t\t\t     请您选择(0-6):");

            while(1)
        {
                scanf("%d",&choice2);
                  switch(choice2)
            {
            case 0:break;

            case 1:
                        printf("\n\t\t\t\t\t          物品名称更改为:");
                        scanf("%s",Goods[n].name);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品名称已变为:%s",Goods[n].name);
                        Sleep(1000);
                        printf("\n");
                        break;

            case 2:
                        printf("\n\t\t\t\t\t         物品新旧程度更改为:");
                        scanf("%d",&Goods[n].xinjiu);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品新旧程度已变为:%d",Goods[n].xinjiu);
                        Sleep(1000);
                        printf("\n");
                        break;

            case 3:
                        printf("\n\t\t\t\t\t          物品描述更改为:");
                        scanf("%s",Goods[n].description);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品描述已变为:%s",Goods[n].description);
                        Sleep(1000);
                        printf("\n");
                        break;

            case 4:
                        printf("\n\t\t\t\t\t          估价更改为:");
                        scanf("%d",&Goods[n].price);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品估价已变为:%d",Goods[n].price);
                        Sleep(1000);
                        printf("\n");
                        break;

            case 5:
                        printf("\n\t\t\t\t\t          物品编号更改为:");
                        scanf("%s",Goods[total].sum);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品编号已变为:%s",Goods[n].sum);
                        Sleep(1000);
                        printf("\n");
                        break;

            case 6:
                        printf("\n\t\t\t\t\t          物品类型更改为:");
                        scanf("%s",Goods[n].type);
                        printf("\n\n\t\t\t\t\t               更改成功!");
                        printf("\n\n\t\t\t\t\t         物品类型已变为:%s",Goods[n].type);
                        Sleep(1000);
                        printf("\n");
                        break;

            default:printf("\n\t\t\t\t\t     输入错误");
                continue;

            }
            if(choice2==0)break;
            printf("\n\t\t\t\t\t你想要继续更改信息吗?(是则输1,否则输0):");
            scanf("%d",&choice3);
            if(choice3==0)break;
            else
            {
                    system("cls");
                    printf("\n");
                    printf("\n");
                    printf("\t\t\t\t   ╭══════════════════════════════════════════○●○●═══╮\n");
                    printf("\t\t\t\t   │                      更改物品信息                   │\n");
                    printf("\t\t\t\t   ╰═══○●○●══════════════════════════════════════════╯\n");
                    printf("\t\t\t\t   ┌────────────────────────────────────────────────────-┐\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 1.物品名称                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 2.物品新旧程度(0为未知,1为全新,2为较新,3为一般)│\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 3.物品描述                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 4.估价                                              │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 5.物品编号                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 6.物品类型(a,b,c,d,e类)                           │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   │ 0.更改完毕                                          │\n");
                    printf("\t\t\t\t   │                                                     │\n");
                    printf("\t\t\t\t   └─────────────────────────────────────────────────────┘\n");
                    printf("\t\t\t\t\t\t     请您选择(0-6):");
            }

        }

        system("cls");


        printf("\n");
        printf("\n\n\n\n\n\t\t\t\t\t更改后的物品信息                           \n\n");
        printf("\t\t\t\t\t1.物品名称为:%s\n",Goods[n].name);
        printf("\t\t\t\t\t2.物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[n].xinjiu);
        printf("\t\t\t\t\t3.物品描述:%s\n",Goods[n].description);
        printf("\t\t\t\t\t4.估价(0为初始价):%d万元\n",Goods[n].price);
        printf("\t\t\t\t\t5.物品编号:%s\n",Goods[n].sum);
        printf("\t\t\t\t\t6.物品类型(a,b,c,d,e类):%s\n",Goods[n].type);
        printf("\n");

        userr *p;
        p=head->next;

        material *old;
        old=head2->next;

        while(p!=NULL && old!=NULL)
        {
            if(strcmp(p->peoplename,person[n].peoplename)==0)
            {
                strcpy(old->name,Goods[n].name);
                old->xinjiu=Goods[n].xinjiu;
                strcpy(old->description,Goods[n].description);
                old->price=Goods[n].price;
                strcpy(old->sum,Goods[n].sum);
                strcpy(old->type,Goods[n].type);
                break;
            }
            p=p->next;
            old=old->next;
        }
        //更新链表内该物品的数据

        //重新将全部数据读入文件,虽然效率有点低
        fprintf(fp1,"名称\t新旧\t描述\t估价\t编号\t类型(最新录入的位于上方)\n");
        old=head2->next;

        while(old!=NULL)
        {
            fprintf(fp1,"%s\t%d\t%s\t%d\t%s\t%s\n",old->name,old->xinjiu,old->description,old->price,old->sum,old->type);
            old=old->next;
        }


        fclose(fp1);
        wait();

}

//删除物品信息
void deleteGoods(int n)
{
    FILE *fp1;
    fp1=fopen("Goods.txt","w");

                strcpy(Goods[n].name, "");
                Goods[n].xinjiu=0;
                strcpy(Goods[n].description,"");
                Goods[n].price=0;
                strcpy(Goods[n].sum,"");
                strcpy(Goods[n].type,"");

        printf("\n");
        printf("\n\n\n\n\n\t\t\t\t\t更改后的物品信息                           \n\n");
        printf("\t\t\t\t\t1.物品名称为:%s\n",Goods[n].name);
        printf("\t\t\t\t\t2.物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[n].xinjiu);
        printf("\t\t\t\t\t3.物品描述:%s\n",Goods[n].description);
        printf("\t\t\t\t\t4.估价(0为初始价):%d万元\n",Goods[n].price);
        printf("\t\t\t\t\t5.物品编号:%s\n",Goods[n].sum);
        printf("\t\t\t\t\t6.物品类型(a,b,c,d,e类):%s\n",Goods[n].type);
        printf("\n");


        userr *p;
        p=head->next;

        material *old;
        old=head2->next;

        while(p!=NULL && old!=NULL)
        {
            if(strcmp(p->peoplename,person[n].peoplename)==0)
            {
                strcpy(old->name,"");
                old->xinjiu=0;
                strcpy(old->description,"");
                old->price=0;
                strcpy(old->sum,"");
                strcpy(old->type,"");
                break;
            }
            p=p->next;
            old=old->next;
        }
        //更新链表内该物品的数据

        //重新将全部数据读入文件,虽然效率有点低
        fprintf(fp1,"名称\t新旧\t描述\t估价\t编号\t类型(最新录入的位于上方)\n");
        old=head2->next;

        while(old!=NULL)
        {
            fprintf(fp1,"%s\t%d\t%s\t%d\t%s\t%s\n",old->name,old->xinjiu,old->description,old->price,old->sum,old->type);
            old=old->next;
        }


        delete old;
        fclose(fp1);
        wait();

}

void searchnumber()//输入物品编号获得拍卖物信息
{
            while(1)
            {

                    printf("\n\n\t\t\t\t当前拍卖场中正在拍卖的物品有:");
                            for(i=0;i<total;i++)
                            {
                                printf("%s ",Goods[i].sum);
                            }
                    printf("\n\n\t\t\t\t请输入物品编号以获得该拍卖物的物品信息:");

                            while(1)//输错物品编号
                            {
                                scanf("%s",a);
                                for(i=0;i<total;i++)
                                {
                                    if(strcmp(a,Goods[i].sum)==0)
                                        break;
                                }
                                if(i!=total)
                                    break;

                                else
                                printf("\n\t\t\t\t\t不存在该物品,请重新输入:");

                            }

                            printf("\n");
                            printf("\n\n\n\n\n\t\t\t\t\t物品信息                           \n\n");
                            printf("\t\t\t\t\t1.物品名称为:%s\n",Goods[i].name);
                            printf("\t\t\t\t\t2.物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[i].xinjiu);
                            printf("\t\t\t\t\t3.物品描述:%s\n",Goods[i].description);
                            printf("\t\t\t\t\t4.估价(0为初始价):%d万元\n",Goods[i].price);
                            printf("\t\t\t\t\t5.物品编号:%s\n",Goods[i].sum);
                            printf("\t\t\t\t\t6.物品类型(a,b,c,d,e类):%s\n",Goods[i].type);
                            printf("\n");


                            printf("\n\n\t\t\t\t\t    若您想继续查找请输1");
                            printf("\n\n\t\t\t\t\t    回到主菜单请输入0");

                            printf("\n\n\t\t\t\t\t       您的选择:");
                            scanf("%d",&choice1);
                            if(choice1==0)break;

                            system("cls");

            }

                             system("cls");
}

void searchname()//输入物品名称获得拍卖物信息
{
        while(1)
            {

                    printf("\n\n\t\t\t\t当前拍卖场中正在拍卖的物品有:");
                            for(i=0;i<total;i++)
                            {
                                printf("%s ",Goods[i].name);
                            }
                    printf("\n\n\t\t\t\t请输入物品名称以获得该拍卖物的物品信息:");

                            while(1)//输错物品编号
                            {
                                scanf("%s",a);
                                for(i=0;i<total;i++)
                                {
                                    if(strcmp(a,Goods[i].name)==0)
                                        break;
                                }
                                if(i!=total)
                                    break;

                                else
                                printf("\n\t\t\t\t\t不存在该物品,请重新输入:");

                            }

                            printf("\n");
                            printf("\n\n\n\n\n\t\t\t\t\t物品信息                           \n\n");
                            printf("\t\t\t\t\t1.物品名称为:%s\n",Goods[i].name);
                            printf("\t\t\t\t\t2.物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[i].xinjiu);
                            printf("\t\t\t\t\t3.物品描述:%s\n",Goods[i].description);
                            printf("\t\t\t\t\t4.估价(0为初始价):%d万元\n",Goods[i].price);
                            printf("\t\t\t\t\t5.物品编号:%s\n",Goods[i].sum);
                            printf("\t\t\t\t\t6.物品类型(a,b,c,d,e类):%s\n",Goods[i].type);
                            printf("\n");


                            printf("\n\n\t\t\t\t\t    若您想继续查找请输1");
                            printf("\n\n\t\t\t\t\t    回到主菜单请输入0");

                            printf("\n\n\t\t\t\t\t       您的选择:");
                            scanf("%d",&choice1);
                            if(choice1==0)break;

                            system("cls");

            }

                             system("cls");
}

void searchtype()//输入物品类型获得该类型所有拍卖物信息
{
    while(1)
    {
        for(i=0;i<total;i++)
                    {
                        for(j=0;j<z;j++)
                        {
                            if(Goods[i].type[0]==goodstype[j])//已存在该类产品
                                break;
                        }


                        if(j==z)
                        {
                            t=Goods[i].type[0];
                            goodstype[z]=t;
                            z++;
                        }

                    }
                    //总共有多少类产品

                    printf("\n\n\n\t\t\t\t现在拍卖场中共有%d类物品,分别为:",z);
                    for(i=0;i<z;i++)
                    {
                        printf("%c ",goodstype[i]);
                    }

                    printf("\n\n\t\t\t\t您要查看的物品类型是:");

                    scanf(" %c",&t);//缓冲区

                    switch(t)
                    {
                        case 'a':typeprint('a');
                                        break;
                        case 'b':typeprint('b');
                                        break;
                        case 'c':typeprint('c');
                                        break;
                        case 'd':typeprint('d');
                                        break;
                        case 'e':typeprint('e');
                                        break;

                        default:printf("\n\t\t\t\t\t     输入错误");
                            continue;
                    }

                                printf("\n\n\t\t\t\t\t    若您想继续查找请输1");
                                printf("\n\t\t\t\t\t    回到主菜单请输入0");

                                printf("\n\n\t\t\t\t\t       您的选择:");

                                scanf("%d",&choice1);
                                if(choice1==0)break;

                                system("cls");
    }
                                system("cls");
}

void jingpai()//开始竞拍
{
    n=total;
    printf("\n\n\t\t\t\t\t           即将开始拍卖!");
    printf("\n\n\t\t\t\t\t     此次共有%d件拍卖物准备竞拍\n\n",total);
    Sleep(2000);
    for(i=3;i>0;i--)
    {
        system("cls");
        printf("\n\n\n\n\n\n\n\n\t\t\t\t\t        ***********  %d  ***********\n",i);
        Sleep(1000);
    }
    system("cls");
    //开始竞拍
    for(i=0;i<total;i++)
    {
        who=-2;
        printGoods(i);

        for(k=0;k<total;k++)//第几位拍卖者选择是否拍卖,先登录
        {
            if(k!=0)
                printGoods(i);

             j=loginjingpai(k);//记录该拍卖者是谁

            if(j==-1)continue;

            printf("\n");
            printf("\t\t\t\t              该物品估价为%d万元\n\n",Goods[i].price);
            printf("\t\t\t\t             当前最高出价为%d万元\n\n",Goods[i].nowprice);

            printf("\t\t\t\t       您是否想参与竞拍此物品(1为愿意,0为不愿意):");
            scanf("%d",&choice1);

            if(choice1==0)
            {
                system("cls");
                continue;
            }

            else
            {
                printf("\n\n\t\t\t\t      请选择您的出价(价格不得低于当前最高价):");
                scanf("%d",&Goods[i].nowprice);
                who=j;
                printf("\n\n\t\t\t\t             该物品当前最高出价变为%d万元\n\n",Goods[i].nowprice);

                wait();
            }

        }

        printf("\n\n\n\n\n\n");
        printf("\t\t\t\t\t物品名称为:%s\n",Goods[i].name);
        printf("\t\t\t\t\t物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[i].xinjiu);
        printf("\t\t\t\t\t物品描述:%s\n",Goods[i].description);
        printf("\t\t\t\t\t估价(0为初始价):%d万元\n",Goods[i].price);
        printf("\t\t\t\t\t物品编号:%s\n",Goods[i].sum);
        printf("\t\t\t\t\t物品类型(a,b,c,d,e类):%s\n\n",Goods[i].type);
        printf("\n");

        if(who==-2)
        {
            printf("\n\n\n\t\t\t\t\t    很遗憾,以上拍卖物无人参与竞拍\n\n\n");
            Sleep(2000);
        }
        else
        {
            printf("\n\n\n\t\t\t\t\t     恭喜,上述物品以%d万元成交\n\n",Goods[i].nowprice);
            printf("\t\t\t\t\t\t   得主为:%s\n\n",person[who].peoplename);
        }

       n--;
       printf("\t\t\t\t\t       总共%d件拍卖物,剩余%d件",total,n);
       Sleep(2500);

        if(n==0)
        {
            system("cls");
            break;
        }
        for(now=3;now>0;now--)
        {
            system("cls");
            printf("\n\n\n\n\n\n\n\n\t\t\t\t\t***********%d秒后开始下一件物品的拍卖  ***********\n",now);
            Sleep(1000);
        }
        system("cls");

    }

        for(now=3;now>0;now--)
        {
            system("cls");
            printf("\n\n\n\n\n\n\n\t\t\t\t            竞拍结束,各位贵宾欢迎下次光临!");
            printf("\n\n\n\t\t\t\t\t***********%d秒后将回到主菜单  ***********\n",now);
            Sleep(1000);
        }

    system("cls");

}

//查看该类型的所有物品
void typeprint(char c)
{
        for(i=0;i<z;i++)
        {
            if(Goods[i].type[0]!=c)
                continue;
            else
            {
                    printf("\n");
                            printf("\n\n\n\n\n\t\t\t\t\t物品信息                           \n\n");
                            printf("\t\t\t\t\t1.物品名称为:%s\n",Goods[i].name);
                            printf("\t\t\t\t\t2.物品新旧程度(0为未知,1为全新,2为较新,3为一般):%d\n",Goods[i].xinjiu);
                            printf("\t\t\t\t\t3.物品描述:%s\n",Goods[i].description);
                            printf("\t\t\t\t\t4.估价(0为初始价):%d万元\n",Goods[i].price);
                            printf("\t\t\t\t\t5.物品编号:%s\n",Goods[i].sum);
                            printf("\t\t\t\t\t6.物品类型(a,b,c,d,e类):%s\n",Goods[i].type);
                            printf("\n");
            }

        }

}

觉得该篇文章有帮助到你的话 

请不要忘记点个赞再走~ 

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明 基于C语言 C++开发的系统项目 课程设计 毕业设计 供参考 源代码+说明
好的,下面是一个简单的物品竞拍系统的C语言课程设计: 1. 首先需要定义物品竞拍数据结构,包括竞拍者信息和竞拍物品信息。 ```c // 竞拍者信息 typedef struct bidder { char name[20]; // 竞拍者姓名 int bid_price; // 竞拍者出价 } Bidder; // 竞拍物品信息 typedef struct item { char name[20]; // 物品名称 char desc[50]; // 物品描述 int start_price; // 起拍价 int cur_price; // 当前价 int max_price; // 最高价 Bidder* winner; // 获胜者信息 } Item; ``` 2. 编写物品竞拍系统的主程序,包括初始化竞拍物品信息、添加竞拍者信息、开始竞拍、结束竞拍等操作。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BIDDER_NUM 10 // 最大竞拍者数量 // 竞拍者信息 typedef struct bidder { char name[20]; // 竞拍者姓名 int bid_price; // 竞拍者出价 } Bidder; // 竞拍物品信息 typedef struct item { char name[20]; // 物品名称 char desc[50]; // 物品描述 int start_price; // 起拍价 int cur_price; // 当前价 int max_price; // 最高价 Bidder* winner; // 获胜者信息 } Item; // 初始化竞拍物品信息 void init_item(Item* item, char* name, char* desc, int start_price, int max_price) { strcpy(item->name, name); strcpy(item->desc, desc); item->start_price = start_price; item->cur_price = start_price; item->max_price = max_price; item->winner = NULL; } // 添加竞拍者信息 void add_bidder(Bidder* bidders, int* bidder_num, char* name) { if (*bidder_num >= MAX_BIDDER_NUM) { printf("竞拍者已满,无法添加\n"); return; } Bidder* bidder = &bidders[*bidder_num]; strcpy(bidder->name, name); bidder->bid_price = 0; (*bidder_num)++; } // 开始竞拍 void start_bid(Item* item, Bidder* bidders, int bidder_num) { printf("物品名称:%s\n", item->name); printf("物品描述:%s\n", item->desc); printf("起拍价:%d\n", item->start_price); for (int i = 0; i < bidder_num; i++) { Bidder* bidder = &bidders[i]; printf("竞拍者:%s,出价:%d\n", bidder->name, bidder->bid_price); } while (item->cur_price < item->max_price) { int bid_price = 0; printf("请出价(当前价:%d,最高价:%d):", item->cur_price, item->max_price); scanf("%d", &bid_price); if (bid_price <= item->cur_price) { printf("出价必须高于当前价\n"); continue; } if (bid_price > item->max_price) { printf("出价不能高于最高价\n"); continue; } int bidder_index = -1; for (int i = 0; i < bidder_num; i++) { Bidder* bidder = &bidders[i]; if (strcmp(bidder->name, item->winner->name) == 0) { bidder_index = i; continue; } if (bidder->bid_price >= bid_price) { continue; } bidder_index = i; item->winner = bidder; } if (bidder_index == -1) { printf("没有竞拍者出价高于当前价\n"); continue; } item->cur_price = bid_price; Bidder* bidder = &bidders[bidder_index]; bidder->bid_price = bid_price; item->winner = bidder; } printf("竞拍结束,%s以%d元获得了%s\n", item->winner->name, item->cur_price, item->name); } int main() { Item item; Bidder bidders[MAX_BIDDER_NUM]; int bidder_num = 0; init_item(&item, "iPhone", "一部全新的iPhone", 1000, 5000); add_bidder(bidders, &bidder_num, "小明"); add_bidder(bidders, &bidder_num, "小红"); add_bidder(bidders, &bidder_num, "小李"); start_bid(&item, bidders, bidder_num); return 0; } ``` 以上是一个简单的物品竞拍系统的C语言课程设计,可以根据实际需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值