《2022年C语言版商品库存管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言版商品库存管理系统 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、建议使用 VS 打开运行#pragma once#includetypedef struct information / 商品信息 char number20; /编号 char sname20; /名称 float price; /价格 int count; /数量 char dath20; /生产日期 struct information *next;inf;void menu(inf *head); / 显示主菜单inf *create(); / 创建链表void Input(inf *head); / 输入商品信息void tianjia(inf *head); / 添加商品信息voi
2、d output(inf *head); / 输出商品信息void chaxun(inf *head); / 查询商品信息void chaxun_number(inf *head); / 按编号查询void chaxun_sname(inf *head); /按名称查询void xiugai(inf *head); / 修改商品信息void shanchu(inf *head); / 删除商品信息void write_file(inf *head); /保存商品信息到文件void paixu(inf *head);inf *Read_file(); / 读取文件内商品信息void freeh(
3、inf *head); / 退出程序#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include #pragma comment(lib, WINMM.lib)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - #include标头.hvoid menu(inf *head) / 显示菜单背景 .wav), NULL, SN
4、D_FILENAME | SND_ASYNC | SND_LOOP); system(color 3B); printf(tt*n); printf(tttt欢迎进入商品库存管理系统n); printf(tt*n); printf(n); printf(tt|=|n); printf(tt|_ 基本信息 _|n); printf(tt| 1. 商品信息录入 | 2.添加商品信息 |n); printf(tt| 3. 查找商品信息 | 4.修改商品信息 |n); printf(tt| 5. 删除商品信息 | 6.保存文件信息 |n); printf(tt| 7. 读取文件信息 | 8.显示商品信
5、息 |n); printf(tt| 9. 按价格从高到低进行排序 |n); printf(tt|_0. 释放链表。退出_|); printf(nttt 请输入你的选项(0-8):n); printf(n); printf(t 请输入你的选择 : n);inf *create() / 创建链表 inf *p; p = (inf *)malloc(sizeof(struct information); if (p = NULL) printf( 链表创建失败 .n); exit(0); p-next = NULL; return (p);void Input(inf *head) / 录入货物信息
6、 inf *p; int i,n; printf( 请输入:你想录入多少个商品信息: n ); scanf(%d, &n); for (i = 1; i number); printf( 名称:); scanf(%s, p-sname); printf( 价格:); scanf(%f, &p-price); printf( 数量:); scanf(%d, &p-count); printf( 生产日期: ); scanf(%s,p-dath); p-next = NULL; while (head-next != NULL) head = head-next; head-next = p; v
7、oid tianjia( inf *head) / 添加货物信息 inf *p; int i,n; printf( 请输入:你想添加多少个商品信息: n); scanf(%d, &n); for (i = 1; i number); printf( 名称:); scanf(%s, p-sname); printf( 价格:);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - scanf(%f, &p-price); printf
8、( 数量:); scanf(%d, &p-count); printf( 生产日期: ); scanf(%s,p-dath); p-next = NULL; while (head-next != NULL) head = head-next; head-next = p; void output(inf *head) / 输出货物信息 int n = 0; inf *p; p = head-next; if (p = NULL) printf( 链表为空,请先输入信息!n); return; while (p != NULL) n+; printf( 商品信息:编号 : %s,名称 :%s,
9、价格 :%.2f 数量 :%d 生产日期: %sn, p-number, p-sname, p-price, p-count,p-dath); p = p-next; printf( 商品总数为: %d n, n);void chaxun(inf *head) / 查询货物信息函数 int a; printf(tt 查询信息 n); while (1) printf(t 1. 按编号查询 n); printf(t 2. 按名称查询 n); printf( 请输入你的选择:n); scanf(%d, &a);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
10、 - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - if (a = 1) chaxun_number(head);/调用按编号查询的函数 break; if (a = 2) chaxun_sname(head);/ 调用按名称查询的函数 break; if (a != 1 & a != 2) printf( 输入错误! n); break; getchar(); void chaxun_number(inf *head) / 按编号查询 char num20; inf *p; int i = -1; p = head
11、; printf( 请输入你要查询的商品的编号:); scanf(%s, num); while (p-next != NULL) p = p-next; if (strcmp(p-number, num) = 0) i = 1; printf( 已找到该商品信息n); printf( 货物信息:编号:%s,名称 :%s,价格 :%.2f.数量 :%d,生产日期: %sn, p-number, p-sname, p-price, p-count,p-dath); if (inext != NULL) p = p-next; if (strcmp(p-sname, a) = 0) i = 1;
12、printf( 已找到该商品信息n); printf( 商品信息:编号:%s,名称 :%s,价格 :%.2f.数量 :%d,生产日期 n, p-number, p-sname, p-price, p-count,p-dath); if (inext != NULL) p = p-next; if (strcmp(p-number, no) = 0) i = 1; printf( 已找到该商品 n 请输入新的的编号,名称,价格,数量:生产日期:n); printf( 编号:); scanf(%s, p-number); printf( 名称:); scanf(%s, p-sname); prin
13、tf( 价格:); scanf(%f, &p-price); printf( 数量:); scanf(%d, &p-count); printf( 生产日期: ); scanf(%s,p-dath); if (inext; if (p = NULL) printf( 没有商品信息,请先保存商品信息!n); printf(tt 请输入要修改的内容n); printf(tt 1. 修改编号 2.修改名称 n); printf(tt 3. 修改价格 4.修改数量 n); printf(tt 5. 修改生产日期 n); printf( 请选择 n); scanf(%d, &b); switch (b)
14、 case 1:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - printf( 请输入原商品编号:n); scanf(%s, &number2); while (p != NULL) if (strcmp(p-number, number2) = 0) printf( 已找到该商品 n 请输入新的编号 :n); scanf(%s, &p-number); p = p-next; printf( 该商品信息已修改成功。n); b
15、reak; case 2: printf( 请输入原名称 :n); scanf(%s, &name2); while (p != NULL) if (strcmp(p-sname, name2) = 0) printf( 请输入新的名称:n); scanf(%s, &p-sname); break; p = p-next; printf( 该商品信息已修改成功。n); break; case 3: printf( 请输入该商品编号:); scanf(%s,&number2); printf( 请输入原价格 :n); scanf(%f, &price2); while (p != NULL) i
16、f (strcmp(p-number, number2) = 0&price2=p-price) printf( 请输入新的价格:n); scanf(%f, &p-price); break; p = p-next; printf( 该商品信息已修改成功。n); break; case 4:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - printf( 请输入该商品编号:); scanf(%s,&number2); print
17、f( 请输入被修改的数量:n); scanf(%d, &count2); while (p != NULL) if (count2 = p-count&strcmp(p-number, number2) = 0) printf( 请输入新的数量:n); scanf(%d, &p-count); break; p = p-next; printf( 该商品信息已修改成功。n); break; default: printf( 修改内容有错误!n); void shanchu(inf *head) / 删除货物信息 int a; printf(tt 1. 按编号删除 2.按名称删除 n); pri
18、ntf(tt 请输入选项: n); scanf(%d, &a); switch (a) case 1: char number20; int i = -1; inf *p, *h; p = head; printf( 请输入你要删除的商品的编号:n); scanf(%s, number); while (p-next != NULL) if (strcmp(number, p-next-number) = 0) i = 1;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共
19、14 页 - - - - - - - - - h = p-next; p-next = p-next-next; free(h); printf( 已删除该商品信息。n); break; p = p-next; if (inext != NULL) if (strcmp(name, p-next-sname) = 0) i = 1; h = p-next; p-next = p-next-next; free(h); printf( 已删除该商品信息。n); break; p = p-next; if (inext != NULL) p = p-next; fwrite(p, sizeof(s
20、truct information), 1, fp); fclose(fp);inf *Read_file() / 读取文件内的货物信息 inf *p, *d, *head; FILE *fp; head = (inf *)malloc(sizeof(struct information); p = (inf *)malloc(sizeof(struct information); if (fp = fopen( 商品信息 .txt, rb) = NULL) printf( 不能打开文件 !n); exit(0); if (fread(head, sizeof(struct informati
21、on), 1, fp) d = head; while (fread(p, sizeof(struct information), 1, fp) d-next = p; d = p; p = (inf *)malloc(sizeof(struct information); d -next = NULL; fclose(fp); return (head);void freeh(inf *head) / 释放空间 退出程序 inf *p; p = (inf *)malloc(sizeof(struct information); p = head;名师资料总结 - - -精品资料欢迎下载 -
22、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - while (head-next != NULL) head = head-next; free(p); p = head; free(p);void paixu(inf *head) inf *p=head,*q=NULL,*t=NULL,*subhead=NULL; int i, j, count = 0; while (p-next != NULL) count+; p = p-next; for (i = 0; i
23、 next; q = p-next; for (j = 0; j price price) subhead-next = p-next; p-next = q-next; q-next = p; t= p; p = q; q = t; subhead = subhead-next; p = p-next; q = q-next; output(head);int main() inf *head;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - -
24、- - - - - head = (inf*)malloc(sizeof(struct information); head = create(); while (1) menu(head); int h; scanf(%d, &h); switch (h) /功能选择 case 1: Input( head); Sleep(500); break; case 2: tianjia( head); Sleep(1000); break; case 3: chaxun(head); break; case 4: xiugai(head); write_file(head); break; cas
25、e 5: shanchu(head); write_file(head); output(head); break; case 6: write_file(head); printf(t 已经成功保存信息!tn); Sleep(1000); break; case 7: head-next = Read_file(); output(head); Sleep(1000); break; case 8: output(head); Sleep(1000); break; case 9: paixu(head); Sleep(1000); break;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - case 0: freeh(head); printf(t- 已经退出程序 -tn); exit(0); default: printf( 输入错误 n); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -
限制150内