| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2394 人关注过本帖
标题:C语言课程设计——物资管理系统 急件,谢谢大家
只看楼主 加入收藏
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
typedef struct
{
int no;
char name[5];
int number;
}Data;
typedef struct node
{
Data inform;
struct node* next;
}LNode,*LinkList;

void Onit_LinkList(LinkList L);
LinkList Creat_LinkList(LinkList L);
void Print_LinkList(LNode* L);
LinkList Search_Data(int No,LinkList L);
LinkList In_Data(Data d,LinkList L);
void Out_Data(int No,int number,LinkList L);
LinkList Sort_LinkList(LinkList L);
LNode* Compare_NO(LinkList L);
LNode* Mix(LinkList L);
int main()
{
int option;
LNode* L;
L=(LNode*)malloc(sizeof(LNode));
Onit_LinkList(L);
do
{
cout<<"\n----------------------------------"
<<"请选择相应的操作"
<<"------------------------------\n"
<<"1.........录入货物信息"<<endl
<<"2.........查找货物并输出相应信息"<<endl
<<"3.........加入货物"<<endl
<<"4.........提取货物"<<endl
<<"5.........输出货物信息"<<endl
<<"0.........退出仓库管理系统"<<endl;
cin>>option;

switch(option)
{
case 0:
break;
case 1: L=Creat_LinkList(L);
break;
case 2:
{
int n1;
LinkList L1;
L1=(LNode*)malloc(sizeof(LNode));
cout<<"\n键入0退出查找。\n";
do
{
cout<<"\n输入要查找的货号:";
cin>>n1;
if(n1==0)break;
L1=Search_Data(n1, L);
if(L1==NULL)
{
cout<<"\n找不到指定的货物!!!!\n";
}
else
{
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl
<<L1->inform.no<<setw(18)
<<L1->inform.name<<setw(18)
<<L1->inform.number<<endl;
}
}while(n1);
break;
}
case 3:
{
LinkList L1;
L1=(LNode*)malloc(sizeof(LNode));
cout<<"键入0退出加入货物。\n";
do
{
Data d;
cout<<"\n输入加入的货号:";
cin>>d.no;
L1=Search_Data(d.no,L);
if(d.no==0)break;
if(L1!=NULL)
{
cout<<"\n仓库中已存在要加入的货物,\n"
<<"只需输入加入的数量:";
cin>>d.number;
}
else
{
cout<<"\n输入货物名称及数量:";
cin>>d.name>>d.number;
}
L=In_Data(d,L);
}while(1);
break;
}
case 4:
{
LinkList L1;
L1=(LNode*)malloc(sizeof(LNode));
cout<<"\n键入0退出提取货物。\n";
do
{
int No,number;
cout<<"\n输入要提取货号:";
cin>>No;
if(No==0)break;
L1=Search_Data(No,L);
if(L1==NULL)
{
cout<<"该货物信息不存在!!!\n";
continue;
}
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl
<<L1->inform.no<<setw(18)
<<L1->inform.name<<setw(18)
<<L1->inform.number<<endl;
cout<<"\n输入提取货物的数量:";
cin>>number;
Out_Data( No,number,L);
}while(1);
break;
}
case 5:
{
Print_LinkList(L);
break;
}
default:
cout<<"无效操作!!";
break;
}
}while(option);
return 0;
}

void Onit_LinkList(LinkList L)
{
L->next=NULL;
}
LinkList Creat_LinkList(LinkList L)
{
LNode *s,*r=L;
cout<<"键入0退出录入。\n";
do
{
cout<<"\n输入货号:";
s=(LNode*)malloc(sizeof(LNode));
cin>>s->inform.no;
if(s->inform.no==0)
{
free(s);
break;
}
if(r->inform.no==s->inform.no)
{
cout<<"\n货号重复!!!!\n";
continue;
}
cout<<"\n输入货物名称及数量:";
cin>>s->inform.name
>>s->inform.number;
r->next=s;
r=s;
}while(1);
if(r!=NULL)r->next=NULL;
L=Sort_LinkList(L);
return L;
}
void Print_LinkList(LNode* L)
{
LNode *r=L;
if(L->next==NULL)cout<<"仓库中无货物\n";
else
{
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl;
do
{
r=r->next;
cout<<r->inform.no<<setw(18)
<<r->inform.name<<setw(18)
<<r->inform.number
<<endl;

}while(r->next!=NULL);
}
}
LinkList Search_Data(int No,LinkList L)
{
LinkList r;
r=L->next;
while(r!=NULL && r->inform.no!=No)
r=r->next;
return r;
}
LinkList In_Data(Data d,LinkList L)
{
LinkList L1;
L1=(LNode*)malloc(sizeof(LNode));
L1=Search_Data(d.no,L);
if(L1==NULL)
{
LNode *r,*p,*s;
r=L->next;
s=L;
p=(LNode*)malloc(sizeof(LNode));
p->inform.no=d.no;
for(int i=0;i<6;i++)
{
p->inform.name[i]=d.name[i];
}
p->inform.number=d.number;
while(r->inform.no<d.no)r=r->next;
while(s->next!=r)s=s->next;
p->next=s->next;
s->next=p;
}
else
L1->inform.number +=d.number;
return L;
}
LinkList Sort_LinkList(LinkList L)
{
LinkList new_list;
LNode *r,*p,*mix;
new_list=(LNode*)malloc(sizeof(LNode));
new_list->next=NULL;
r=new_list;
mix=Mix(L);
do
{
p=(LNode*)malloc(sizeof(LNode));
p=Compare_NO(L);
r->next=p;
r=p;
}while(p->inform.no<mix->inform.no);
if(r!=NULL)r->next=NULL;
L=new_list;
return L;
}
void Out_Data(int No,int number,LinkList L)
{
LinkList L1;
L1=(LNode*)malloc(sizeof(LNode));
L1=Search_Data(No,L);
if(L1->inform.number>=number)
L1->inform.number-=number;
else
{
char p;
cout<<"\n该货物库存不足,是否提取(Y/N):";
cin>>p;
if(p=='y'||p=='Y')
{

cout<<"\n货物"<<L1->inform.name<<endl
<<"提取了"<<L1->inform.number
<<"件,还需"<<number-L1->inform.number
<<"件才能满足您的要求~~"<<endl;
L1->inform.number=0;

}

}

}
LNode* Compare_NO(LinkList L)
{
LNode *r,*p,*s;
s=(LNode*)malloc(sizeof(LNode));
p=L->next;
if(p->next==NULL)return p;
r=p->next;
while(r!=NULL)
{
if(p->inform.no>r->inform.no)p=r;
r=r->next;
}
*s=*p;
while(L->next!=p)L=L->next;
if(p->next==NULL)L->next=NULL;
else L->next=p->next;
free(p);
return s;
}
LNode* Mix(LinkList L)
{
LNode *r,*p,*s;
s=(LNode*)malloc(sizeof(LNode));
p=L->next;
if(p->next==NULL)return p;
r=p->next;
while(r!=NULL)
{
if(p->inform.no<r->inform.no)p=r;
r=r->next;
}
return p;
}
刚学链表时候做的.

2007-07-11 23:08
wjllsk
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-6-29
收藏
得分:0 

可以的,我这几天没上网,刚看到,现在发给你应该不算太晚吧
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{int number;/*编号*/
char name[10];/*物品名*/
int wpgs;/*物品个数*/
float wpjj;/*物品进价*/
float wpxsj;/*物品销售价 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/

/*==============================================================================================*/
/*==============================================================================================*/
score *add2311(score *head,score *stu)
/*函数add2311,功能:追加物品资料,并且将所有物品资料按编号排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];

p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/
printf("输入要增加的物品的资料!\n");
repeat4: printf("请输入物品编号(编号应大于0):");
scanf("%d",&stu->number);
/*输入编号,物品编号应大于0*/
/******************************************************/
if(stu->number==0)
goto end2;/*当输入的物品编号为0时,转到末尾,结束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("物品编号重复,请重输!\n");
goto repeat4;
/*当输入的物品编号已经存在,程序报错,返回前面重新输入*/
}
}
}

}

/******************************************************/
printf("输入物品名:");
scanf("%s",stu->name); /*输入物品名*/
printf("请输入物品个数:");
scanf("%f",&stu->wpgs); /*输入个数*/
printf("请输入物品进价:");
scanf("%f",&stu->wpjj);/*输入物品进价*/

printf("请输入物品销售价):");
scanf("%f",&stu->wpxsj);/*输入物品销售价*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else/*原来链表不为空*/
{
if(p1->next==NULL)/*找到原来链表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*将它与新开单元相连接*/
}
else
{
while(p1->next!=NULL)/*还没找到末尾,继续找*/
{
p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}

}
n=n+1;


p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;

if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的编号值,使得编号大者移到后面的结点中*/

strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的物品名,使之与编号相匹配*/
fen=max->wpgs;
max->wpgs=p1->wpgs;
p1->wpgs=fen;
/*交换前后结点中的物品个数,使之与编号相匹配*/

fen=max->wpjj;
max->wpjj=p1->wpjj;
p1->wpjj=fen;
/*交换前后结点中的物品进价,使之与编号相匹配*/

fen=max->wpxsj;
max->wpxsj=p1->wpxsj;
p1->wpxsj=fen;
/*交换前后结点中的物品销售价,使之与编号相匹配*/
}

}
max=head;p1=head;/*重新使max,p指向链表头*/
} end2:
printf("现在的物品个数为:%d个!\n",n);
return(head);

}
/*==============================================================================================*/
/*==============================================================================================*/
score *search2311(score *head)
/*函数search2311,功能:查询物品资料*/
{int number;
score *p1,*p2;
printf("输入要查询的物品的编号,");
scanf("%d",&number);

while(number!=0)
{
if(head==NULL)
{printf("\n没有任何物品资料!\n");return(head);}

printf("-----------------------------------------\n");
printf("|编号\t|物品名\t\t|个数\t|进价\t|销售价\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)

{p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->wpgs,p1->wpjj,p1->wpxsj);
printf("-----------------------------------------\n");}/*打印表格域*/
else
printf("%d不存在此物品!\n",number);

printf("输入要查询的物品的编号,");
scanf("%d",&number);
}
printf("已经退出了!\n");
return(head);}


/*==============================================================================================*/
/*==============================================================================================*/
void print2311(score *head)
/*函数print2311,功能:显示物品资料*/
{
score *p;
if(head==NULL)
{printf("\n没有任何物品资料!\n");}
else
{printf("%d\n",n);
printf("-----------------------------------------\n");
printf("|编号\t|物品名\t|个数\t|进价\t|销售价\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
p=head;
do
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->wpgs,p->wpjj,p->wpxsj);
printf("-----------------------------------------\n");/*打印表格域*/
p=p->next;}while (p!=NULL);/*打印完成了*/
}
}
/*==============================================================================================*/
/*==============================================================================================*/

score *taxis2311(score *head)
/*定义排序函数。此函数带回一个指向链表头的指针*/
{ score *p,*max;
int i,j,x;
float fen;
char t[10];
if(head==NULL)
{printf("\n没有任何物品资料,请先建立链表!\n");return(head);}/*链表为空*/
max=p=head;

for(i=0;i<80;i++)
printf("*");
printf("1按物品编号排序\t0返回\n");
for(i=0;i<80;i++)
printf("*");

printf("请选择操作:");
scanf("%d",&x);/*选择操作*/
getchar();

switch(x) /*用switch语句实现功能选择*/
{case 1 :
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;

if(max->number>p->number)
{
k=max->number;
max->number=p->number;
p->number=k;
/*交换前后结点中的编号值,使得编号大者移到后面的结点中*/

strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
/*交换前后结点中的物品名,使之与编号相匹配*/
fen=max->wpgs;
max->wpgs=p->wpgs;
p->wpgs=fen;
/*交换前后结点中的物品个数,使之与编号相匹配*/

fen=max->wpjj;
max->wpjj=p->wpjj;
p->wpjj=fen;
/*交换前后结点中的物品进价,使之与编号相匹配*/

fen=max->wpxsj;
max->wpxsj=p->wpxsj;
p->wpxsj=fen;
/*交换前后结点中的物品销售价,使之与编号相匹配*/
}

}
max=head;p=head;/*重新使max,p指向链表头*/
}
print2311(head);break;/*打印值排序后的链表内容*/
}
return (0);}

/*==============================================================================================*/
/*==============================================================================================*/
int menu2311(int k)/*函数menu2311,功能:菜单选择界面*/
{
int i;
printf("\t\t\tThe supplies management system\n");
for(i=0;i<80;i++)
printf("*");
printf("(1)Search the product\n(2)Increase the product\n(3)Show the product\n(4)Carry on lining up the preface to the data\n(0)Exit\n");
/*菜单选择界面*/
for(i=0;i<80;i++)
printf("*");
printf("Welcome into the supplies management system,Please choose the operation that you want(Choice(0)Exit):");
scanf("%d",&k);/*选择操作*/
getchar();

return (k);}

/*==============================================================================================*/
/*==============================================================================================*/
void main() /*主函数main,功能:通过调用creat,search,del,add,print,ststistics,save,taxis等函数,实现物资管理系统功能*/
{score *head=0,*stu=0;

while(1)
{k=menu2311(k);
switch(k)/*用switch语句实现功能选择*/
{
case 1: head=search2311(head);break;/*调用物品资料查询函数*/
case 2: head=add2311(head,stu);break;/*调用追加物品资料函数*/
case 3: print2311(head); break;/*调用显示物品资料函数*/
case 4: taxis2311(head);break;/*调用排序函数*/
case 0: exit(0);/*退出系统,返回主界面*/
default: printf("输入错误,请重试!\n"); }
}
}

2007-07-13 21:09
wjllsk
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-6-29
收藏
得分:0 
点点滴滴谢谢你了
2007-07-13 21:10
sunlinlin020
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-11
收藏
得分:0 
回复:(wjllsk)可以的,我这几天没上网,刚看到,现...
有没有整个完整的,程序设计模块,或是流程图 什么的 我们要的比较详细

2007-07-16 12:55
快速回复:C语言课程设计——物资管理系统 急件,谢谢大家
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029225 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved