#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");
}
}
}