欢迎大家关注我的公众号: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");
}
}
}
觉得该篇文章有帮助到你的话
请不要忘记点个赞再走~