文档库 最新最全的文档下载
当前位置:文档库 › 《数据结构与算法》课程设计报告

《数据结构与算法》课程设计报告

《数据结构与算法》课程设计报告
《数据结构与算法》课程设计报告

《数据结构与算法》课程设计报告

实验人:计算机科学与技术(软件开发方向)计软05-3 刘显明学号:0504030312

一、设计题目:停车场管理

二、问题描述:

设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停了n辆汽车,则后来的汽车只能在门外的通道上等候,一旦有车开走,收排在通道上的第一辆车即可开入;当停车场内每辆车要离开时,在它之后进入的车辆必须先退出停车场为其让路,待该辆车开出大门,其他车辆再按原次序进入停车场,每辆停放在停车场的车在它离开停车场时必须按它停留在停车场内的时间长短交纳停车费。试为停车场编写按上述要求进行管理的模拟程序。

三、基本要求:

以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车"到达"或"离去"信息,汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。

四、测试数据:

设n=2,输入数据:('A',1,5),('A',2,15),('D',1,15),('A',3,20),('A',4,25),('A',5,30),('D',2,35),('D',4,40),('E',0,0)。其中:'A'表示到达(arrival);'D'表示离去(departure);'E'表示输出(end)。

五、实现提示:

需要另设一个栈,临时停放为给要离去的汽车让路而从停车车退出来的汽车,也用顺序存储结构实现。输入数据按到达的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车车的时刻。

六、需求分析:

(1)以顺序栈来表示停车场,限定停车场的容量n。以链队列来表示便道。限制以实型变量money来存放停车场费率。

(2)按照从终端读入的数据序列进行模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照为整型数据。进场或离场时间同样为整型数据。(3)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

(4)该程序可以模拟停车场的管理过程。

(5)测试数据:设n=2,输入数据:('A',1,5),('A',2,15),('D',1,15),('A',3,20),('A',4,25),('A',5,30),('D',2,35),('D',4,40),('E',0,0)。其中:'A'表示到达(arrival);'D'表示离去(departure);'E'表示输出(end)。

七、概要设计:

1.设定栈的抽象数据类型定义为:

ADT stack{

数据对象:D={ai|ai∈charset,I=1,2,……,n,n>=0}

数据关系:R1={ai-1,ai∈D,I=2……,n}

基本操作:Initstack(&S)

操作结果:构造一个空栈S。

DestroyStack(&S)

初始条件:栈S已经存在。

操作结果:操作结果:销毁栈S。

ClaerStack(&S)

初始条件:栈S已经存在。

操作结果:将S清空为空栈。

StackLength(&S)

初始条件:栈S已经存在。

操作结果:返回栈S的长度。

StackEmpty(&S)

初始条件:栈S已经存在。

操作结果:若S为空栈,则返回TURE,否则返回FALSE。GetTop(S,&e)

初始条件:栈S已经存在。

操作结果:若栈S不空,则以e返回栈顶元素。

Push(&S,e)

初始条件:栈S已经存在。

操作结果:在栈S的栈顶插入新的栈顶元素e。

Pop(&S,&e)

初始条件:栈S已经存在。

操作结果:删除S的栈顶元素,并以e返回其值。StackTraverse(S,visit())

初始条件:栈S已经存在。

操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit( )。}ADT stack

2.设定链式队列的抽象数据类型为:

typedef struct Qnode{

QelemType data;

Struct Qnode *next;

}Qnode,*QueuePtr;

typedef struct{

QueuePtr front; //队头指针

QueuePtr rear; //队尾指针

ADT Queue{

数据对象:D={ai|ai∈ElemSet,i=1,2,……,n,n>=0}

数据关系:R1={|ai-1,ai∈D,i=2,……,n}

约定其中端为队列头,端为队列尾。

基本操作:

InitQueue(&Q)

操作结果:构造一个空队列Q。

DestroyQueue(&Q)

初始条件:队列Q已经存在。

操作结果:队列Q被销毁,不再存在。

ClearQueue(&Q)

初始条件:队列Q已经存在。

操作结果:将Q清为空队列。

QueueEmpty(Q)

初始条件:队列Q已经存在。

操作结果:若Q为空队列,则返回TRUE,否则FALSE。

QueueLength(Q)

初始条件:队列Q已经存在。

操作结果:返回Q的元素个数,即队列的长度。

GetHead(Q,&e)

初始条件:Q为非空队列。

操作结果:用e返回的e队头元素。

EnQueue(&Q,e)

初始条件:队列Q已经存在。

操作结果:插入元素e为Q的新的队尾元素。

DeQueue(&Q,&e)

初始条件:Q为非空队列。

操作结果:删除Q的队头元素,并用e返回其值。

QueueTraverse(Q,visit())

初始条件:Q已经存在且非空。

操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。

}ADT Queue

3.本程序有4个模块

1)主程序模块

main(){

初始化

while(命令=="1"){

接受命令;/*绘表*/

do{命令;}

while(重复条件)

if(条件){

if(条件){

接受命令;

处理命令;

for(初始值;循环条件;自加运算){

for(初始值;循环条件;自加运算)

}

else if{

接受命令;

处理命令;}

}

if(条件){

接受命令;

处理命令;

do{

命令;}

while(循环条件){

接受命令;

处理命令;}

else{

接受命令;

退出程序;

}

}

2)2个栈模块-----实现栈抽象数据类型

3)队列模块----实现队列抽象数据类型

各模块之间的调用关系:

主程序模块

栈模块队列模块

八、详细设计:

1.求停车车管理的详细算法

#include "stdio.h"

#include "alloc.h"

#include "stdlib.h"

/*#define NULL 0*/

#define ERROR 0

#define OK 1

#define OVERFLOW 0

#define STACK_INIT_SIZE 2/*车库容量*/

/*----------------------------------------------------------------------*/ typedef struct time{

int hour;

int min;

}Time; /*时间结点*/

/*----------------------------------------------------------------------*/ typedef struct/*车信息*/

{

char label;

float time;

}Car,Car2;

typedef struct/*车库信息*/

{

Car *top;

Car *base;

int stacksize;

}SqStack;

int InitStack(SqStack *S)

{

S->base=(Car *)malloc(STACK_INIT_SIZE*sizeof(Car)); if(!(S->base)) return ERROR;

S->top=S->base;

S->stacksize=STACK_INIT_SIZE;

return OK;

}

int StackEmpty(SqStack S)

{

if(S.top==S.base)

return OK;

else

return ERROR;

}

int StackFull(SqStack S)

{

if(S.top-S.base>=STACK_INIT_SIZE)

return OK;

else

return ERROR;

}

int Push(SqStack *S,Car e)

{

if(S->top-S->base>=STACK_INIT_SIZE)

return OVERFLOW;

else

{

*(S->top++)=e;

return OK;

}

}

int Pop(SqStack *S,Car *e)

{

if(S->top==S->base)

return ERROR;

*e=*(--(S->top));

}

/*----------------------------------------------------------------*/ typedef struct/*备用车道*/

{

Car2 *top2;

Car2 *base2;

int stacksize2;

}SqStack2;

int InitStack2(SqStack2 *S2)

{

S2->base2=(Car2 *)malloc(STACK_INIT_SIZE*sizeof(Car2));

if(!(S2->top2)) return ERROR;

S2->top2=S2->base2;

S2->stacksize2=STACK_INIT_SIZE;

return OK;

}

int Push2(SqStack2 *S2,Car2 e2)

{

if(S2->top2-S2->base2>=STACK_INIT_SIZE)

return OVERFLOW;

*(S2->top2++)=e2;

return OK;

}

int Pop2(SqStack2 *S2,Car2 *e2)

{

if(S2->top2==S2->base2)

exit(OVERFLOW);

*e2=*(--(S2->top2));

return OK;

}

int StackEmpty2(SqStack2 S2)

{

if(S2.top2==S2.base2)

return OK;

else

return ERROR;

}

/*--------------------------------------------------------------------*/ typedef struct QNode/*车道信息*/

{

Car data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct

{

QueuePtr front;

QueuePtr rear;

}LinkQueue;

int InitQueue(LinkQueue *Q)

{

Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); if(!(Q->front)) return ERROR;

Q->front->next=NULL;

return OK;

}

int EnQueue(LinkQueue *Q,Car e)

{

QueuePtr p;

p=(QueuePtr)malloc(sizeof(QNode));

if(!p) return ERROR;

p->data=e;

p->next=NULL;

Q->rear->next=p;

Q->rear=p;

return OK;

}

int QueueEmpty(LinkQueue Q)

{

if(Q.front==Q.rear)

return OK;

else

return ERROR;

}

int DeQueue(LinkQueue *Q,Car *e)

{

QueuePtr p;

if(Q->front==Q->rear) return ERROR;

p=Q->front->next;

*e=p->data;

Q->front->next=p->next;

if(Q->rear==p)

Q->rear=Q->front;

free(p);

return OK;

}

/*-----------------------------------------------------------------------*/ /*主函数*/

main()

{

int i,position_s=1,position_q=1;

int ch=1,status;

float time,money;

LinkQueue Q;

Car car_I,car_D,car_M;

SqStack S;

SqStack2 S2;

clrscr();

InitStack(&S);

InitStack2(&S2);

InitQueue(&Q);/*初始化*/

/*--------------------------------------------------------------------------*/ while(ch==1)

{

clrscr();

for(i=0;i<80;i++)printf("*");

printf("\n");

for(i=0;i<24;i++)

printf("-");

printf("\YAOTIANSHUNRI CAR POSITION\t");

for(i=0;i<24;i++)

printf("-");

printf("\n\t\t\t");

for(i=0;i<10;i++)

printf("-");

printf("Information:");

for(i=0;i<10;i++)

printf("-");

printf("\n\n");

do

{

printf("\n\t\t\t1-arrival 2-departure 0-exit 2/1/0 ?\b");

scanf("%d",&status);

}while(status!=1&&status!=2&&status!=0);

if(status==1)/*当车到达*/

{

printf("\n\t\t\tCar Number :");

scanf("%d",&car_https://www.wendangku.net/doc/6e4912849.html,bel);

printf("\n\t\t\tTime : ?\b");

scanf("%f",&(car_I.time));

if(!StackFull(S))

{

Push(&S,car_I);

printf("\n\n");

for(i=0;i<80;i++)

printf("-");

printf("\n");

printf("\tCAR NUMBER :");

printf(" %d",car_https://www.wendangku.net/doc/6e4912849.html,bel);

printf("\tARRIVE TIME :");

printf(" %5.2f",car_I.time);

printf("\n\n");

for(i=0;i<80;i++)

printf("-");

printf("\n\n");

printf("\nWelcome to our YAOTIANSHUNRI CAR POSITION !\

\n\nThe position of your car is %d",position_s);

position_s++;

printf("\n");

printf("Do you want to continue 1-continue/0-quit ?\b");

scanf("%d",&ch);

}

else

{

EnQueue(&Q,car_I);

printf("Welcome to our YAOTIANSHUNRI CAR POSITION ,We are sorry that\ \n\nOur position is full,but you are free to place your car\

\n\non our road.The position of your car is %d",position_q);

position_q++;

printf("\nDo you want to continue 1-continue/0-quit ?\b");

scanf("%d",&ch);

}

}

else if(status==2)/*当车离开*/

{

clrscr();

for(i=0;i<80;i++)printf("*");

printf("\n");

for(i=0;i<24;i++)

printf("-");

printf("\tYAOTIANSHUNRI CAR POSITION\t");

for(i=0;i<24;i++)

printf("-");

printf("\n\t\t\t");

for(i=0;i<10;i++)

printf("-");

printf("Information");

for(i=0;i<10;i++)

printf("-");

printf("\n\n");

printf("\tYour are going to drive your car away ,\n\t\tPlease fill of the form !\n"); printf("\n\t\tYour car Number :");

scanf("%d",&car_https://www.wendangku.net/doc/6e4912849.html,bel);

printf("\n\t\t\tTime : ?\b");

scanf("%f",&(car_D.time));

do

{

Pop(&S,&car_M);

if(car_https://www.wendangku.net/doc/6e4912849.html,bel!=car_https://www.wendangku.net/doc/6e4912849.html,bel)

Push2(&S2,car_M);

else

car_I.time=car_M.time;

}while(car_https://www.wendangku.net/doc/6e4912849.html,bel!=car_https://www.wendangku.net/doc/6e4912849.html,bel);

while(!StackEmpty2(S2))

{

Pop2(&S2,&car_M);

Push(&S,car_M);

}

while(!QueueEmpty(Q)&&!StackFull(S))

{

if(!StackFull(S))

{

DeQueue(&Q,&car_M);

Push(&S,car_M);

printf("The car %d just drived away ,\n\n\tthe car%d has entered the\ YAOTIANSHUNRI CAR POSITION .\n",car_https://www.wendangku.net/doc/6e4912849.html,bel,car_https://www.wendangku.net/doc/6e4912849.html,bel);

}

}

time=car_D.time-car_I.time;

if(time<0.0000)

printf("Sorry!You input a wrong time !Please check and type again.\n");

if(time>0.00001&&time<3.0)

money=time*2.0;

else

money=time*3.0;

printf("\n\n");

for(i=0;i<80;i++)

printf("-");

printf("\n\t");

printf("Your car number %d :\tThe fee is :%5.2f",car_https://www.wendangku.net/doc/6e4912849.html,bel,money);

printf("\n\n");

for(i=0;i<80;i++)

printf("-");

printf("\n\n");

printf("Welcome to back ! Do you want to continue 1-contine/0-quit ?\b");

scanf("%d",&ch);

}

else exit(0);/*退出程序*/

}

}

九、使用说明:

(1)本程序为运行在Windows下的MyTc控制台程序,执行文件为:停车场管理.exe

(2)进入该程序后,首先输入停车场的容量。

(3)输入车辆数据:A为到达,D为离去,E为结束程序。

(4)接着输入车辆的牌照信息

(5)若为到达的车辆,输入进场信息,若为离去的车辆,输入离场信息。

(6)若车辆到达,可得到车辆的停放位置信息,若车辆离去,可得到车辆的停放时间(在便道上的停放时间除外),以及应该交纳的费用。

(7)本程序不断循环要求输入车辆信息,直到输入的车辆数据为E时,程序结束。

十、测试结果

十一、调试分析:

1)本程序开始运行时出现了一个的错误:只能计算车辆的出入,不能对存入的车辆进行计费!而且系统不断提示:NULL的设定出错,所以我直接将其定义为程序注释。经过调试后完全正常。本程序中:车辆到达,离去时的时间复杂度均为:O(n)。本程序空间复杂度为:O(n*n)。

2)本程序推出了一个人性化设计:当你存车的时间超过3个小时我的计费系统将会调低每小时的计费费率,这样更加接近现实的生活。

停车场系统

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

#define StackSize 8

typedef struct

{ char Car_number[StackSize][10];

int top;

}SqStack;//定义栈的结构

void InitStack(SqStack &S)//初始栈的栈顶

{ S.top=-1;

}

int StackEmpty(SqStack &S)//判断栈是否为空

{ if(S.top==-1)

return 1;

else

return 0;

}

int StackFull(SqStack &S)//判断栈是否为满

{ if(S.top==StackSize-1)

return 1;

else

return 0;

}

void StackPush(SqStack &S,char e[])//压栈

{ S.top++;

strcpy(S.Car_number[S.top],e);

}

void StackDisplay(SqStack &S)//显示栈的元素

{ cout<<"停车场的车:"<<endl;

int i;

for(i=S.top+1;i<StackSize;i++)

cout<<"|"<<setiosflags(ios::left)<<setw(10)<<""<<"|"<<endl;

for(i=S.top;i>=0;i--)

cout<<"|"<<setiosflags(ios::left)<<setw(10)<<S.Car_number<<"|"< <endl;

cout<<"------------"<<endl;

}

void StackPop(SqStack &S,char e[])//将特定值元素弹出

{ int flag=0;int k;

if(StackEmpty(S))

cout<<e<<"号码的车找不到!"<<endl;

else

{ for(int i=0;i<=S.top&&!flag;i++)

if(!strcmp(S.Car_number,e))

{ k=i;flag=1;}

if(!flag)

cout<<e<<"号码的车找不到!"<<endl;

else

{ for(i=k;i<S.top;i++)

strcpy(S.Car_number,S.Car_number[i+1]);

S.top--;

}

}

}

#define QueueSize 9

typedef struct

{ char Car_number[QueueSize][10];

int front ,rear;

}SQueue;//定义队列的结构

void InitQueue(SQueue &SQ)//初始队列

{ SQ.front=SQ.rear=0;

}

int QueueEmpty(SQueue &SQ)//判断队列是否为空

{ if(SQ.front==SQ.rear)

return 1;

else

return 0;

}

int QueueFull(SQueue &SQ)//判断队列是否为满

{ if((SQ.rear+1)%QueueSize==SQ.front)

return 1;

else

return 0;

}

void EnQueue(SQueue &SQ,char e[])//元素进队尾

{ SQ.rear=(SQ.rear+1)%QueueSize;

strcpy(SQ.Car_number[SQ.rear],e);

}

void OutQueue(SQueue &SQ,char e[])//队首出队列

{ SQ.front=(SQ.front+1)%QueueSize;

strcpy(e,SQ.Car_number[SQ.front]);

}

void QueueDisplay(SQueue &SQ)//显示队列中的元素

{ cout<<"便道上的车:\n";

for(int i=(SQ.front+1)%QueueSize;i!=(SQ.rear+1)%QueueSize;i=(i+1)%QueueSize) cout<<SQ.Car_number<<"<---";

}

void Special_OutQueue(SQueue &SQ,char e[])//特定元素出队列

{ int k,flag=0,j;

if(QueueEmpty(SQ))

cout<<e<<"号码的车找不到!"<<endl;

else

{ for(k=(SQ.front+1)%QueueSize;k!=(SQ.rear+1)%QueueSize&&!flag;k=(k+1)%QueueSize)

if(!strcmp(SQ.Car_number[k],e))

{ flag=1; }

if(!flag)

cout<<e<<"号码的车找不到!"<<endl;

else

{ k--;

for(j=k;j!=SQ.rear;j=(j+1)%QueueSize)

strcpy(SQ.Car_number[j],SQ.Car_number[(j+1)%QueueSize]);

SQ.rear=(SQ.rear-1)%QueueSize;

}

}

}

void Car_In(SqStack &S,SQueue &SQ)//模拟进车

{ char e[10];

cout<<"please input the number of the car which is coming!\n";

cin>>e;

if(!StackFull(S)&&QueueEmpty(SQ))

StackPush(S, e);

else if(StackFull(S)&&!QueueFull(SQ))

EnQueue(SQ,e);

else if(StackFull(S)&&QueueFull(SQ))

cout<<"The stack and the queue are full,please come later!\n ";

}

void Car_Reset(SqStack &S,SQueue &SQ)//自动调整

{ char e[10];

while(!StackFull(S)&&!QueueEmpty(SQ))

{ OutQueue(SQ, e);

StackPush(S,e);

}

}

void Car_Out(SqStack &S,SQueue &SQ)//模拟出车

{ int choice;char number[10];

cout<<"1:停车场的有车要离开\n2:便道上有车要离开\n";

switch(choice)

{ case 1:

cout<<"input the car number which is leaving!\n";

cin>>number;

StackPop(S,number);

break;

case 2:

cout<<"input the car number which is leaving!\n ";

cin>>number;

Special_OutQueue(SQ,number);

break;

default:

cout<<"error ";break;

}

Car_Reset(S,SQ);

}

void re_start(SqStack &S,SQueue &SQ)//使停车场和便道车为空

{ S.top=-1;

SQ.front=SQ.rear=0;

}

void display_all(SqStack &S,SQueue &SQ)//显示停车场和便道车的情况{ QueueDisplay(SQ);

StackDisplay(S);

}

void di()

{ cout<<"\t\t********************************************\n"; cout<<"\t\t1:模拟进车 3:显示停车场和便道车的情况\n";

cout<<"\t\t2:模拟出车 4:重新开始(停车场和便道车为空) \n";

cout<<"\t\t5:退出\n";

cout<<"\t\t********************************************\n"; }

void main()

{ int m;

SqStack S;

InitStack(S);

SQueue SQ;

InitQueue(SQ);

cout<<"\t\t********************************************\n";

cout<<"\t\t\t\t停车场模拟系统\n";

cout<<"\t\t\t\t开发者:胡小勇\n";

cout<<"\t\t\t\t\t时间:2004/5/21\n" ;

cout<<"\t\t********************************************\n";

di();

cin>>m;

while(m!=5)

{ switch(m)

{ case 1:Car_In(S,SQ);break;

case 2:Car_Out(S,SQ);break;

case 3: display_all(S,SQ);break;

case 4:re_start(S,SQ);break;

default:

cout<<"why do you input the wrong number!\n";

}

di();

cin>>m;

}

}

*停车场管理系统*/

#include

#include

#include

/*------------------------------------------------------------------------------*/ #define MAX 2 /*车库容量*/

#define price 0.05 /*每车每分钟费用*/

typedef struct time{

int hour;

int min;

}Time; /*时间结点*/

typedef struct node{

char num[10];

Time reach;

Time leave;

}CarNode; /*车辆信息结点*/

typedef struct NODE{

CarNode *stack[MAX+1];

int top;

}SeqStackCar; /*模拟车站*/

typedef struct car{

CarNode *data;

struct car *next;

}QueueNode;

typedef struct Node{

QueueNode *head;

QueueNode *rear;

}LinkQueueCar; /*模拟通道*/

/*------------------------------------------------------------------------------*/ void InitStack(SeqStackCar *); /*初始化栈*/

int InitQueue(LinkQueueCar *); /*初始化便道*/

int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/

void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/ void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/

/*------------------------------------------------------------------------------*/ void main()

{

SeqStackCar Enter,Temp;

LinkQueueCar Wait;

int ch;

InitStack(&Enter); /*初始化车站*/

InitStack(&Temp); /*初始化让路的临时栈*/

InitQueue(&Wait); /*初始化通道*/

while(1)

{

printf("\n1. 车辆到达");

printf(" 2. 车辆离开");

printf(" 3. 列表显示");

printf(" 4. 退出系统\n");

while(1)

{

scanf("%d",&ch);

if(ch>=1&&ch<=4)break;

else printf("\n请选择:1|2|3|4.");

}

switch(ch)

{

case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/

case 2:Leave(&Enter,&Temp,&Wait);break; /*车辆离开*/

case 3:List(Enter,Wait);break; /*列表打印信息*/

case 4:exit(0); /*退出主程序*/

default: break;

}

}

}

/*------------------------------------------------------------------------------*/ void InitStack(SeqStackCar *s) /*初始化栈*/

{

int i;

s->top=0;

for(i=0;i<=MAX;i++)

s->stack[s->top]=NULL;

}

int InitQueue(LinkQueueCar *Q) /*初始化便道*/

{

Q->head=(QueueNode *)malloc(sizeof(QueueNode));

if(Q->head!=NULL)

{

Q->head->next=NULL;

Q->rear=Q->head;

return(1);

}

else return(-1);

}

void PRINT(CarNode *p,int room) /*打印出站车的信息*/

{

int A1,A2,B1,B2;

printf("\n请输入离开的时间:/**:**/");

scanf("%d:%d",&(p->leave.hour),&(p->leave.min));

printf("\n离开车辆的车牌号为:");

puts(p->num);

printf("\n其到达时间为: %d:%d",p->reach.hour,p->reach.min);

printf("离开时间为: %d:%d",p->leave.hour,p->leave.min);

A1=p->reach.hour;

A2=p->reach.min;

B1=p->leave.hour;

B2=p->leave.min;

printf("\n应交费用为: %2.1f元",((B1-A1)*60+(B2-A2))*price);

free(p);

}

int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/

{

CarNode *p;

QueueNode *t;

p=(CarNode *)malloc(sizeof(CarNode));

flushall();

printf("\n请输入车牌号(例:陕A1234):");

gets(p->num);

if(Enter->top

{

Enter->top++;

printf("\n车辆在车场第%d位置.",Enter->top);

printf("\n请输入到达时间:/**:**/");

scanf("%d:%d",&(p->reach.hour),&(p->reach.min));

Enter->stack[Enter->top]=p;

return(1);

}

else /*车场已满,车进便道*/

{

printf("\n该车须在便道等待!");

t=(QueueNode *)malloc(sizeof(QueueNode));

t->data=p;

t->next=NULL;

W->rear->next=t;

W->rear=t;

return(1);

}

}

void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) { /*车辆离开*/

int i, room;

CarNode *p,*t;

QueueNode *q;

/*判断车场内是否有车*/

if(Enter->top>0) /*有车*/

{

while(1) /*输入离开车辆的信息*/

{

printf("\n请输入车在车场的位置/1--%d/:",Enter->top);

scanf("%d",&room);

if(room>=1&&room<=Enter->top) break;

}

while(Enter->top>room) /*车辆离开*/

{

Temp->top++;

Temp->stack[Temp->top]=Enter->stack[Enter->top];

Enter->stack[Enter->top]=NULL;

Enter->top--;

}

p=Enter->stack[Enter->top];

Enter->stack[Enter->top]=NULL;

Enter->top--;

while(Temp->top>=1)

{

Enter->top++;

Enter->stack[Enter->top]=Temp->stack[Temp->top];

Temp->stack[Temp->top]=NULL;

Temp->top--;

}

PRINT(p,room);

/*判断通道上是否有车及车站是否已满*/

if((W->head!=W->rear)&&Enter->top

q=W->head->next;

t=q->data;

Enter->top++;

printf("\n便道的%s号车进入车场第%d位置.",t->num,Enter->top); printf("\n请输入现在的时间/**:**/:");

scanf("%d:%d",&(t->reach.hour),&(t->reach.min));

W->head->next=q->next;

if(q==W->rear) W->rear=W->head;

Enter->stack[Enter->top]=t;

free(q);

}

else printf("\n便道里没有车.\n");

}

else printf("\n车场里没有车."); /*没车*/

}

void List1(SeqStackCar *S) /*列表显示车场信息*/

{

int i;

if(S->top>0) /*判断车站内是否有车*/

{

printf("\n车场:");

printf("\n 位置到达时间车牌号\n");

for(i=1;i<=S->top;i++)

{

printf(" %d ",i);

printf("%d:%d ",S->stack->reach.hour,S->stack->reach.min); puts(S->stack->num);

}

}

else printf("\n车场里没有车");

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

《电工电子技术》课程设计报告书 (1)

武汉理工大学华夏学院 信息工程课程设计报告书 课程名称电工电子技术 课程设计总评成绩 学生姓名、学号 学生专业班级 指导教师姓名 课程设计起止日期2015.6.22~2015.7.3

课程设计基本要求 课程设计是工科学生十分重要的实践教学环节,通过课程设计,培养学生综合运用先修课程的理论知识和专业技能,解决工程领域某一方面实际问题的能力。课程设计报告是科学论文写作的基础,不仅可以培养和训练学生的逻辑归纳能力、综合分析能力和文字表达能力,也是规范课程设计教学要求、反映课程设计教学水平的重要依据。为了加强课程设计教学管理,提高课程设计教学质量,特拟定如下基本要求。 1. 课程设计教学一般可分为设计项目的选题、项目设计方案论证、项目设计结果分析、答辩等4个环节,每个环节都应有一定的考核要求和考核成绩。 2. 课程设计项目的选题要符合本课程设计教学大纲的要求,该项目应能突出学生实践能力、设计能力和创新能力的培养;该项目有一定的实用性,且学生通过努力在规定的时间内是可以完成的。课程设计项目名称、目的及技术要求记录于课程设计报告书一、二项中,课程设计项目的选题考核成绩占10%左右。 3. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最佳方案,实施最佳方案的软件程序、硬件电路原理图和PCB图。项目设计方案论证内容记录于课程设计报告书第三项中,项目设计方案论证主要考核设计方案的正确性、可行性和创新性,考核成绩占30%左右。 4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性能指标的正确性和完整性,项目测试中出现故障或错误原因的分析和处理方法。项目设计结果分析记录于课程设计报告书第四项中,考核成绩占25%左右。 5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。文献阅读摘要记录于课程设计报告书第五项中,考核成绩占10%左右。 6. 答辩是课程设计中十分重要的环节,由课程设计指导教师向答辩学生提出2~3个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际技能掌握的程度,以及对问题的理解、分析和判断能力。答辩考核成绩占25%左右。 7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计报告书交给课程设计指导教师评阅。课程设计指导教师应认真指导学生课程设计全过程,认真评阅学生的每一份课程设计报告,给出课程设计综合评阅意见和每一个环节的评分成绩(百分制),最后将百分制评分成绩转换为五级分制(优秀、良好、中等、及格、不及格)总评成绩。 8. 课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成存档交实验室统一管理。

数据库课程设计报告:学生成绩管理系统

《数据库系统原理》课程设计报告 学生成绩管理系统 设计成员 所在专业 所在班级 指导教师 提交时间

目录 卷首语:读书笔记 (4) 1、课程设计的目的 (6) 2、课题组成员的设计任务 (7) 3、学生信息管理系统概述 (8) 4、系统需求分析 (10) 5、数据库设计 (12) 6、系统模块详细设计 (17) 7、课程设计设计总结 (21) 8、程序源代码 (22) 参考文献 (50)

学生信息管理系统 班级:制作成员:指导教师:

卷首语: I、读书笔记 关于网上花店管理系统的读书笔记: 在网上购物逐步平民化的今天,网上购物人数不断增加,现代IT技术和互联网的结合。给了市场创造了无限商机!我阅读了一片“网上花店管理系统”的论文。该论文主要研究网上花店管理系统。该系统以MySQL作为后台数据库,JSP作为前台开发工具,通过Java中的JDBC连接数据库。提供给用户网上浏览,购买,支付等功能,同时.管理员对可以该系统进行维护和管理! SQL Server安全可靠,性能好,易用性强,JSP的Web运用跨平台,系统底层采用Java开发。Java语言简单,面向对象,安全性高的特点,运用Serlvet 模式和Tomcat服务器。这几点的综合搭配使得该系统灵活方便易用,简化了动态网站的开发。 网上花店管理系统实现了用户注册,网上订购支付,留言,购物车,鲜花资料管理和用户管理,订单管理等功能。SQl数据库实现了用户注册登记信息的存储,和网站资料维护,更新等使得数据的管理更加便利,高效…JSP则为用户提高动态图形界面,简化了操作,提高了易用性。论文还详细介绍了系统的逻辑结构设计,逻辑图,总功能设计,和数据库设计等。该系统即使是不懂web 技术的人也可以熟悉运用。 开发工具和数据库的工具有很多,各有各的优势。在互联网大行其道的时代,电脑技术顺应着时代的发展,只有我们把握运用好各类技术,相互结合与利用,才能制作出更好的软件和程序。 在现在信息化高速发展的时代,信息只有快,准,精才能发挥其价值。所以机器代替人力是必然的历史发展趋势,人工操作必将被计算机代替。计算机在我们的日常生活中的使用越来越不可或缺,计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性. 数据库技术,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。数据库技术从诞生到现在,在不到半个世纪

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

模拟电子技术课程设计报告

课程设计报告 题目方波、三角波、正弦波信号 发生器设计 课程名称模拟电子技术课程设计 院部名称机电工程学院 专业10自动化 班级10自动化 学生姓名吉钰源 学号1004104001 课程设计地点 C206 课程设计学时 1周 指导教师赵国树 金陵科技学院教务处制成绩

目录 1、绪论 (3) 1.1相关背景知识 (3) 1.2课程设计目的 (3) 1.3课程设计的任务 (3) 1.4课程设计的技术指标 (3) 2、信号发生器的基本原理 (4) 2.1总体设计思路 (4) 2.2原理框图 (4) 3、各组成部分的工作原理 (5) 3.1 正弦波产生电路 (5) 3.1.1正弦波产生电路 (5) 3.1.2正弦波产生电路的工作原理 (6) 3.2 正弦波到方波转换电路 (7) 3.2.1正弦波到方波转换电路图 (7) 3.2.2正弦波到方波转换电路的工作原理 (8) 3.3 方波到三角波转换电路 (9) 3.3.1方波到三角波转换电路图 (9) 3.3.2方波到三角波转换电路的工作原理 (10) 4、电路仿真结果 (11) 4.1正弦波产生电路的仿真结果 (11) 4.2 正弦波到方波转换电路的仿真结果 (11) 4.3方波到三角波转换电路的仿真结果 (13) 5、电路调试结果 (13) 5.1正弦波产生电路的调试结果 (13) 5.2正弦波到方波转换电路的调试结果 (14) 5.3方波到三角波转换电路的调试结果 (14) 6、设计结果分析与总结 (15)

1、绪论 1.1相关背景知识 由于物理学的重大突破,电子技术在20世纪取得了惊人的进步。特别是近50年来,微电子技术和其他高技术的飞速发展,致使农业、工业、科技和国防等领域发生了令人瞩目的变革。与此同时,电子技术也正在改变着人们日常生活。在电子技术中,信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途,可以用于生产测试、仪器维修和实验室,还广泛使用在其它科技领域,如医学、教育、化学、通讯、地球物理学、工业控制、军事和宇航等。它是一种不可缺少的通用信号源。 1.2课程设计目的 通过本次课程设计所要达到的目的是:增进自己对模拟集成电路方面所学知识的理解,提高自己在模拟集成电路应用方面的技能,树立严谨的科学作风,培养自身综合运用理论知识解决实际问题的能力。通过电路设计初步掌握工程设计方法,逐步熟悉开展科学实践的程序和方法,为后续课程的学习和今后从事的实际工作提供引导性的背景知识,打下必要的基础。 1.3课程设计的任务 ①设计一个方波、三角波、正弦波函数发生器; ②能同时输出一定频率一定幅度的三种波形:正弦波、方波和三角波; ③用±12V电源供电; 先对课程设计任务进行分析,及根据参数的确定选择出一种最适合本课题的方案。在达到课题要求的前提下保证最经济、最方便、最优化的设计策略。然后运用仿真软件Multisim对电路进行仿真,观察效果并与课题要求的性能指标作对比。仿真成功后,用实物搭建电路,进行调试,观测示波器输出的波形。 1.4课程设计的技术指标 ①设计、组装、调试信号发生器; ②输出波形:正弦波、方波、三角波; ③频率范围在10Hz~10000Hz范围内可调; ④比较器用LM339,运算放大器用LM324,双向稳压管用两个稳压管代替。

青岛农业大学电子设计自动化与专用集成电路课程设计报告汇总

青岛农业大学 理学与信息科学学院 电子设计自动化及专用集成电路 课程设计报告 设计题目一、设计一个二人抢答器二、密码锁 学生专业班级 学生姓名(学号) 指导教师 完成时间 实习(设计)地点信息楼121 年 11 月 1 日

一、课程设计目的和任务 课程设计目的:本次课程设计是在学生学习完数字电路、模拟电路、电子设计自动化的相关课程之后进行的。通过对数字集成电路或模拟集成电路的模拟与仿真等,熟练使用相关软件设计具有较强功能的电路,提高实际动手,为将来设计大规模集成电路打下基础。 课程设计任务: 一、设计一个二人抢答器。要求: (1)两人抢答,先抢有效,用发光二极管显示是否抢到答题权。 (2)每人两位计分显示,打错不加分,答对可加10、20、30分。 (3)每题结束后,裁判按复位,重新抢答。 (4)累积加分,裁判可随时清除。 二、密码锁 设计四位十进制密码锁,输入密码正确,绿灯亮,开锁;不正确,红灯亮,不能开锁。密码可由用户自行设置。 二、分析与设计 1、设计任务分析 (1)二人抢答器用Verilog硬件描述语言设计抢答器,实现: 1、二人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。 2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。 3、有从新开始游戏按键,游戏从新开始时每位选手初始分为零分,答对可选择加10分、20分,30分,最高九十分。 4、选手抢答成功时其对应的分数显示。 (2)密码锁 1、第一个数字控制键用来进行密码的输入 2、第二个按键控制数字位数的移动及调用密码判断程序。当确认后如果显示数据与预置密码相同,则LED 亮;如不相等,则无反应。按下复位键,计数等均复位

数据库课程设计报告

《数据库类课程设计》 系统开发报告 学号:111007133 姓名:邢小迪 题目:企业员工薪资管理 指导教师:王红梅 提交时间:2013年6月01日 计算机科学与应用系

目录 一绪论 二员工薪资管理系统概述 (1) 现状分析 (1) 系统目标 (2) 系统特点 (3) 三员工薪资管理系统数据库设计 (3) 需求分析 (3) 数据库物理结构分析 (4) 数据库概念结构设计 (6) 数据库逻辑结构设计 (9) 四员工薪资管理系统数据库功能模块的创建 (12) 五总结 (21) 体会 (21) 参考文献 (22)

一绪论 随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于 SQL server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。基本上能满足管理员和公司的要求。 此次数据库课程设计的主要设计如下: 原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。 需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。 二员工薪资管理系统概述 1、现状分析 随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。随着我国国民经济建设

电力电子技术课程设计报告

电力电子课程设计报告题目三相桥式全控整流电路设计 学院:电子与电气工程学院 年级专业:2015级电气工程及其自动化 姓名: 学号: 指导教师:高婷婷,林建华 成绩:

摘要 整流电路尤其是三相桥式可控整流电路是电力电子技术中最为重要同时也是应用得最为广泛的电路,不仅用于一般工业,也广泛应用于交通运输、电力系统、通信系统,能源系统及其他领域,因此对三相桥式可控整流电路的相关参数和不同性质负载的工作情况进行对比分析与研究具有很强的现实意义,这不仅是电力电子电路理论学习的重要一环,而且对工程实践的实际应用具有预测和指导作用,因此调试三相桥式可控整流电路的相关参数并对不同性质负载的工作情况进行对比分析与研究具有一定的现实意义。 关键词:电力电子,三相,整流

目录 1 设计的目的和意义………………………………………1 2 设计任务与要求 (1) 3 设计方案 (1) ?3.1三相全控整流电路设计 (1) 3.1.1三相全控整流电路图原理分析 (2) ?3.1.2整流变压器的设计 (2) ?3.1.3晶闸管的选择 (3) 3.2 保护电路的设计 (4) 3.2.1变压器二次侧过压保护 (4) ?3.2.2 晶闸管的过压保护………………………………………………4 3.2.3 晶闸管的过流保护………………………………………………5 3.3 触发电路的选择设计 (5) 4 实验调试与分析 (6) 4.1三相桥式全控整流电路的仿真模型 (6)

4.2仿真结果及其分析……………………………………………7 5 设计总结 (8) 6 参考文献 (9)

1 设计的目的和意义 本课程设计属于《电力电子技术》课程的延续,通过设计实践,进一步学习掌握《电力电子技术》,更进一步的掌握和了解他三相桥式全控整流电路。通过设计基本技能的训练,培养学生具备一定的工程实践能力。通过反复调试、训练、便于学生掌握规范系统的电子电力方面的知识,同时也提高了学生的动手能力。 2 设计任务与要求 三相桥式全控整流电路要求输入交流电压2150,10,0.5U V R L H ==Ω=为阻 感性负载。 1.写出三相桥式全控整流电路阻感性负载的移相范围,并计算出直流电压的变化范围 2.计算α=60°时,负载两端电压和电流,晶闸管平均电流和有效电流。 3.画出α=60°时,负载两端 d U 和晶闸管两端 1 VT U 波形。 4.分析纯电阻负载和大电感负载以及加续流二极管电路的区别。 5.晶闸管的型号选择。 3 设计方案 3.1三相全控整流电路设计

电子科技大学模电课程设计报告——火灾报警电路

电子科技大学模电课程设计报告——火灾报警电路

————————————————————————————————作者:————————————————————————————————日期: 2

电子科技大学 《模拟电路基础》应用设计报告 设计题目:火灾报警电路 学生姓名:学号: 教师姓名:日期: 一、设计任务 通过两个温度传感器获得的电压差实现火灾自动报警。 正常情况下,电压差为零,发光二极管不亮,蜂鸣器不响。 当有火情时,电压差增大,发光二极管发光,蜂鸣器鸣叫。 二、电路原理 根据设计要求,把设计的电路分成以下三个模块(图1): 图1 电路方框图 电路详细构成如下: 放大微 弱电压信 号 判断是否 需要报警 报警指 示

1.二极管温度传感器 仿真时,可用电压源ui1、ui2模拟温度引起的电压变化,但可用二极管作为实际的温度传感器。常温下,硅二极管正向导通时的导通电压约为0.7V。 流过二极管的正向电流固定时,温度每上升1度,正向电压下降大约2mV。 图2 二极管温度传感器 2.差分电压放大电路 发生火灾时,温度传感器的电压差可以迅速上升至几十到几百mV,根据后级的比较电压确定放大倍数,通过差分放大器将电压放大到大于比较 电压。 因此选择图三这样的电路可将微弱的电信号放大10倍左右。 图3 差分电压放大电路 ) ( 1 2I I f O u u R R u- ? =

3.单限电压比较器 差分电路输出的电压从U2的正向输入端输入,与单限电压比较器的阈值电 压UT 进行比较。 图4 单限电压比较器 CC T oH o T o oL o T o V R R R U U u U u U u U u ?+= =>=<4 34 2121;;时,时,

Oracle数据库课程设计报告

课程设计报告书

目录 第1章引言 (3) 第2章概要设计 (5) 2.1系统需求分析 (5) 2.2系统结构设计 (5) 2.3系统功能模块 (6) 第3章数据库分析 (7) 3.1 数据库总体设计 (7) 3.2 数据表设计 (7) 3.3 数据库的创建 (8) 3.4存储过程和触发器 (10) 第4章详细设计及测试 (12) 4.1 系统界面 (12) 4.2 主要代码设计 (15) 4.3 功能整体链接测试 (18) 第5章课程设计心得 (19)

第1章引言 1.设计目的 使用VC,C++,C#等作为前台开发工具,使用Oracle作为后台数据库,所设计的管理系统应包含输入输出、查询、插入、修改、删除等基本功能。根据题目的基本需求,设计系统界面、数据库、编写程序(Oracle),并写出课程设计报告 1、阅读资料:每个人必须提前阅读教材有关Oracle、VC、C++、C#应用方面的内容以及其它相关书籍。 2、需求分析:题目要求达到的功能,所提供的原始数据,需要输出的数据及样式等。 3、数据库的设计:根据要求设计数据库的结构,包括:表、数据完整性、关系、视图。 4、数据库的安全性设计:登录用户、数据库用户、数据库角色、命令许可等方面 涉及到数据的所有操作要求采用存储过程的方式进行。 2.设计要求 1.选好题目:先分组,每组两个人(或单独完成),必须确保每题有两组人员选做,班长将本班同学的选题情况汇总后于16周之前交。 2.独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝,否则不管是抄袭还是被抄袭,雷同的全部直接评定为不及格。 3.做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。 4.根据编程实现的结果,按课程设计报告的撰写规范完成数据库系统课程设计报告(课程设计报告中必须有相关原理分析、程序设计、程序实现和程序调试等内容);课程设计报告的具体要求如下: 1)课设报告按照规定用A4纸张进行排版打印,否则要求返工; 2)课设报告的内容顺序如下:封面—任务书—中文摘要—目录—正文—附录; 3)正文不少于4000字,正文部分至少包含以下内容,并可大致作如下安排 1.引言(包括设计目的、要求、设计环境、同组人员及分工等内容)

【实验报告】大学物理实验课程设计实验报告

大学物理实验课程设计实验报告北方民族大学 大学物理实验(设计性实验) 实验报告 指导老师:王建明 姓名:张国生 学号:XX0233 学院:信息与计算科学学院 班级:05信计2班 重力加速度的测定 一、实验任务 精确测定银川地区的重力加速度 二、实验要求 测量结果的相对不确定度不超过5% 三、物理模型的建立及比较 初步确定有以下六种模型方案: 方法一、用打点计时器测量

所用仪器为:打点计时器、直尺、带钱夹的铁架台、纸带、夹子、重物、学生电源等. 利用自由落体原理使重物做自由落体运动.选择理想纸带,找出起始点0,数出时间为t的p点,用米尺测出op的距离为h,其中t=0.02秒×两点间隔数.由公式h=gt2/2得g=2h/t2,将所测代入即可求得g. 方法二、用滴水法测重力加速度 调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n取 50―100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2. 方法三、取半径为r的玻璃杯,内装适当的液体,固定在旋转台上.旋转台绕其对称轴以角速度ω匀速旋转,这时液体相对于玻璃杯的形状为旋转抛物面重力加速度的计算公式推导如下: 取液面上任一液元a,它距转轴为x,质量为m,受重力mg、弹力n.由动力学知: ncosα-mg=0(1) nsinα=mω2x(2) 两式相比得tgα=ω2x/g,又tgα=dy/dx,∴dy=ω2xdx/g, ∴y/x=ω2x/2g.∴g=ω2x2/2y. .将某点对于对称轴和垂直于对称轴最低点的直角坐标系的坐标x、y测出,将转台转速ω代入即可求得g.

模拟电子技术课程设计心得体会

模拟电子技术课程设计心得体会此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教,做课程设计要有严谨的思路和熟练的动手能力,我感觉自己做了这次设计后,明白了总的设计方法及思路,通过这次尝试让我有了更加光火的思路,对今后的学习也有莫大的好处。 一、设计目的 1、学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。 2、学会直流稳压电源的设计方法和性能指标测试方法。 3、培养实践技能,提高分析和解决实际问题的能力。 1.电路图设计方法 (1)确定目标:设计整个系统是由那些模块组成,各个模块之间的信号传输,并画出直流稳压电源方框图。 (2)系统分析:根据系统功能,选择各模块所用电路形式。 (3)参数选择:根据系统指标的要求,确定各模块电路中元件的参数。 (4)总电路图:连接各模块电路。 (5)将各模块电路连起来,整机调试,并测量该系统的各项指标。 (6)采用三端集成稳压器电路,用输出电压可调且内部有过载保护的三端集成稳压器,输 出电压调整范围较宽,设计一电压补偿电路可实现输出电压从 0 V起连续可调,因要求电 路具有很强的带负载能力,需设计一软启动电路以适应所带负载的启动性能。该电路所用器 件较少,成本低且组装方便、可靠性高。 二、总体设计思路

1、直流稳压电源 直流稳压电源是一种将220V工频交流电转换成稳压输出的直流电压的装置,它需要变压、整流、滤波、稳压四个环节才能完成。 直流稳压电源方框图 图2 直流稳压电源的方框图 2、整流电路 (1)直流电路常采用二极管单相全波整流电路,电路如图3所示。 图3 单相桥式整流电路 3、滤波电路——电容滤波电路 采用滤波电路可滤除整流电路输出电压中的交流成分,使电压波形变得平滑。常见的滤波电路有电容滤波、电感滤波和复式滤波等。 在整流电路的输出端,即负载电阻RL两端并联一个电容量较大的电解电容C,则构成

数据库课程设计报告

数据库课程设计 --JIA服装销售系统 指导老师:索剑 系名:计算机科学系 学号:111405128 姓名:薛文科 班级:11计算机1班

目录 第一章绪论 (3) 1.1课题简介 (3) 1.2设计目的 (3) 1.3设计内容 (3) 1.4系统实验要求 (3) 第二章需求分析 (3) 2.1 系统基本功能 (3) 2.2 权限划分 (4) 2.3 系统运作流程 (4) 2.4 数据字典 (5) 第三章概念结构设计 (7) 3.1 概念结构设计的方法与步骤 (7) 3.1.1 概念结构设计的方法 (7) 3.1.2概念结构设计的步骤 (7) 3.2 数据抽象与局部视图设计 (8) 3.3视图的集成 (9) 第四章逻辑结构设计 (10) 4.1 E-R图向关系模型的转换 (10) 4.2数据模型的优化 (11) 4.3 数据库的结构 (11) 第五章数据库物理设计 (11) 5.1 存储结构设计 (11) 5.2 存储路径设计 (11) 5.3数据存放位置 (11) 第六章数据库的实施 (12) 6.1表的建立与数据的载入 (12) 6.2触发器的设计 (12) 第七章系统效果图 (13) 第八章总结 (15)

第一章绪论 1.1课题简介 随着时代的发展,计算系软件和系统的成熟,服装的销售管理对于服装企业是一个很重要的问题,如何能有效的管理好自己企业销售的服装和统计出比较收欢迎的服装对于企业的盈利起着至关重要的作用,而建立一个服装销售系统就是一个很好的办法。本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套服装销售系统,在下面的各章中,我将以这服装销售为例,谈谈其开发过程和所涉及到的问题。 1.2设计目的 应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。 实践和巩固在课堂教学中学习的关于SQL Server的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。 1.3设计内容 选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解服装销售的构造以及企业管理的信息。通过这些信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与报刊订阅系统执行相同的操作。需求分析阶段就是要研究我所作的服装销售系统的具体分类和实施过程流图。概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。逻辑结构设计阶段要把E-R图转化为关系模式并且把我输入的六张表结合在一起完成一个总关系表。最后就是要运行和实施数据库。要把查询结果与过程抓几张图。 1.4系统实验要求 建立两个用户:管理员,经理 管理员:负责进行库存的查询,客户的查询,生成出库单和入库单。 经理:负责审核通过出库单和入库单。 第二章需求分析 2.1 系统基本功能 本系统有以下的功能模块: (1)登录功能:登录系统为身份验证登录。分为管理员和经理。不同的用户对于系统有不同的操作权限。 (2)客户管理功能:对客户的基本信息进行管理,可以对客户的信息进行增,删,查,改。(3)库存的查询功能:可以查看库存里面衣服的详细信息。 (4)货物出库功能对库存里面的衣服进行出库 (5)货物入库功能:对库存里面的衣服进行增加

南邮课程设计实验报告

课程设计I报告 题目:课程设计 班级:44 姓名:范海霞 指导教师:黄双颖 职称: 成绩: 通达学院 2015 年 1 月 4 日

一:SPSS的安装和使用 在PC机上安装SPSS软件,打开软件: 基本统计分析功能包括描述统计和行列计算,还包括在基本分析中最受欢迎的常见统计功能,如汇总、计数、交叉分析、分类比较、描述性统计、因子分析、回归分析及聚类分析等等。具体如下: 1.数据访问、数据准备、数据管理与输出管理; 2.描述统计和探索分析:频数、描述、集中趋势和离散趋势分析、分布分析与查看、正态性检验与正态转换、均值的置信区间估计; 3.交叉表:计数;行、列和总计百分比;独立性检验;定类变量和定序变量的相关性测度; 4.二元统计:均值比较、T检验、单因素方差分析; 5.相关分析:双变量相关分析、偏相关分析、距离分析; 6.线性回归分析:自动线性建模、线性回归、Ordinal回归—PLUM、曲线估计; 7.非参数检验:单一样本检验、双重相关样本检验、K重相关样本检验、双重独立样本检验、K重独立样本检验; 8.多重响应分析:交叉表、频数表; 9.预测数值结果和区分群体:K-means聚类分析、分级聚类分析、两步聚类分析、快速聚类分析、因子分析、主成分分析、最近邻元素分析; 10. 判别分析; 11.尺度分析; 12. 报告:各种报告、记录摘要、图表功能(分类图表、条型图、线型图、面积图、高低图、箱线图、散点图、质量控制图、诊断和探测图等); 13.数据管理、数据转换与文件管理; 二.数据文件的处理 SPSS数据文件是一种结构性数据文件,由数据的结构和数据的内容两部分构成,也可以说由变量和观测两部分构成。定义一个变量至少要定义它的两个属性,即变量名和变量类型其他属性可以暂时采用系统默认值,待以后分析过程中如果有需要再对其进行设置。在spss数据编辑窗口中单击“变量视窗”标签,进入变量视窗界面,即可对变量的各个属性进行设置。 1.创建一个数据文件数据 (1)选择菜单【文件】→【新建】→【数据】新建一个数据文件,进入数据编辑窗口。窗口顶部标题为“PASW Statistics数据编辑器”。 (2)单击左下角【变量视窗】标签进入变量视图界面,根据试验的设计定义每个变量类型。

电子线路课程设计报告

石英晶体好坏检测电路设计 设计要求 1. 利用高频电子线路及其先修课程模拟电路的知识设计一个电子线路2.利用该电子线路的要求是要求能够检测石英晶体的好坏 3. 要求设计的该电子线路能够进行仿真 4. 从仿真的结果能够直接判断出该石英晶体的好坏 5. 能够理解该电子线路检测的原理 6. 能够了解该电子线路的应用 成果简介设计的该电子线路能够检测不同频率石英晶体的好坏。当有该石英晶体(又称晶振)的时候,在输出端接上一个示波器能够有正弦波形输出,而当没有 该晶振的时候,输出的是直流,波形是一条直线。所以利用该电路可以在使 用晶振之前对其进行检测。 报告正文 (1)引言: 在高频电子线路中,石英晶体谐振器(也称石英振子)是一个重要的高频部件,它广泛应用于频率稳定性高的振荡器中,也用作高性能的窄带滤波 器和鉴频器。其中石英晶体振荡器就是利用石英晶体谐振器作滤波元件构成 的振荡器,其振荡频率由石英晶体谐振器决定。与LC谐振回路相比,石英晶 体谐振器有很高的标准性,采用品质因数,因此石英晶体振荡器具有较高的 频率稳定度,采用高精度和稳频措施后,石英晶体振荡器可以达到很高的频 率稳定度。正是因为石英晶体谐振器的这一广泛的应用和重要性,所以在选 择石英晶体谐振器的时候,应该选择质量好的。在选择的时候要对该晶振检 测才能够知道它的好坏,所以要设计一个检测石英晶体好坏的电路。 (2)设计内容: 设计该电路的原理如下:

如下图所示,BX为待测石英晶体(又名晶振),插入插座X1、X2,按下按钮SB,如果BX是好的,则由三极管VT1、电容器C1、C2等构成的振荡器工作,振荡信号从VT1发射极输出,经C3耦合到VD2进行检波、C4滤波,变成直流信号电压,送至VT2基极,使VT2导通,发光二极管H发光,指示被测石英晶体是好的。若H不亮,则表明石英晶体是坏的。适当改变C1、C2的容值,即可用于测试不同频率的石英晶体。 图一石英晶体好坏检测电路检测原理图 在上面的电路中,晶振等效于电感的功能,与C1和C2构成电容三点式振荡电路,振荡频率主要由C1、C2和C3以及晶振构成的回路决定。即由晶振电 抗X e 与外部电容相等的条件决定,设外部电容为C L ,则=0,其中C l 是C1、 C2和C3的串联值。 (3)电路调试过程: 首先是电路的仿真过程,该电路的仿真是在EWB软件下进行的,下面是将原图画到该软件后的截图:

数据库课程设计报告

数据库课程设计教学管理系统

前言 (4) 前言 (4) 相关技术介绍 (4) 第一章需求分析 (4) 1.1 任务概述 (5) 1.1.1 目标 (5) 1.1.2 运行环境 (5) 1.2 数据流图 (5) 1.3 数据字典 (6) 1.4 系统流程分析 (6) 第二章概念结构设计 (7) 第三章逻辑结构设计 (8) 3.1 逻辑结构设计 (8) 3.2 规范化处理 (10) 第四章数据库物理设计 (11) 4.1 索引表 (10) 4.2 系统配置 (11) 4.3 视图 (11) 第五章数据库的实施 (11) 5.1 创建数据库及数据库对象 (11) 5.2 完整性约束创建 (13) 5.3 数据库的维护及备份 (14) 5.3.1 维护 (14) 5.3.2 检测并改善数据库性能 (14) 5.3.3 备份 (14) 第六章前台用户界面 (14) 第七章结论与体会 (17) 参考文献

0、前言 0.1引言 数据库作为存取数据并对数据进行操作的工具在系统中所起到的作用至关重要。数据库设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理模式结果,并据此建立数据库及其应用系统,使之能有效地存储和管理数据,满足应用需求,包括信息管理要求和数据操作。信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象进行哪些操作,如查询、增、删、改、统计等操作。数据库设计地目标是维用户和各种应用系统提供的一个信息基础设施和高效率地运行环境。高效率的运行环境包括:数据库数据的存取速率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。 为了使数据库的应用系统开发设计合理、规范、有序、正确、高效进行,现在广泛采用的是工程化6阶段开发设计过程与方法,它们是需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施、数据库系统运行与维护阶段。我按照以上几点开发了学生选课管理系统数据库。 0.2相关技术介绍 0.2.1MYSQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在WEB 应用方面MySQL 是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不

c课程设计实验报告

c课程设计实验报 告

中南大学 本科生课程设计(实践)任务书、设计报告 (C++程序设计) 题目时钟控件 学生姓名 指导教师 学院交通运输工程学院 专业班级 学生学号 计算机基础教学实验中心 9月7日 《C++程序设计基础》课程设计任务书

对象:粉冶、信息、能源、交通工程实验2101学生时间: .6 2周(18~19周) 指导教师:王小玲 1.课程设计的任务、性质与目的 本课程设计是在学完《C++程序设计基础》课程后,进行的一项综合程序设计。在设计当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。经过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个管理应用程序的思想、方法和流程。 2.课程设计的配套教材及参考书 ●《C++程序设计》,铁道出版社,主编杨长兴刘卫国。 ●《C++程序设计实践教程》,铁道出版社,主编刘卫国杨长兴。 ●《Visual C++ 课程设计案例精编》,中国水力电力出版社,严华峰等编著。 3.课程设计的内容及要求 (1)自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求利用MFC 工具操作实现。 (2)也可选一个应用程序管理系统课题(如:通讯录管理系统;产品入库查询系统;学生成绩管理;图书管理 等);

设计所需数据库及数据库中的数据表,建立表之间的关系。 设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。 设计进入系统的各级口令(如系统管理员口令,用户级口令)。 设计系统的主菜单。要求具备下列基本功能: ●数据的浏览和查询 ●数据的统计 ●数据的各种报表 ●打印输出 ●帮助系统 多种形式的窗体设计(至少有查询窗体、输入窗体) 注意:开发的应用程序工作量应保证在2周时间完成,工作量不能太少或太多。能够2人合作,但必须将各自的分工明确。 4.写出设计论文 论文基本内容及撰写顺序要求: ●内容摘要 ●系统开发设计思想 ●系统功能及系统设计介绍 ●系统开发的体会

模拟电子技术课程设计报告

课程设计 重庆科技学院 模拟电子技术课程设计成果 院(系):_电子信息工程学院_班级:自普本2008— 01 学生姓名:_袁小敏___________ 学号:_2008440910 _________ 设计地点(单位)1404 _________________ 设计题目: ___________________________________________ 完成日期:2010 年7月9 日 指导教师评语:__________________________________________ 成绩(五级记分制): _______________ 教师签名: __________________________

一、........................................................................ 设计任务和指标要求. (3) 二、............................................................ 设计框图及整机概述3 三、................................................ 各单元电路的设计方案及原理说明4 四、........................................................ 仿真调试过程及结果分析7 五、.................................................... 设计、安装及调试中的体会8 六、.................................................... 对本次课程设计的意见及建议9 七、...................................................................... 参考资料10 八、.......................................................................... 附录11 附件1 整机逻辑电路图 (11) 附件2 元器件清单 (12)

电子技术课程设计报告三端集成稳压电路

河南机电高等专科学校电子技术课程设计报告设计课题:三端集成稳压电路

三端集成稳压电路 一、设计任务与要求 1. 掌握二极管的单向导电性及用途; 2.了解三端集成稳压器LM7805和LM317的用途及区别; 3.对桥式整流滤波电路进行了解; 4.对变压器知识进行回顾; 5.培养实践技能,提高分析和解决实际问题的能力; 6.要求安全用电,正确使用元件 二、方案设计与论证 可调直流稳压电源一般由电源变压器,整流滤波电路及稳压电路所组成。变压把家用照明电交流电压220V变为所需要的低压交流电。桥式整流器把交流电变为直流电。经滤波后,稳压器再把不稳定的直流电压变为稳定的直流电压输出。本设计主要采用直流稳压构成集成稳压电路,通过变压,整流,滤波,稳压过程将220V交流电,变为稳定的直流电,并实现电压可在1.25V-37V可调。 方案一、使用型号LM317三端稳压集成器。接入220V家用照明电源,通过降压变压器,使电压降到适合的值,然后使用IN4001型号二极管,电容等设计整流滤波电路,然后通过使用型号LM317三端稳压集成器,输出一个稳定直流电。 方案二、使用型号LM7805三端稳压集成器。接入220V家用照明电源,通过降压变压器,使电压降到适合的值,然后使用IN4007型号二极管,电容等设计整流滤波电路,然后通过使用型号LM7805三端稳压集成器,输出一个稳定直流电。 论证:由于设计要求通过变压,整流,滤波,稳压过程将220V交流电,变为稳定的直流电,并实现电压可在1.25V-37V可调。对于型号LM7805三端稳压集成器来说,输入电压为9V--20V,输出电压为固定值5,输出最大电流为1.5A;而型号LM317三端稳压集成器输入电压的要求范围比较大,输出电压为可调的,电压的范围1.25V-37V,输出电流的最大值与上面的相同,对于此设计来说LM317的选择性比较高,比较容易操作。 通过论证,最终确定选用方案一。

相关文档 最新文档