高分求 C语言 商品销售管理系统 代码~ 简单的~

设计思路:
利用单链表实现,由输入、查询、更新、统计、输出五大功能模块组成。

判断键值时,有效输入0~9之间任意整数,其他视为错误。
1.Add()函数,增加记录
2.Del()函数,删除记录
3.Qur()函数,查询记录
4.Modify()函数,修改记录
5.Insert()函数,插入记录
6.Tongji()函数,统计记录
7.Sort()函数,按降序排序记录
8.Save()函数,存储记录
9.Disp()函数,将记录以表格形式输出至屏幕
0~9之外,Wrong()函数,按键错误提示

其他的随意啦,不一定要全新的,只要改成以上形式……
事关学分,江湖救急!

第1个回答  推荐于2016-02-17
#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct
{
char num[10];
char name[20];
float price;
int amount;
}Product;
typedef struct node
{
Product p;
struct node *pre;
struct node *next;
}node,*linklist;

linklist head,last;

void setData(linklist p)
{
printf("产品编号:");
scanf("%s",&p->p.num);
printf("产品名称:");
scanf("%s",&p->p.name);
printf("产品单价:");
scanf("%f",&p->p.price);
printf("产品数量:");
scanf("%d",&p->p.amount);
}

void Insert(linklist p)
{
setData(p);
p->next=last;
last->pre->next=p;
p->pre=last->pre;
last->pre=p;
}
void Add()
{
char ch;
do
{
linklist p=(linklist)malloc(sizeof(node));
system("cls");
Insert(p);
printf("是否继续?");
scanf(" %c",&ch);
}while(ch=='y'||ch=='Y');
}

linklist Qur()
{
char num[10];
linklist p=head->next;
printf("输入产品编号:");
scanf("%s",num);
while(p!=last)
{
if(strcmp(num,p->p.num)==0) break;
p=p->next;
}
if(p==last) {printf("未找到\n");system("pause");}
return p;
}

void Del()
{
linklist p=Qur();
if(p==last) return;
p->pre->next=p->next;
p->next->pre=p->pre;
free(p);
printf("删除成功\n");
system("pause");
}

void Modify()
{
linklist p=Qur();
if(p==last) return ;
setData(p);
}
void printTitle()
{
printf("编号\t名称\t单价\t数量\n");
}

void show(linklist p)
{
printf("%s\t%s\t%.2f\t%d\n",p->p.num,p->p.name,p->p.price,p->p.amount);
}
void Tongji()
{
linklist p=head->next;
int i=0;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
i++;
}
printf("共%d项商品\n",i);
system("pause");
}

void Sort()
{
linklist p,q;
for (p=head->next;p!=last;p=p->next)
{
for (q=p->next;q!=last;q=q->next)
{
if(strcmp(p->p.num,q->p.num)<0)
{
Product temp=p->p;
p->p=q->p;
q->p=temp;
}
}
}
printf("完成\n");
system("pause");
}

void Save()
{
linklist p=head->next;
FILE *fp=fopen("d:\\record.txt","w");
if(fp==NULL)
{
printf("保存失败\n");
return;
}
fprintf(fp,"编号\t名称\t单价\t数量\n");
while(p!=last)
{
fprintf(fp,"%s\t%s\t%.2f\t%d\n",p->p.num,p->p.name,p->p.price,p->p.amount);
p=p->next;
}
fclose(fp);
printf("完成\n");
system("pause");
}
void Disp()
{
linklist p=head->next;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
}
system("pause");
}
void Wrong()
{
printf("输入错误!\n");
system("pause");
}
void menu(void)
{
system("cls");
printf("********商品销售管理系统*******\n");
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("* 9:显示数据 *\n");
printf("* 0:退出 *\n");
printf("* *\n");
printf("*******************************\n");
}

int select()
{
int choose;
scanf("%d",&choose);
switch(choose)
{
case 1:Add();break;
case 2:Del();break;
case 3:
{
linklist p=Qur();
if(p!=last) {show(p);system("pause");}break;
}
case 4:Modify();break;
case 5:
{
linklist p=(linklist)malloc(sizeof(node));
Insert(p);break;
}
case 6:Tongji();break;
case 7:Sort();break;
case 8:Save();break;
case 9:Disp();break;
case 0:break;
default:Wrong();break;
}
return choose;
}
void destroy()
{
linklist p=head->next;
while(p!=last)
{
head->next=p->next;
free(p);
p=head->next;
}
free(head);
free(last);
}
int main(void)
{
head=(linklist)malloc(sizeof(node));
last=(linklist)malloc(sizeof(node));
head->next=last;
last->next=NULL;
last->pre=head;
head->pre=NULL;
do
{
menu();
} while (select()!=0);
destroy();
return 0;
}本回答被提问者采纳

高分求 C语言 商品销售管理系统 代码~ 简单的~
printf("产品编号:");scanf("%s",&p->p.num);printf("产品名称:");scanf("%s",&p->p.name);printf("产品单价:");scanf("%f",&p->p.price);printf("产品数量:");scanf("%d",&p->p.amount);} void Insert(linklist p){ setData(p);p->next=last;last->pre->next=p;p->...

求一个C语言课程设计题的源程序代码,题目是:商品进销存管理程序。
printf("C 语言成绩的最高分为:%.2f C 语言成绩的最低分为:%.2f\\n",max->xk[0].zchji,min->xk[0].zchji); printf("C 语言成绩优秀的人数为:%d\\n",k1[0]); printf("C 语言成绩良好的成绩为:%d\\n",k2[0]); printf("C 语言成绩及格的人数为:%d\\n",k1[0]+k2[0]); printf("C 语言...

高分求一段简单C语言代码,满意再追加分数
感觉要用到 GetModuleFileName和ShellExecute这两个函数 没时间。。。

高分求 C语言 数值计算代码~~~谢谢
computer(); \/*运行计算器 *\/ closegraph();\/*系统关闭图形模式返回文本模式*\/ return(0); \/*结束程序*\/}\/* 设置系统进入图形模式 *\/void initialize(void){ int xasp, yasp; \/* 用于读x和y方向纵横比*\/ GraphDriver = DETECT; \/* 自动检测显示器*\/ initgraph( &GraphDriver, &GraphMode, "" );\/...

求高手解答一些简单的C语言题目!(高分悬赏)
After GlobalPlusPlus(), it is 2 2、over!3、(1)printf("Input a year:");scanf("%d",&year);(2)(0==year%4 && 0!=year%100) || 0==year%400 4、(1)s[i]!='\\0'(2)s[j]=s[i];5、include<stdio.h> main(){ int i=1,j=1;for(i=1;i<=9;i++){ for(j=1;...

高分求c代码:每个线程的cpu使用率
下面是部分测试代码:include <windows.h> include <stdio.h> include <conio.h> include <tchar.h> include <pdh.h> define MAXPATH 80 int __cdecl _tmain (int argc, TCHAR **argv){ HQUERY hQuery;HCOUNTER *pCounterHandle;PDH_STATUS pdhStatus;PDH_FMT_COUNTERVALUE fmtValue...

高分求C语言课程设计源代码(分不多了,全部给你们)
int Pos = BirthDay.find_first_of('\/');string BirthYear;BirthYear.assign(BirthDay,0,Pos);char chBirthYear[6];strcpy(chBirthYear,BirthDay.c_str());\/\/获取当前系统的年份 char NowYear[5];time_t tnow = time(0);strftime(NowYear , 5 , "%Y" , localtime(&tnow));...

C语言dos程序 要求能读取简单数控G代码文件 并显示数控轨迹 在线等待...
这个程序挺有意思的,学习!

高分求一汇编小程序,
Week db 'SunMonTusWedThuFriSta'inter_Seg dw ?inter_offset dw ?MESS0 DB '***$'MESS1 DB '*** Show the time of System ***$'MESS2 DB '** Day of system **$'MESS3 DB '* *$'MESS4 DB '** Time of system **$'MESS5 DB '**...

高分求软件高手指点我的努力方向
首先 不要怕,这是一个必然经历的过程。没有谁一开始就能做一个大的项目。拿到项目,比如学生管理系统,你当然会觉得很茫然,无从下手。此时,你要做的是分析,分析一下学生管理系统需要哪些模块,哪些功能,这就是传说中的需求分析。。我们来分析下,作为一个简单学生管理系统,首先,得保存学生的信息...

相似回答