一个C++小程序任务

设计实现一个简单的产品管理系统目的和要求(1)目的通过产品管理系统的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高... 设计实现一个简单的产品管理系统
目的和要求
(1) 目的
通过产品管理系统的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。
(2) 基本要求
合理运用C++语言的数组、指针、结构体及文件操作等,实现一个模拟的班级学籍管理系统。该系统用于管理产品的基本信息及信息统计。具体要求如下:
① 通过键盘或读取文件的方法读取产品的信息,对各类产品进行统计和分析。
② 要求使用结构数组和结构指针,各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.c文件中,要求使用头文件。
③ 要求使用选择法排序,折半查找法进行查找。
④ 要求在程序中能够运用结构化程序设计的选择和循环结构,并熟练使用相关的语句(如do while、for、if-elseif等)。
⑤创新要求。在基本要求达到后,进行创新设计,如进行删除或插入操作。

提示及说明
写出设计报告:包括实验题目与环境、设计思想、函数分解过程、算法描述以及相应的数据流程图、源程序清单、测试的数据以及程序运行的结果
我要完整版的啊~~~要我改估计也要个10天半个月........
展开
 我来答
程序小兵
2009-06-06 · TA获得超过710个赞
知道小有建树答主
回答量:530
采纳率:0%
帮助的人:177万
展开全部
不小的程序!哈哈!!!

给你个的吧!!


#include "stdio.h"
#define STACKSIZE 2
struct Car
{
char Label;
float InTime;
};
struct StackCar
{
struct Car *Top;
struct Car *BottomStack;
int Size;
};
int StackInitial(struct StackCar *stackcar)
{
stackcar->BottomStack=(struct Car *)malloc(STACKSIZE*sizeof(struct Car));
if(!(stackcar->BottomStack))
return 0;
stackcar->Top=stackcar->BottomStack;
stackcar->Size=STACKSIZE;
return 1;
}
int StackEmpty(struct StackCar stackcar)
{
if(stackcar.Top==stackcar.BottomStack)
return 1;
return 0;
}
int StackFull(struct StackCar stackcar)
{
if(stackcar.Top-stackcar.BottomStack>=STACKSIZE)
return 1;
return 0;
}
int Push(struct StackCar *stackcar,struct Car car)
{
if(stackcar->Top-stackcar->BottomStack>=STACKSIZE)
return 0;
*(stackcar->Top++)=car;
return 1;

}
int Pop(struct StackCar *stackcar,struct Car *car)
{
if(stackcar->Top==stackcar->BottomStack)
return 0;
*car=*(--(stackcar->Top));
return 1;
}
struct QueueCar
{
struct Car Info;
struct QueueCar *next;
};
struct LinkQueue
{
struct QueueCar * front;
struct QueueCar * rear;
};
int QueueInitial(struct LinkQueue *Q)
{

Q->front=Q->rear=(struct QueueCar *)malloc(sizeof(struct QueueCar));
if(!(Q->front))
return 0;
Q->front->next=0;
return 1;
}
int QueueEnter(struct LinkQueue *Queue,struct Car car)
{
struct QueueCar *p;
p=(struct QueueCar *)malloc(sizeof(struct QueueCar));
if(!p)
return 0;
p->Info=car;
p->next=0;
Queue->rear->next=p;
Queue->rear=p;
return 1;
}
int QueueEmpty(struct LinkQueue Queue)
{
if(Queue.front==Queue.rear)
return 1;
return 0;
}
int QueueDelete(struct LinkQueue *Queue,struct Car *car)
{
struct QueueCar * p;
if(Queue->front==Queue->rear)
return 0;
p=Queue->front->next;
*car=p->Info;
Queue->front->next=p->next;
if(Queue->rear==p)
Queue->rear=Queue->front;
free(p);
return 1;
}
int main()
{
int i,label;
char ch;
float intime;
struct Car carin,carout;
struct StackCar S;
struct LinkQueue Q;
StackInitial(&S);
QueueInitial(&Q);
clrscr();
printf("**************************************\n");
printf("| Please Input : |\n");
printf("| i : a car comes in. |\n");
printf("| o : a car comes out. |\n");
printf("| q : query the status. |\n");
printf("**************************************\n");
while(1)
{
switch(getch())
{
case 'i':
printf("Please input the car lable:");
scanf("%d",&label);
carin.Label=label;
printf("Please input the car intime:");
scanf("%f",&intime);
carin.InTime=intime;
if(!StackFull(S))
{
Push(&S,carin);
printf("The %dth car comes in the garage\n",carin.Label);
}
else
{
QueueEnter(&Q,carin);
printf("The %dth car comes in the queue to wait\n",carin.Label);
}
break;
case 'o':
if(!StackEmpty(S))
{
Pop(&S,&carout);
printf("The %dth car comes out\n",carout.Label);
if(!QueueEmpty(Q))
{
QueueDelete(&Q,&carout);
Push(&S,carout);
}
}
else
printf("There is on car!");
break;
case 'q':
printf("\nThere is %d cars in the garage\n",S.Top-S.BottomStack);
printf("There is %d cars in the queue waiting\n",Q.rear-Q.front);
break;
default :
return 0;

}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式