文档库 最新最全的文档下载
当前位置:文档库 › 数据结构c语言版课程设计停车场管理系统

数据结构c语言版课程设计停车场管理系统

数据结构c语言版课程设计停车场管理系统
数据结构c语言版课程设计停车场管理系统

课程设计:停车场

c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统

停车场停满车后车会停在便道上面

下面附上源码,vc:(下编译

#include

//#include //malloc

#include //获取系统时间所用函数#include //getch()

#include //设置光标信息mallco #define MaxSize 5 /*定义停车场栈长度*/

#define PRICE 0.05 /*每车每分钟收费值*/

#define BASEPRICE 0.5 //基础停车费

#define Esc 27 //退出系统

#define Exit 3 //结束对话

#define Stop 1 //停车

#define Drive 2 //取车

int jx=0,jy=32; //全局变量日志打印位置

typedef struct

{int hour;

int minute;

}Time,*PTime; /*时间结点*/

typedef struct /*定义栈元素的类型即车辆信息结点*/

{int num ; /*车牌号*/

Time arrtime; /*到达时刻或离区时刻*/

}CarNode;

typedef struct /*定义栈,模拟停车场*/

{CarNode stack[MaxSize];

int top;

}SqStackCar;

typedef struct node /*定义队列结点的类型*/

{int num; /*车牌号*/

struct node *next;

}QueueNode;

typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear;

}LinkQueueCar;

/*函数声明*/

PTime get_time();

CarNode getcarInfo();

void qingping(int a);

void gotoxy(int x,int y);

void printlog(Time t,int n,int io,char ab,int po,double f);

void printstop(int a,int num,int x0,int y0);

void printleave(int a,int po,int num);

/*初始化栈*/

void InitSeqStack(SqStackCar *s)

{

s->top=-1;

}

/* push入站函数*/

int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{

if(s->top==MaxSize-1)

return(0); //如果栈满,返回0 else

{

s->stack[++s->top]=x; //栈不满,到达车辆入栈

return(1);

}

}

/*栈顶元素出栈*/

CarNode pop(SqStackCar *s)

{

CarNode x;

if(s->top<0)

{

x.num=0;

x.arrtime.hour=0;

x.arrtime.minute=0;

return(x); //如果栈空,返回空值

}

else

{

s->top--;

return(s->stack[s->top+1]); //栈不空,返回栈顶元素

}

}

/*初始化队列*/

void InitLinkQueue(LinkQueueCar *q)

{

q->front=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点,作头结点

if(q->front!=NULL)

{

q->rear=q->front;

q->front->next=NULL;

q->front->num=0; //头结点的num保存队列中数据元素的个数

}

}

/*数据入队列*/

void EnLinkQueue(LinkQueueCar *q,int x)

{

QueueNode *p;

p=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点

p->num=x;

p->next=NULL;

q->rear->next=p; //新结点入队列

q->rear=p;

q->front->num++; //队列元素个数加1

}

/*数据出队列*/

int DeLinkQueue(LinkQueueCar *q)

{

QueueNode *p;

int n;

if(q->front==q->rear) //队空返回0

return(0);

else

{

p=q->front->next;

q->front->next=p->next;

if(p->next==NULL)

q->rear=q->front;

n=p->num;

free(p);

q->front->num--;

return(n); //返回出队的数据信息}

}

/********************* 车辆到达***************************/

//参数:停车栈停车队列车辆信息

//返回值:空

//功能:对传入的车辆进行入栈栈满则入队列

void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x)

{

int f;

f=push(stop,x); //入栈

if (f==0) //栈满

{

EnLinkQueue(lq,x.num); //入队

printstop(1,lq->front->num,0,23);

printlog(x.arrtime,x.num,1,'B',lq->front->num,0);

qingping(0); printf("您的车停在便道%d号车位上\n",lq->front->num); //更新对话

}

else

{

printstop(0,stop->top+1,0,23);

printlog(x.arrtime,x.num,1,'P',stop->top+1,0);

qingping(0); printf("您的车停在停车场%d号车位上\n",stop->top+1); //更新对话

}

qingping(1); printf("按任意键继续");

getch();

}

/************************** 车辆离开*************************************/

//参数:停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x

//返回值:空

//功能:查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息

void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x)

{

double fee=0;

int position=s1->top+1; //车辆所在车位

int n,f=0;

CarNode y;

QueueNode *q;

while((s1->top > -1)&&(f!=1)) //当栈不空且未找到x

{

y=pop(s1);

if(y.num!=x.num)

{

n=push(s2,y);

position--;

}

else

f=1;

}

if(y.num==x.num) //找到x

{

gotoxy(33,17);

printf("%d:%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute) );

fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEP RICE;

gotoxy(48,17); printf("%2.1f元\n",fee);

qingping(0); printf("确认您的车辆信息");

qingping(1); printf("按任意键继续");

getch();

while(s2->top>-1)

{ y=pop(s2);

f=push(s1,y);

}

n=DeLinkQueue(p);

if(n!=0)

{

y.num=n;

y.arrtime=x.arrtime;

f=push(s1,y);

printleave(p->front->num+1,position,s1->top+1); //出栈动画ji队列成员入栈

printlog(x.arrtime,x.num,0,'P',position,fee);

printlog(y.arrtime,y.num,1,'P',s1->top+1,0);

}

else

{

printleave(0,position,s1->top+2);

printlog(x.arrtime,x.num,0,'P',position,fee);

}

}

else //若栈中无x

{

while(s2->top > -1) //还原栈

{

y=pop(s2);

f=push(s1,y);

}

q=p->front;

f=0;

position=1;

while(f==0&&q->next!=NULL) //当队不空且未找到x

if(q->next->num!=x.num)

{

q=q->next;

position++;

}

else //找到x

{

q->next=q->next->next;

p->front->num--;

if(q->next==NULL)

p->rear=p->front;

gotoxy(33,17); printf("0:0");

gotoxy(48,17); printf("0元");

qingping(0); printf("您的车将离便道");

qingping(1); printf("按任意键继续");

getch();

printleave(-1,position,p->front->num+1); //出队动画

printlog(x.arrtime,x.num,0,'B',position,0);

f=1;

}

if(f==0) //未找到x

{

qingping(0); printf("停车场和便道上均无您的车");

qingping(1); printf("按任意键继续");

getch();

}

}

}

/*获取系统时间*/

//返回PTime类型

PTime get_time()

{

Time *t;

t=new Time;

time_t timer;

struct tm *tblock;

timer=time(NULL);

tblock=localtime(&timer);

t->minute=tblock->tm_min;

t->hour=tblock->tm_hour;

return t;

}

/*移动光标*/

//蒋光标移动到(x,y)点

void gotoxy(int x,int y)

{

COORD coord;

coord.X=x;

coord.Y=y+3;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); }

/*画图*/

//画出系统界面

void panitPL()

{

gotoxy(20,4);

printf("****************对话框****************");

int x=18,y=6; //起始点

int a[2][4]={2,0,0,1,-2,0,0,-1}; //方向

for(int i=0;i<2 ;i++)

{

for(int j=0; j<20; j++)

{

x+=a[i][0]; y+=a[i][1];

gotoxy(x,y);

printf("═");

}

x+=a[i][0]; y+=a[i][1];

gotoxy(x,y);

if(i==0)

printf("╗");

else

printf("╚");

for(j=0; j<12; j++)

{

x+=a[i][2]; y+=a[i][3];

gotoxy(x,y);

printf("║");

}

x+=a[i][2]; y+=a[i][3];

gotoxy(x,y);

if(i==0)

printf("╝");

else

printf("╔");

}

gotoxy(22,8);

printf("小王:");

gotoxy(22,11);

printf("顾客:");

gotoxy(22,14); printf("*********** 停车信息***********");

gotoxy(23,15); printf("车牌号:");

gotoxy(42,15); printf("时间:");

gotoxy(23,17); printf("停车时长:");

gotoxy(42,17); printf("收费:");

}

/*清屏函数*/

//更新对话框前将原对话晴空

void qingping(int a)

{

if(a==0) //清空小王的对话

{

gotoxy(28,8); printf(" ");

gotoxy(28,9); printf(" ");

gotoxy(28,8);

}

else if(a==1) //清空顾客的对话

{

gotoxy(28,11); printf(" ");

gotoxy(28,12); printf(" ");

gotoxy(28,13); printf(" ");

gotoxy(28,11);

}

else //清空车辆信息

{

gotoxy(31,15); printf(" ");

gotoxy(48,15); printf(" ");

gotoxy(33,17); printf(" ");

gotoxy(48,17); printf(" ");

gotoxy(31,15);

}

}

//用上下键移动选择

int getkey()

{

char c;

int x=28,y=11;

while(1)

{

gotoxy(x,11); printf(" ");

gotoxy(x,12); printf(" ");

gotoxy(x,13); printf(" ");

gotoxy(x,y); printf(">>");

c=getch();

if(c==13) return y-10; //enter键返回当前选项

if(c!=-32)continue; //不是方向键进行下次循环

c=getch();

if(c==72) if(y>11) y--; //上

if(c==80) if(y<13) y++; //下

}

}

//输入车辆信息

CarNode getcarInfo()

{

PTime T;

CarNode x;

qingping(0); printf("请输入您的车牌号\n");

qingping(1); printf("在下面输入车辆信息");

qingping(2);

scanf("%d",&(x.num));

T=get_time();

x.arrtime=*T;

gotoxy(48,15); printf("%d:%d",x.arrtime.hour,x.arrtime.minute);

getch();

return x;

}

//打印停车场

void printcar()

{

gotoxy(0,20); //╔ ╗╝╚═║

printf("═══════════════════════════════════════╗");

printf(" 出场暂放区║ 1 2 3 4 5 ║");

printf("---------------------------------------------------------------------- ║");

printf(" 主车道║");

printf("---------------------------------------------------------------------- ║");

printf(" 12 11 10 9 8 7 6 5 4 3 2 1 ║");

printf("═══════════════════════════════════╗ ║");

printf(" ↑ ╔══════════════╝ ║");

printf(" 便道停车区→ ║ 1 2 3 4 5 ║");

printf(" ╚══════════════════╝");

printf(" 停车场管理日志\n\n");

printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) "); }

//打印日志记录

void printlog(Time t,int n,int io,char ab,int po,double f)

{

jy++;

gotoxy(jx,jy);

// printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) ");

if(io==0)

printf("

/ %2.1f",f);

gotoxy(jx,jy);

printf(" / %d / %c:%d",io,ab,po);

gotoxy(jx,jy);

printf(" %d:%d / %d",t.hour,t.minute,n);

}

void printstop(int a,int num,int x0,int y0)

{

static char *car="【█】";

// int x0=0,y0=23;

int x=0,y=28;

if(a==0)

{

x=(num+6)*6;

for(;x0<72;x0++)

{

gotoxy(x0,y0); printf("%s",car); Sleep(30);

gotoxy(x0,y0); printf(" ");

}

for(;y0

{

gotoxy(x0,y0); printf("%s",car); Sleep(100);

gotoxy(x0,y0); printf(" ");

}

for(;x0>x;x0--)

{

gotoxy(x0,y0); printf("%s",car); Sleep(50);

gotoxy(x0,y0); printf(" ");

}

gotoxy(x,y);

printf("%s",car);

}

else

{

x=(12-num)*6;

y=y-3;

for(;x0

{

gotoxy(x0,y0); printf("%s",car); Sleep(30);

gotoxy(x0,y0); printf(" ");

}

gotoxy(x,y);

printf("%s",car);

}

}

void printleave(int a,int po,int num)

{

static char *car="【█】";

int x0=0,y0=23;

int x=0,y=28;

int i;

if(a==-1)

{

x=(12-po)*6;

y=y-3;

gotoxy(x,y); printf(" ");

gotoxy(x,y-2); printf("%s",car);

Sleep(100);

if(12>num)

{

gotoxy((12-num)*6,y);

printf(" ");

}

gotoxy(x,y); printf("%s",car);

for(;x>x0;x--)

{

gotoxy(x,y-2); printf("%s",car); Sleep(30);

gotoxy(x,y-2); printf(" ");

}

}

else

{

i=num+1;

for(;num>po;num--)

{

x=(num+6)*6; y=28;

for(;x<72;x++)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

for(;y>21;y--)

{

gotoxy(x,y); printf("%s",car); Sleep(50);

gotoxy(x,y); printf(" ");

}

for(;x>(i-num+6)*6;x--)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

gotoxy(x,y); printf("%s",car);

}

x=(po+6)*6; y=28;

for(;x<72;x++)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

for(;y>23;y--)

{

gotoxy(x,y); printf("%s",car); Sleep(50);

gotoxy(x,y); printf(" ");

}

for(;x>0;x--)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

num++;

for(;i-num>0;num++)

{

x=(i-num+6)*6; y=21;

for(;x<72;x++)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

for(;y<28;y++)

{

gotoxy(x,y); printf("%s",car); Sleep(50);

gotoxy(x,y); printf(" ");

}

for(;x>(num-1+6)*6;x--)

{

gotoxy(x,y); printf("%s",car); Sleep(30);

gotoxy(x,y); printf(" ");

}

gotoxy(x,y); printf("%s",car);

}

if(a>0)

{

x=66;

y=25;

gotoxy(x,y); printf(" ");

gotoxy(x,y-2); printf("%s",car); Sleep(100);

if(12>a)

{

gotoxy((12-a)*6,y);

printf(" ");

}

if(a>1)

{

gotoxy(x,y); printf("%s",car);

}

printstop(0,i-1,x,y-2);

}

}

}

/************************************************************ main ********************************************************/

int main(void)

{

SqStackCar s1,s2; //停车栈和暂存栈

LinkQueueCar p; //队列

InitSeqStack(&s1);

InitSeqStack(&s2);

InitLinkQueue(&p);

printf(" 停车场管理系统\n\n");

printf("************************* 欢(=^_^=)迎***************************\n");

printf(" 收费标准:基础费0.5元,每分钟收取0.05元,收费精确到0.1元\n");

printf(" PS:车牌号由阿拉伯数字组成");

panitPL();

printcar(); gotoxy(0,-3);

char c=0; //接受按键

while(1) //按ESC退出系统

{

for(int i=2;i>-1 ;i--) //初始化对话框

qingping(i);

printf("按ESC退出系统,其它键开始对话");

c=getch();

if(c==Esc)

{

qingping(0);

break;

}

while(1)

{

qingping(2);

gotoxy(28,8); printf("欢迎来到停车场!我是管理员小王。");

gotoxy(28,9); printf("请您按↑↓选择需要的服务");

gotoxy(28,11); printf(" 1.我要停车");

gotoxy(28,12); printf(" 2.我要取车");

gotoxy(28,13); printf(" 3.结束对话"); //打印对话框完成

int a=getkey();

if(a==Exit)

{

printf("结束服务。");

break;

}

switch(a)

{

case Stop: //停车

Arrive(&s1,&p,getcarInfo() );

break;

case Drive: //取车

Leave(&s1,&s2,&p,getcarInfo() );

break;

}

}

}

return 0;

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

数据结构课程设计题目

数据结构课程设计 一、教学目的和要求 课程设计是加强学生实践能力的一个强有力手段。综合课设 1主要针对数据结构和 C/C++语言开展 的实践性课程。要求学生掌握数据结构的应用、算法的编写、类 C 语言的算法转换成 C ( C++)程序并 上机调试的基本方法。 课程设计要求学生在完成程序设计的同时能够写出比较规范的课程设计报告。 培 养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。 、课程设计要求 1、 选好题目: 每题一人, 每班每个题目只允许一人选做 ,学习委员将选题情况在课设第一天统计上交。 2、 课设报告 独立思考,独立完成: 课设报告出现雷同超过 60% ,不论什么原因,一律不及格。 班和班之间,相同题目的同学,可以组成小组,相互讨论,共同完成课程设计中各任务的设计和调试 要求。小组成员间, 算法思路可以相同, 程序可以类似, 但不能完全一样。 课设报告不能雷同超过 60% 。 3、 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置 方法,准备好有关的文件。 4、 设计要点: ⑴需求分析: 在该部分中叙述总共几个模块,每个模块的功能要求。 ⑵系统设计 总体设计:定义某个数据结构的抽象数据类型及其他算法的功能说明。 详细设计:在此定义存储结构,每个部分的算法设计说明(建议描述算法采用流程图) 。 ⑶编码实现 各个算法实现的源程序,对每个题目要有相应的源程序(每个功能模块采用不同的函数实现) 。源程 序要按照程序的规则来编写, 要结构清晰, 重点函数的重点变量, 重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能,尽量避免出现操作失误时出现死循环。 ⑷调试分析 给出实现功能的一组或多组测试数据, 程序调试后, 将按照此测试数据进行测试的结果列出来。 时间 复杂度分析,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?) ,算法的改进设 想。 ⑸课设总结: 课程设计过程的收获、 遇到问题、 遇到问题解决问题过程的思考、 程序调试能力的思考、 对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。 5、 实现的结果必须进行检查和演示; 程序源代码和程序的说明文件必须上交, 作为考核内容的一部分; (上交时文件夹的取名规则为: “课设题目( *** 设计完成) ”,如“资源管理系统的设计与实现(张三设 计完成) ”。该文件夹下包括三个目录: “源代码 ”、 “可执行文件 ”、 “张三 _课程设计报告 ”。由学习委员 按规定时间统一上交) 。 6、报告提交 形式:纸介质(要求B5纸张打印,加封皮)和电子文档。 三、考核方法和内容 根据课程设计过程中学生的学生态度、 题目完成情况、 课程设计报告书的质量和回答问题的情况等 按照 10%、 40%、 30%、 20% 加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。 评分标准: 任务书( 签名,把题目要求贴在相应位置,注意下划线 ) ---------- 目录(注意目录的格式,页码) -------- 1、设 计任务( 题目要求 ) ---- 2 、需求分析( 准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪 些函数?为什么要这样设计?最后列出抽象数据类型定义 ) ----------- 3 、系统设计( 设计实现抽象数据类型, 包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程 图等 ) 4 、编码实 现( 重要函数的实现代码 ) --------------------------- 5 、调试分析( 选择多组测试数据、运行截图、结 果分析 ) ---- 6、课设总结( 心得体会 ) ----- 7 、谢辞 8 、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在 10—15页内,报告中不能全是代码, 报告中代码总量控制在150行内。 版式:无页眉,有页码,页码居中 优秀: 答辩所有问题都能答出 良好: 答辩所有问题都能答出 中等: 答辩大部分问题能答出 及格: 答辩大部分问题能答出 不及格:答辩几乎答不出问题 课设报告的装订顺序如下: + 报告良好 +报告一般 + 报告良好 +报告一般 或者 报告几乎都是代码 或者 雷同部分达到 60%

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构课程设计-学生成绩管理系统

淮阴工学院 数据结构课程设计报告 选题名称:学生成绩管理系统 系(院):数理学院 专业:信息与计算科学 班级:计科1102班 姓名:徐连喜学号: 1104101233 指导教师:周海岩 学年学期:2011 ~ 2012 学年第 1 学期 2012 年06 月06 日

【摘要】 21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL查询语言实现的。重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。 【关键词】 成绩管理;成绩查询;C++

目录 中文摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 1 1绪论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 4 1.1 选题背景。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 5 1.2 需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 6 2总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7 2.1程序设计组成框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8 2.2 模块功能说明。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。9 2.3 程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10 2.4 主要函数之间相互调用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11 3 在设计过程中的感受。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12 致谢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13 参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14附录:源程序清单。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

数据结构课程设计小结5篇

数据结构课程设计小结5篇一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。我这次设计的科目是数据结。 数据结构,是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。作为一门独立的课程在国外是从20XX年才开始设立的。20XX年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算

机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。 通过这次模具设计,我在多方面都有所提高。 一、编译工具VisualC++ 很多程序在结构上是独立的,但是本此设计的程序功能不是零散的,它有一个连接是的程序是一个整体,怎样达到这种统一体呢?因为这个输出连接是贯穿始终的。说到这,就应该说以下我所应用的调试工具,也就是运行环境VisualC++,可以充分利用Windows的支持剪贴版和英文的特点。正是在实现循环链表的程序中充分利用这个特点,才能制作出全汉化的初始化画面。 二、巩固和温习了C语言 在界面设置中使用函数调用while。其中文本显示颜色和背景颜色都可以任意按照自己的喜好,任意改变,但改变的时候必须采用标准英文大写,同时在制作显示菜单的窗口,大小根据菜单条数设计。最后采用printf输出程序设计界面。 这次的程序软件基本上运行成功,可以简单的建立链式循环链表,并进行输出,及循环语句的运用和选择语句的控制。由于时间和知识上的限制,使得程序规模相对较小,即

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,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)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

数据结构课程设计

课程设计说明书 课程名称:数据结构和算法 设计题目:多种排序 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计科嵌入式(12-1) 指导教师: 年月日

课程设计任务书 设计题目表达式计算程序设计 学生姓名所在院系计科专业、年级、班12计科(嵌入式)设计要求: 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排 序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出 其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt 文件。 学生应完成的工作: 1. 利用随机函数产生N 个随机整数(10000 以上)。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 《数据结构(C 语言版)》严蔚敏清华大学出版社 2. 《C 语言程序设计》丁峻岭中国铁道出版社 3. 《C 程序设计》谭浩强清华大学出版社 工作计划: 任务下达日期:年月日 任务完成日期:年月日 指导教师(签名):学生(签名):

多种排序 摘要: 排序是算法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。 关键词: 归并排序快排排序选择排序冒泡排序 插入排序堆排序希尔排序内部排序

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

数据结构课程设计报告,含菜单

算法与数据结构课程设计 报告 系(院):计算机科学学院 专业班级:计科11005 姓名:张林峰 学号: 201003784 指导教师:詹泽梅 设计时间:2012.6.11 - 2012.6.18 设计地点:12教机房

目录 一、课程设计目的 (2) 二、设计任务及要求 (2) 三、需求分析 (2) 四、总体设计 .............. 错误!未定义书签。 五、详细设计与实现[含代码和实现界面].. 8 六、课程设计小结 (15)

一.设计目的 1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 5.培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二.设计任务及要求 根据《算法与数据结构》课程的结构体系,设计一个基于DOS菜单的应用程序。要利用多级菜单实现各种功能。比如,主界面是大项,主要是学过的各章的名字诸如线性表、栈与队列、串与数组及广义表等,子菜单这些章中的节或者子节。要求所有子菜单退出到他的父菜单。编程实现时,要用到C++的面向对象的功能。 三.需求分析 菜单运用极其广泛,应用于各行各业。菜单运用起来极其方便。随着社会的发展,社会的行业出现多样化,也就需要各式

数据结构课程设计报告-学生成绩管理系统[]

武汉理工大学华夏学院课程设计报告书 课程名称:数据结构课程设计 题目:用C语言实现成绩统计程序的设计系名:信息工程系 专业班级:计算机1121 姓名:吴涛 学号:10210412104 指导教师:司晓梅 2016年3 月20日

武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:数据结构课程设计指导教师:司晓梅班级名称:计算机1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C语言实现成绩统计程序的设计 〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间:1周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天~第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准

数据结构课程设计心得体会

数据结构课程设计心得体会数据结构课程设计心得体会怎么写,以下是XX精心整理的相关内容,希望对大家有所帮助! 数据结构课程设计心得体会这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了C 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还

没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件基础语言。在这次课程设计中,硬件基础语言。在这次课程设计中,虽然不会成功的编写一个完整的程序,但是在看程序的过程中,个完整的程序,但是在看程序的过程中,不断的上网查资料以及翻阅相关书籍,通过不断的模索,测试,发现问题,以及翻阅相关书籍,通过不断的模索,测试,发现问题,解 决问题和在老师的帮助下一步一步慢慢的正确运行程序,决问题和在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次课程设计,于完成了这次课程设计,虽然这次课程设计结束了但是总觉得自已懂得的知识很是不足,学无止境,得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。力深入的学习。 数据结构课程设计心得体会本次课程设计,使我对《数

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

相关文档