導航:首頁 > 數據處理 > 怎麼設計拍賣系統數據結構

怎麼設計拍賣系統數據結構

發布時間:2022-11-21 03:08:59

⑴ 設計一個有序順序表 數據結構(java)

package array;

class OrderArray{
private long[] a;
private int nElems;

public OrderArray(int maxSize){
a = new long[maxSize];
nElems = 0;
}

public void insert(long value){
int pos = 0;
for(pos=0;pos<nElems;pos++){
if(a[pos]>value){
break;
}
}
for(int i=nElems;i>pos;i--){
a[i] = a[i-1];
}
a[pos] = value;
nElems++;
}

public boolean delete(long value){
int pos = find(value);
if(pos!=-1){
for(int i=pos;i<nElems;i++){
a[i] = a[i+1];
}
nElems --;
return true;
}
return false;
}

public int find(long keySearch){
int lowerBound = 0;
int upperBound = nElems-1;
int curIn = 0;
while(true){
curIn = (lowerBound+upperBound)/2;
if(a[curIn]==keySearch){
return curIn;
}else if(lowerBound>upperBound){
return -1;
}else{
if(a[curIn]>keySearch){
upperBound = curIn -1;
}else{
lowerBound = curIn +1;
}
}
}
}

public void display(){
for(int i=0;i<nElems;i++){
System.out.println(a[i]);
}
}
}

public class OrderArrayApp {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int maxSize = 100;
OrderArray orderArray = new OrderArray(maxSize);
orderArray.insert(1);
orderArray.insert(7);
orderArray.insert(9);
orderArray.insert(8);
orderArray.insert(6);
orderArray.insert(4);
orderArray.display();
orderArray.delete(8);
orderArray.display();
}

}

⑵ 用C語言編寫一個通訊錄系統,集合數據結構雙向鏈表知識

//類似//#include "stdafx.h"
#include<iostream.h>
#include<string.h>

#include<iomanip.h>
class stu
{
char name[20];
double age,homephone,telphone;
char sex;
public:
stu(){}
stu(char n[20],char se,double ag,double ho,double te)
{
strcpy(name, n);
age=ag;
homephone=ho;
telphone=te;
}
friend void main();
}; void main()
{
cout<<"請選擇您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)通訊錄錄入"<<endl;
cout<<"(1)增加人員"<<endl;
cout<<"(2)刪除人員"<<endl;
cout<<"(3)修改數據"<<endl;
cout<<"(4)顯示記錄"<<endl;
cout<<"(5)退出"<<endl;
cout<<"選擇相關操作請輸入相對的括弧里的阿拉伯數字!"<<endl;
stu *s[50];
int i=0;
int j=0;
bool flag2=0;
char p;
do
{
cin>>p;
if((p>='0'&&p<='5'))
flag2=1;
else
cout<<"指令錯誤!請重新輸入:"<<endl;
}while(flag2==0); switch(p)
{ case '0': //(0)通訊錄錄入
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{ cout<<"請輸入姓名:"<<endl;
cin>>name;
cout<<"請輸入性別:"<<endl;
cin>>sex;
cout<<"請輸入年齡:"<<endl;
cin>>age;
cout<<"請輸入家裡的電話號碼:"<<endl;
cin>>homephone;
cout<<"請輸入行動電話號碼:"<<endl;
cin>>telphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; }
////////////////////////////////////////////////////////////////////
case '1': //(1)增加人員(Add)
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{ cout<<"請輸入姓名:"<<endl;
cin>>name;
cout<<"請輸入性別:"<<endl;
cin>>sex;
cout<<"請輸入年齡:"<<endl;
cin>>age;
cout<<"請輸入家裡的電話號碼:"<<endl;
cin>>homephone;
cout<<"請輸入行動電話號碼:"<<endl;
cin>>telphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; } case '2': //(2)刪除人員(Delete)
{
char name[20];bool flag3=0;char c;
do{
cout<<"請輸入您要刪除的學生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求刪除的對象本來就不存在!請檢查輸入的正確性!";
cout<<"要繼續刪除嗎?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}while(c=='y');
break; }
case '3': //(3)修改數據(Alter)
{
char name[20],se;double ag,ho,te;flag2=0;
char c;
do
{
cout<<"請輸入您要修改的學生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"請輸入性別:"<<endl;
cin>>se;
cout<<"請輸入年齡:"<<endl;
cin>>ag;
cout<<"請輸入家裡的電話號碼:"<<endl;
cin>>ho;
cout<<"請輸入行動電話號碼:"<<endl;
cin>>te;
s[h]->sex=se;
s[h]->age=ag;
s[h]->homephone=ho;
s[h]->telphone=te;
cout<<"數據修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的學生本來就不存在!請檢查重新輸入!"<<endl;
}
cout<<"想繼續修改嗎(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}while(c=='y');
break; }
case '4': //(4)顯示記錄(List)
{
cout<<"本系統所有通訊錄的數據如下:"<<endl;
if(i==0)
cout<<"管理系統中沒有錄入數據或者數據已經被刪除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"性別:"<<" "<<s[k]->sex<<"年齡:"<<" "<<s[k]->age
<<"家裡的電話號碼:"<<" "<<s[k]->homephone<<"行動電話號碼:"
<<" "<<s[k]->telphone<<endl;
}
break; } }
cout<<"您想繼續進行其他操作嗎?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>p;
if(p!='y'&&p!='n')
cout<<"指令錯誤!請重新輸入!"<<endl;
else
flag4=1;
}while(flag4==0); if(p=='y')
cout<<"請輸入操作代碼(0 通訊錄錄入\n1 增加人員(Add)\n2 刪除人員(Delete)\n3 修改數據(Alter)\n4 顯示記錄(List)\n 5 退出(Exit))"<<endl;
cin>>p;
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"刪除所有成員!"<<endl;
} }

⑶ 圖書管理系統採用鏈表數據結構實現。

確信是用鏈表而不是關系資料庫(及SQL)來實現?

這可以做一個畢業設計項目了。

⑷ 數據結構設計思路

這個很好辦啊,你可以在加個存放店名的表啊,店名表裡面有一個主鍵和各個店的店名,在你的原表上加一項「商品所在店」欄位。把店名表的主鍵放到這個欄位裡面。以後你只要修改這個欄位的內容就好了。哪怕你移動了n家店。也不存在任何問題啊。
我的意思就是你用個表結合就好。
select 主鍵
form 店名表
where 商品所在店=要移動的店名
搜索出來的數據放到你第一張表加的「商品所在店」欄位
就好了。哪怕你移動一萬家店也不會有問題啊,只要你在店名表裡面加店名就好了。明白了嗎。

⑸ 要命的數據結構課程設計題目啊!!!

//圖的遍歷
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>

int const MAXQSIZE=20;

int const MAX_VERTEX_NUM=20;
int const ERROR=-1;
int const OK=1;
typedef char VexType;

typedef struct ArcNode
{
int adjvex; //該弧所指向的頂點的位置
struct ArcNode *nextarc; //指向下一個弧的指針
int weight; //權值
}ArcNode;

typedef struct VNode
{
VexType data; //頂點信息
ArcNode *firstarc; //指向第一個依附頂點的弧的指針
}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct ALGraph
{
AdjList vertices;
int vexnum,arcnum; //圖的當前頂點數和弧數
int kind; //圖的種類標志
}ALGraph;

int InitALGraph(ALGraph &G); //建造一個空圖
int LocateVex(ALGraph G,VexType v); //找到圖中節點v中的位置
int Build_AdjList(ALGraph &G); //輸入有向圖的頂點數,邊數,頂點信息和邊的信息建立鄰接表

int InitALGraph(ALGraph &G) //建造一個空的圖
{
G.arcnum=G.vexnum=0;
for(int i=0;i<MAX_VERTEX_NUM;i++)
{
G.vertices[i].data=0;
G.vertices[i].firstarc=NULL;
}
return 0;
}

int LocateVex(ALGraph G,VexType v) //找到G中v定點在圖中的位置
{
for(int i=0;i<MAX_VERTEX_NUM;i++)
{
if(G.vertices[i].data==v)
return i;
}
return -1;
}

int Build_AdjList(ALGraph &G) //輸入有向圖的頂點數,邊數,頂點信息和邊的信息建立鄰接表
{
InitALGraph(G);
int v,a,m,i,j; //v表示有向圖的定點數,a表示邊數;
char t,h,ch; //t代表弧頭,h代表弧尾
ArcNode *p,*q;
cout<<"輸入節點數:";
cin>>v;
if(v<0) return ERROR; //頂點數不能為負
G.vexnum=v;
cout<<"輸入邊數:";
cin>>a;
if(a<0) return ERROR; //邊數不能為負
G.arcnum=a;
cout<<"輸入各個定點:";
for(m=0;m<v;m++)
{
cin>>ch;
G.vertices[m].data=ch; //輸入各頂點的符號
}
cout<<"輸入各個邊的弧頭和弧尾:";
for(m=1;m<=a;m++)
{
cin>>t;cin>>h; //t為弧尾,h為弧頭
if((i=LocateVex(G,t))<0) return ERROR;
if((j=LocateVex(G,h))<0) return ERROR; //頂點未找到
p=(ArcNode*)malloc(sizeof(ArcNode)); //創建新的節點,並將其賦值
p->adjvex=j;
p->nextarc=NULL;
if(!G.vertices[i].firstarc) //創建鏈表
G.vertices[i].firstarc=p;
else
{
for(q=G.vertices[i].firstarc;q->nextarc;q=q->nextarc);
q->nextarc=p;
}
}//while
return OK;
}//Build_AdjList

bool Visited[MAX_VERTEX_NUM]; //訪問標志數組

int FirstAdjVex(ALGraph G,int v) //返回第一個鄰接頂點
{
if(G.vertices[v].firstarc)
return G.vertices[v].firstarc->adjvex;
else return ERROR;
}

int NextAdjVex(ALGraph G,int v,int w) //返回W後的鄰接頂點
{
ArcNode *q;
for(q=G.vertices[v].firstarc;q->nextarc;q=q->nextarc)
if(q->adjvex==w)
return q->nextarc->adjvex;
return ERROR;

}

void DFS(ALGraph G,int v) //DFS演算法,深度優先搜索
{
int w;
Visited[v]=true;
cout<<G.vertices[v].data;
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
if(!Visited[w])
DFS(G,w);
}

void DFSTraverse(ALGraph G) //深度優先搜索圖G
{
int v;
for(v=0;v<G.vexnum;++v)
Visited[v]=false;
for(v=0;v<G.vexnum;++v)
if(!Visited[v])
DFS(G,v);
}

typedef struct
{
int *base; //初始化動態分配存儲空間
int front; //頭指針,若隊列不空,只想隊列頭元素
int rear; //尾指針,若隊列不空,只想隊列尾元素的下一個位置
}SqQueue;

int InitQueue(SqQueue &Q)
{
//構造一個空隊列
Q.base=(int *)malloc(MAXQSIZE*sizeof(int));
if(!Q.base)exit(-1);
Q.front=Q.rear=0;
return OK;
}

int QueueLenth(SqQueue Q)
{
//返回Q的元素個數。即隊列的長度
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}

int EnQueue(SqQueue &Q,int e)
{
//插入元素e為Q的新的隊尾元素
if((Q.rear+1)%MAXQSIZE==Q.front)
return ERROR;//隊列已滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}

int DeQueue(SqQueue &Q,int &e)
{
//若隊列不空,則刪除Q的對頭元素。用e返回其值。
//否則返回ERROR
if(Q.front==Q.rear)return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}

int Empty(SqQueue Q)
{
//判斷是否為空
return Q.rear-Q.front;
}

void BFSTraverse(ALGraph G)
{
//廣度優先遍歷
int w,v,u;
for(v=0;v<G.vexnum;v++)
Visited[v]=false;
SqQueue Q;
InitQueue(Q);
for(v=0;v<G.vexnum;v++)
{
if(Visited[v]==false)
{
EnQueue(Q,v);
Visited[v]=true;
cout<<G.vertices[v].data;
while(Empty(Q))
{
DeQueue(Q,u);
for(w=FirstAdjVex(G,u);w>=0;w=NextAdjVex(G,u,w))
{
if(!Visited[w])
{
Visited[w]=true;
cout<<G.vertices[w].data;
EnQueue(Q,w);
}
}
}
}
}
}

int main()
{
ALGraph G;
Build_AdjList(G);
cout<<"深度優先遍歷:"<<endl;
DFSTraverse(G);
cout<<"廣度優先遍歷:"<<endl;
BFSTraverse(G);
return OK;
}

⑹ 概要說明書裡面的 數據結構與程序的關系 怎麼寫

只有模板,看能不能用

概要設計說明書
1引言
1.1編寫目的
說明編寫這份概要設計說明書的目的,指出預期的讀者。
1.2背景
說明:
a. 待開發軟體系統的名稱;
b. 列出此項目的任務提出者、開發者、用戶以及將運行該軟體的計算站(中心)。
1.3定義
列出本文件中用到的專門術語的定義和外文首字母組詞的原片語。
1.4參考資料
列出有關的參考文件,如:
a. 本項目的經核準的計劃任務書或合同,上級機關的批文;
b. 屬於本項目的其他已發表文件;
c. 本文件中各處引用的文件、資料,包括所要用到的軟體開發標准。列出這些文件的標題、文件編號、發表日期和出版單位,說明能夠得到這些文件資料的來源。
2總體設計
2.1需求規定
說明對本系統的主要的輸入輸出項目、處理的功能性能要求,詳細的說明可參見附錄C。
2.2運行環境
簡要地說明對本系統的運行環境(包括硬體環境和支持環境)的規定,詳細說明參見附錄C。
2.3基本設計概念和處理流程
說明本系統的基本設計概念和處理流程,盡量使用圖表的形式。
2.4結構
用一覽表及框圖的形式說明本系統的系統元素(各層模塊、子程序、公用程序等)的劃分,扼要說明每個系統元素的標識符和功能,分層次地給出各元素之間的控制與被控制關系.
2.5功能器求與程序的關系
本條用一張如下的矩陣圖說明各項功能需求的實現同各塊程序的分配關系:
程序1 程序2 …… 程序n
功能需求1 √
功能需求2 √
……
功能需求n √ √
2.6人工處理過程
說明在本軟體系統的工作過程中不得不包含的人工處理過程(如果有的話)。
2.7尚未問決的問題
說明在概要設計過程中尚未解決而設計者認為在系統完成之前必須解決的各個問題。
3介面設計
3.1用戶介面
說明將向用戶提供的命令和它們的語法結構,以及軟體的回答信息。
3.2外部介面
說明本系統同外界的所有介面的安排包括軟體與硬體之間的介面、本系統與各支持軟體之間的介面關系。
3.3內部介面
說明本系統之內的各個系統元素之間的介面的安排。
4運行設計
4.1運行模塊組合
說明對系統施加不同的外界運行控制時所引起的各種不同的運行模塊組合,說明每種運行所歷經的內部模塊和支持軟體。
4.2運行控制
說明每一種外界的運行控制的方式方法和操作步驟。
4.3運行時間
說明每種運行模塊組合將佔用各種資源的時間。
5系統數據結構設計
5.1邏輯結構設計要點
給出本系統內所使用的每個數據結構的名稱、標識符以及它們之中每個數據項、記錄、文卷和系的標識、定義、長度及它們之間的層次的或表格的相互關系。
5.2物理結構設計要點
給出本系統內所使用的每個數據結構中的每個數據項的存儲要求,訪問方法、存取單位、存取的物理關系(索引、設備、存儲區域)、設計考慮和保密條件。
5.3數據結構與程序的關系
說明各個數據結構與訪問這些數據結構的形式:
6系統出錯處理設計
6.1出錯信息
用一覽表的方式說朗每種可能的出錯或故障情況出現時,系統輸出信息的形式、含意及處理方法。
6.2補救措施
說明故障出現後可能採取的變通措施,包括:
a. 後備技術說明准備採用的後備技術,當原始系統數據萬一丟失時啟用的副本的建立和啟動的技術,例如周期性地把磁碟信息記錄到磁帶上去就是對於磁碟媒體的一種後備技術;
b. 降效技術說明准備採用的後備技術,使用另一個效率稍低的系統或方法來求得所需結果的某些部分,例如一個自動系統的降效技術可以是手工操作和數據的人工記錄;
c. 恢復及再啟動技術說明將使用的恢復再啟動技術,使軟體從故障點恢復執行或使軟體從頭開始重新運行的方法。
6.3系統維護設計
說明為了系統維護的方便而在程序內部設計中作出的安排,包括在程序中專門安排用於系統的檢查與維護的檢測點和專用模塊。 各個程序之間的對應關系,可採用如下的矩陣圖的形式;

⑺ 如何才能選擇一個好的數據結構進行程序設計

數據的邏輯結構、存儲結構和操作(特別是基本操作)的實現這三者是密切相關的。一般地,在選擇(或設計)數據結構時應該完成以下三步:
⑴ 確定表示問題所需的數據及其特性;
⑵ 確定必須支持的基本操作,並度量每種操作所受的時、空資源限制;
⑶ 選擇(或設計)最接近這些開銷的數據結構。

⑻ C語言課設數據結構設計及用法說明怎麼寫

數據結構設計及用法說明就是給出你所設計的數據結構以及怎麼使用。
你要給出數據結構的定義:包含是類型,注釋等信息。例如
struct
student{
string
name;//學生姓名
int
age;//學生年齡
int
grade;//學生所在年級
int
class;//學生所在班級
}
然後如果是函數的話,就給出參數的含義,以及這個函數實現的功能,例如
int
sum(int
a,int
b)//返回值int型,對參數a和參數b進行求和運算
{
......
}
簡單的說就是為了使你寫的東西讓其他人也能使用,能理解你的思想。

⑼ 數據結構-課程設計:二叉排序樹的實現

暈了,真是好糾結,我在寫完下面的代碼後,才在網上找了找,居然發現和你的題目完全一樣的代碼,算了,我就直接發在網上找到的文檔和代碼給你吧,可憐我寫了這么久代碼呀。。。。。已發,請注意查收。

代碼寫好了。
VC下經測試通過。
不過如果你還要論文之類的或者設計文檔,我也比較難幫到你了。

#include <iostream>
using namespace std;

class node
{
public:
node(int i):data(i),left(NULL),right(NULL){}
void inorder(node *&root) //中序遍歷,符合升序輸出
{
if(root!=NULL)
{
inorder(root->left);
cout<<root->data<<' ';
inorder(root->right);
}
}
void insert(node *&ptr,int item) //在查找樹中插入元素
{
if(ptr==NULL)
ptr=new node(item);
else if(item<ptr->data)
insert(ptr->left,item);
else insert(ptr->right,item);
}
node *find(node *&ptr,int item) //在查找樹中查找元素,找到返回所在結點指針,找不到返回空指針。
{
if(ptr==NULL)
return NULL;
if(ptr->data==item)
return ptr;
else if(item<ptr->data)
find(ptr->left,item);
else find(ptr->right,item);
}
node *&findy(node *&ptr,int item) //在查找樹中查找肯定存在的元素,並返回其引用
{
if(ptr->data==item)
return ptr;
else if(item<ptr->data)
findy(ptr->left,item);
else findy(ptr->right,item);
}
node* rl(){return left;}
node* rr(){return right;}
void dele(node *&ptr) //刪除值為item所在結點
{
if(ptr->rl()==NULL&&ptr->rr()==NULL)
ptr=NULL;
else if(ptr->rr()==NULL)
ptr=ptr->rl();
else
ptr=ptr->rr();
}
private:
int data;
node *left; //左孩子結點
node *right; //右孩子結點
};

int main()
{
int t,i=0,j;
cout<<"輸入數字個數(結點個數):";
cin>>t;
cout<<"輸入"<<t<<"個數字,數字之間用空格隔開:";
cin>>j;
node *x=new node(j);
for(;i<t-1;i++)
{
cin>>j;
x->insert(x,j);
}
cout<<"中序遍歷為:";
x->inorder(x); //作中序遍歷
cout<<"\n輸入操作(當輸入-1時程序結束):"<<endl;
cin>>j;
while(j!=-1)
{

node *t=x->find(x,j); //定位結點
if(t!=NULL)
{
node *&y=x->findy(x,j);
x->dele(y);
cout<<"中序遍歷為:";
x->inorder(x);
}
else cout<<"無"<<j;
cout<<"\n輸入操作(當輸入-1時程序結束):"<<endl;
cin>>j;
}
return 0;
}

附測試數據一組
8
22 33 1 50 88 99 77 55
33
50
51
55
-1
有什麼不明的話可以M我或者留言我。

⑽ 數據結構課程設計 簡單目錄管理系統的設計與實現

給點勞務費唄。保質量完成。

閱讀全文

與怎麼設計拍賣系統數據結構相關的資料

熱點內容
工廠技術員考核表怎麼寫 瀏覽:353
程序員和架構師哪個好 瀏覽:589
代理的價格表叫什麼 瀏覽:515
蝦皮用erp系統如何上傳產品 瀏覽:312
ok交易所怎麼關閉郵件成交消息 瀏覽:780
貓糧批發市場怎麼樣 瀏覽:883
如何選出多個不同數據 瀏覽:385
物流數據採集平台有哪些 瀏覽:228
iphone如何清掉數據 瀏覽:8
奇特農產品有哪些過人之處 瀏覽:242
期貨交易機會是什麼 瀏覽:669
通過命令行調用的程序怎麼調試 瀏覽:157
養鴿子的技術教學鴿子如何分公母 瀏覽:422
如何在火山直播上推廣產品 瀏覽:526
生魚片市場在哪裡 瀏覽:126
老的程序怎麼學 瀏覽:949
貢小美如何選擇私護產品 瀏覽:600
委託代理什麼概念 瀏覽:672
有了美食和技術還需要什麼 瀏覽:518
豐田有什麼技術優點 瀏覽:361