IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 链表做的简易手机销售系统 -> 正文阅读

[数据结构与算法]链表做的简易手机销售系统

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

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:28:07  更:2021-07-15 16:30:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:10:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计