数据结构课程设计案例教程_数据结构课程设计超市pos机
本文目录一览:
数据结构pos是什么
定位定姿系统
POS系统即销售盯扒时点信息系统,是指通差银过自动读取设备(如收银机)在销售商品时直接读取商品销售信息(如商品名、单价、销售数量、销售时间、销售店铺、购买顾客等),并通过通讯网络和计算机系统传送至有关部门进凯庆昌行分析加工以提高经营效率的卐系统。
POS系统最早应用于零售业,以后逐渐扩展至其他如金融、旅馆等服务行业,利用POS系统的范围也从企业内部扩展到整个供应链。
[img]关于数据结构的课程设计
#include?"stdio.h"
#define?MAX?30000
/*?函数声明区?*/
int?SequenceSearch(int?e[],?int?len,?int?key);
int?BinarySearch(int?e[],?int?len,?int?key);
void?StraightInsertSort(int?e[],?int?len);
void?QuickSort(int?e[],?int?first,?int?end);
void?MergeSort(int?e[],int?a[],int?first,int?end);
void?HeapSort(int?e[],int?len);
void?Print(int?e[],?int?len,?int?cols);
/*?全局变量区?*/
long?compare; /*?比较次数?*/
long?move; /*?移动次数?*/
void?main()
{
int?i;
int?n;
int?table[MAX],?table1[MAX];
int?key;
int?pos;
int?choice;
int?cols?=?10;
system("cls");
printf("***********************************************************\n");
printf("INITIALIZE?TABLE\n");
printf("n?=?");
scanf("%d",?n);
srand(time(NULL));
for(i=0;?袜氏袜in;?i++)
{
table[i]?=?rand();
table1[i]?=?table[i];
}
while(1)
{
system("cls");
printf("***********************************************************\n");
printf("ORIGIN?TABLE?(%d)?:?\n",?n);
Print(table,?n,?cols);
printf("***********************************************************\n");
printf("ORDER?TABLE?(%d)??:?\n",?n);
StraightInsertSort(table1,?n);
Print(table1,?n,?cols);
????printf("***********************************************************\n");
????printf("?????????????????ALGORITH?ANALYSIS?SYSTEM??????????????????\n\n");
????printf("??????????????????1.??SEQUENCE?SEARCHING???????核洞????????????\n");
????printf("??????????????????2.??告激BINARY?SEARCHING?????????????????????\n");
????printf("??????????????????3.??STRAIGHT?INSERT?SORTING??????????????\n");
????printf("??????????????????4.??MERGE?SORTING????????????????????????\n");
????printf("??????????????????5.??HEAP?SORTING?????????????????????????\n");
????printf("??????????????????6.??QUICK?SORTING????????????????????????\n");
????printf("??????????????????0.??EXIT?SYSTEM??????????????????????????\n\n");
????printf("***********************************************************\n\n");
????printf("?????YOUR?CHOICE?:?");
????scanf("%d",?choice);
????switch(choice)
????{
???? case?0:
???? return;
???? case?1:
???? { ????
???? /***********************************************************************/
????/*?执行顺序查找?*/
????printf("\t\tkey?=?");
scanf("%d",?key);
????compare?=?0;
????pos?=?SequenceSearch(table,?n,?key);
????printf("\t\tSequence?Searching?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????if(pos?==?-1)
????{????
???? printf("\tsearch?%d?fail.\n",?key);
???? printf("\tcompare?:?%ld?times.",?compare);
????}
????else
????{
???? printf("\tsearch?%d?success.\n",?key);
???? printf("\tcompare?:?%ld?times.",?compare);
????}
????printf("\n\n");
????/***********************************************************************/ ????
???? break;
???? }
???? case?2:
???? {
???? /***********************************************************************/
????/*?执行二◆分查找?*/
????printf("\t\tkey?=?");
scanf("%d",?key);
????compare?=?0;
????pos?=?BinarySearch(table1,?n,?key);
????printf("\t\tBinary?Searching?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????if(pos?==?-1)
????{????
???? printf("\tsearch?%d?fail.\n",?key);
???? printf("\tcompare?:?%ld?times.",?compare);
????}
????else
????{
???? printf("\tsearch?%d?success.\n",?key);
???? printf("\tcompare?:?%ld?times.",?compare);
????}
????printf("\n\n");
????/***********************************************************************/
???? break;
???? }
???? case?3:
???? {
???? /***********************************************************************/
????/*?执行直接插入排序?*/
????for(i=0;?in;?i++)
???? table1[i]?=?table[i];
????compare?=?move?=?0;
????StraightInsertSort(table1,?n);
????printf("\t\tStraight?Insert?Sorting?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????printf("\tcompare?:?%ld?times.\n",?compare);
????printf("\tmove????:?%ld?times.\n\n",?move);
????/***********************************************************************/
???? break;
???? }
???? case?4:
???? {
???? /***********************************************************************/
????/*?执行归并排序?*/
????for(i=0;?in;?i++)
???? table1[i]?=?table[i];
????compare?=?move?=?0;
????MergeSort(table1,?table,?0,?n-1);
????printf("\t\tMerge?Sorting?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????printf("\tcompare?:?%ld?times.\n",?compare);
????printf("\tmove????:?%ld?times.\n\n",?move);
????/***********************************************************************/
???? break;
???? }
???? case?5:
???? {
???? /***********************************************************************/
????/*?执〗行堆排序?*/
????for(i=0;?in;?i++)
???? table1[i]?=?table[i];
????compare?=?move?=?0;
????HeapSort(table1,?n);
????printf("\t\tHeap?Sorting?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????printf("\tcompare?:?%ld?times.\n",?compare);
????printf("\tmove????:?%ld?times.\n\n",?move);
????/***********************************************************************/
???? break;
???? }
???? case?6:
???? {
???? /***********************************************************************/
????/*?执行快速排序?*/
????for(i=0;?in;?i++)
???? table1[i]?=?table[i];
????compare?=?move?=?0;
????QuickSort(table1,?0,?n-1);
????printf("\t\tQuick?Sorting?\n");
????printf("----------------------------------------\n");
????printf("Analysis?details?:?\n");
????printf("\tcompare?:?%ld?times.\n",?compare);
????printf("\tmove????:?%ld?times.\n\n",?move);
????/***********************************************************************/
???? break;
???? }
???? default:
???? break;
????}/*?end?of?switch*/
????system("pause");
????getch();
}
}
/*??顺?序?查?找??*/
int?SequenceSearch(int?e[],?int?len,?int?key)
{
int?i;
for(i=0;?ilen?;?i++)
if(++compare??e[i]==key)
return?i;
++compare;
return?-1;
}
/*??二?分?查?找??*/
int?BinarySearch(int?e[],?int?len,?int?key)
{
int?high,low,mid;
high=len-1;
low=0;
while(low=high)
{
mid=(low+high)/2;
++compare;
if(key==e[mid])
return mid;
else?if(keye[mid])
low=mid+1;
else
high=mid-1;
}
++compare;
return??-1;
}
/*????直?接?插?入?排?序????*/
void?StraightInsertSort(int?e[],?int?len)
{
int?i,j,temp;
for(i=1;?ilen;?i++)
{
temp=e[i];
++move;
for(j=i-1;?j=0;?j--)
{
if(++compare??e[j]??temp)
{
e[j+1]=e[j];
++move;
}
else
break;
}
e[j+1]=temp;
++move;
}
}
/*????快??速??排??序????*/
void?QuickSort(int?e[],?int?first,?int?end)
{
int?i=first,j=end,temp=e[first];
while(ij)
{
while(++compare??ij??e[j]=temp)
j--;
e[i]=e[j];
++move;
while(++compare??ij??e[i]=temp)
i++;
e[j]=e[i];
++move;
}
e[i]=temp;
if(firsti-1)
QuickSort(e,first,i-1);
if(endi+1)
QuickSort(e,i+1,end);
}
/*????归??并??排??序????*/
void?MergeSort(int?e[],int?a[],int?first,int?end)
{
void?Merge(int?e[],int?a[],int?first,int?m,int?end);
int?m;
int?bak[MAX];
if(first==end)
a[first]=e[first];
else
{
m=(first+end)/2;
MergeSort(e,bak,first,m);
MergeSort(e,bak,m+1,end);
Merge(bak,a,first,m,end);
}
for(m=0;m=end;m++)
e[m]=a[m];
}
void?Merge(int?e[],int?a[],int?first,int?m,int?end)
{
int?i=first,j=m+1,k=first;
while(i=m??j=end)
{
++compare;
++move;
if(e[i]=e[j])
a[k++]=e[i++];
else
a[k++]=e[j++];
}
while(i=m??++move)
a[k++]=e[i++];
while(j=end??++move)
a[k++]=e[j++];
}
/*????堆???排???序?????*/
void?HeapSort(int?e[],int?len)
{
void?sift(int?e[],int?l,int?m);
int?i,temp;
for(i=len/2-1;i=0;i--)
sift(e,i,len);
for(i=len-1;i=1;i--)
{
move?+=?2;
temp=e[i];
e[i]=e[0];
e[0]=temp;
sift(e,0,i-1);
}
}
void?sift(int?e[],int?l,int?m)
{
int?i,j,x;
i=l;
j=2*i+1;
x=e[i];
while(j=m)
{
if(jm??++compare??e[j]e[j+1])
j++;
if(++compare??xe[j])
{
++move;
e[i]=e[j];
i=j;
j=2*i+1;
}
else j=m+1;
}
e[i]=x;
++move;
}
void?Print(int?e[],?int?len,?int?cols)
{
int?i;
for(i=1;?i=len;?i++)
{
printf("%6d",?e[i-1]);
if(i%cols?==?0)
printf("\n");
}
printf("\n");
}
运行测试:
怎么写数据结构报告啊,下面是我所要的要求
晕/////真麻烦。。。。。
数据结构实习报告规范
实习报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容:
1、需求分析
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:包括正确地输入及其输出结果和含有错误的输入※及其输出结果薯野段。
2、概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3、详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
4、调试分析
内容包括:
(1)调试过程中遇到的问题▃是如何解决的以及对设计与实现的回顾讨论和分析;
(2)算法的时空分析(包括基本操作和其他数誉算法的时间复杂度和空间复杂度的分析)和改进思想;
(3)经验和体会等。
5、用户使用说明
说明如何使用你编写的程序,详细列出每一步操作步骤。
6、测试结果
列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。
7、附录
题 目 : [数据结构] 约瑟夫-实习报告
尺 寸 : 约瑟夫-实习报告.doc
目 录 : 一、需求分析
二、概要设计
三、程序具体设计及函数调用关系
四、调试分析
五、测试结果
原 文 : 实习报告
题目:约瑟夫(Joseph)问题的一种描述是:编号为1,2,......,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个开始重新从1报数,如此下去,直至年有人全部出列为止。试设计一个程序求出出列顺序。
班级: 姓名: 学号: 完成日期:
一、需求分析
1. 本演示程序中,利用单向循环链表存储结构存储约瑟夫环数据(即n个人的编号和密码)。
2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示"提示信息"之后,由用户在键盘上输入演示程序中需要输入的数据,运算结果显示在其后。
3. 程序执行的命令包括:
1)构造单向循环链表;2)
4. 测试数据
m 的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序为6,1,4,7,2,1,3,5)。
二、概要设计
1.单向循环链表的抽象数据类型定义为:
ADT List{
数据对象:D={ai | ai∈正整数,I=1,2,......,n,n≥0}
数据关系:R1={ ai-1,ai |,ai-1,ai∈D,I=1,2,脊旁......,n}
基本操作:
Init List(L)
操作结果:构造一个空的线性表L。
List Insert(L,i,e)
初始条件:线性表L已存在,1≤i≤List Length(L)+1.
操作结果:在L中第i个位置之前插入新的数据无素e,L长度加1。
List Delete(L,i,e)
初始条件:线性表L存在非空,1≤i≤List Length(L).
操作结果:删除L的第i个元素,并用e返回其值,L长度减1。
2. 程序包含四个模块:
1)主程序模块: