数据结构停车场管理系统.docx
《数据结构停车场管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构停车场管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
![数据结构停车场管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/31/274df6de-c146-416d-b782-65b9fbd99e03/274df6de-c146-416d-b782-65b9fbd99e031.gif)
数据结构停车场管理系统
数据结构课程设计
实验报告的书写要求
1、问题描述。
2、解题思路的描述:
(1)数据结构的选择和描述;
(2)主要算法的功能和描述(用框图或其他形式均可)。
3、源程序清单及实例的运行结果(源程序中应该附有必要的注释)。
4、小结,包括:
(1)说明遇到的问题及解决方法;
(2)算法复杂性分析;
(3)关于程序的特色和改进设想;
(4)其他需要说明的情况。
5、报告的叙述应该简单明确、切合实际、一目了然。
实验名称:
停车场的程序实验日期:
2010.12.5
一、课程设计要求
1、自行设计,独立完成。
2、根据项目任务,设计主要算法及流程。
3、设计测试数据。
4、列出程序清单(加有必要的注释)
5、列出程序的运行结果。
二、课程设计任务描述
利用线性链表实现学生成绩管理系统,具体功能:
输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。
3、课程设计目的
1、握线性链表的建立。
2、掌握线性链表的基本操作。
3、掌握查找的基本算法。
四、程序清单及运行结果(列出程序清单,写出运行结果)
#include"stdio.h"
#include"stdlib.h"
#include"ctype.h"
#include"alloc.h"
#include"conio.h"
#include"string.h"
structstudent
{
intnum;
charname[10];
intage;
intclass;
}r[20];
menu_select()
{
char*menu[]={"***************MENU***************",
"0.createlist",
"1.sortbynum(shellsort)",
"2.sortbyage(Bubblesort)",
"3.sortbyclass(easysort)",
"4.searchbyname",
"5.searchbynameandnum",
"6.exit"};
chars[3];
intc,i;
gotoxy(1,80);
printf("\npressanykeyentermenu......\n");
getch();
clrscr();
gotoxy(1,3);
textcolor(YELLOW);
putch(0xc9);
gotoxy(2,3);
for(i=2;i<70;i++)
putch(0xcd);
putch(0xbb);
for(i=4;i<17;i++)
{
gotoxy(1,i);putch(0xba);
gotoxy(70,i);putch(0xba);
}
gotoxy(1,17);
putch(0xc8);
for(i=3;i<71;i++)
putch(0xcd);
putch(0xbc);
for(i=0;i<8;i++)
{gotoxy(15,7+i);
cprintf("%s",menu[i]);
}
textbackground(BLACK);
gotoxy(30,20);
do
{
textcolor(YELLOW);
printf("\nEnteryouchoice(0~6):
");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>6);
returnc;
}
voidsearch(structstudentd[20],intn)
{
inti;
charm[10];
intflag=0;
structstudent*q;
q=d;
printf("pleaseenterthenamethatyouwanttosearch");
scanf("%5s",&m);
for(i=0;i{
if((strcmp(m,q->name)==0))
{clrscr();
flag=1;
printf("\nsucess!
!
");
printf("\ntheinformationofthestudentis:
\n");
printf("num:
%2d",q->num);
printf("name:
%2s",q->name);
printf("age:
%2d",q->age);
printf("class:
%2d",q->class);
}
if(!
flag)
printf("Itdoesn'texist!
!
");
}
}
voidsearchzuhe(structstudentd[20],intn)
{
inti;
intnum1;
charm[10];
structstudent*p;
p=d;
printf("pleaseenterthenamethatyouwanttosearch");
scanf("%5s",&m);
printf("pleaseenterthenumthatyouwanttosearch");
scanf("%5d",&num1);
for(i=0;i{
if(((strcmp(m,p->name)==0))&&(strcmp(num1,p->num)==0))
{clrscr();
printf("\nsucess!
!
");
printf("\ntheinformationofthestudentis:
\n");
printf("num:
%2d",p->num);
printf("name:
%2s",p->name);
printf("age:
%2d",p->age);
printf("class:
%2d",p->class);
}else
printf("Itdoesn'texist!
!
");
}
}intcreate()
{inti,j;
printf("pleaseenterthetotalnumberyouwantyoinsert:
");
scanf("%d",&i);
for(j=0;j
{printf("pleaseentertheinformationofthe%dstudent",j+1);
printf("\npleaseenterthenumber");
scanf("%4d",&r[j].num);
printf("\npleaseenterthename");
scanf("%s",&r[j].name);
printf("\pleaseentertheage");
scanf("%d",&r[j].age);
printf("\npleaseentertheclass");
scanf("%d",&r[j].class);
}return(i);
}voidprint(structstudenta[20],intn)
{
inti;
clrscr();
for(i=0;i{
textcolor(YELLOW);
printf("\n\n\n****************************TheSTUDENT********************************\n");printf("num:
%2d",a[i].num);
printf("name:
%2s",a[i].name);
printf("age:
%2d",a[i].age);
printf("class:
%2d",a[i].class);
}
}
voidshell(structstudenta[20],intn)
{
inti,j,k;
charstr1[10],str2[10],str3[10],str4[10];
for(i=n;i>=1;i--)
{
a[i].num=a[i-1].num;
a[i].age=a[i-1].age;
a[i].class=a[i-1].class;
strcpy(str1,a[i-1].name);
strcpy(a[i].name,str1);
}
k=n/2;
while(k>=1)
{
for(i=k+1;i<=n;i++)
{
a[0].num=a[i].num;
a[0].age=a[i].age;
a[0].class=a[i].class;
strcpy(str2,a[i].name);
strcpy(a[0].name,str2);
j=i-k;
while((a[j].num>a[0].num)&&(j>=0))
{
a[j+k].num=a[j].num;
a[j+k].age=a[j].age;
a[j+k].class=a[j].class;
strcpy(str3,a[j].name);
strcpy(a[j+k].name,str3);
j=j-k;
}
a[j+k]=a[0];
}
k=k/2;
}
for(i=0;i{
a[i].num=a[i+1].num;
a[i].age=a[i+1].age;
a[i].class=a[i+1].class;
strcpy(str4,a[i+1].name);
strcpy(a[i].name,str4);
}
printf("theshellresultis:
\n");
}
voidbubblesort(structstudenta[20],intn)
{
inti=0;
intj;
inttag,x,y,z;
charstr1[10],str2[10];
do
{
tag=0;
for(j=n-1;j>i;j--)
if(a[j].age{
x=a[j].age;
y=a[j].num;
z=a[j].class;
a[j].age=a[j-1].age;
strcpy(str1,a[j-1].name);
strcpy(str2,a[j].name);
strcpy(a[j].name,str1);
a[j].class=a[j-1].class;
a[j].num=a[j-1].num;
a[j-1].age=x;
a[j-1].num=y;
a[j-1].class=z;
strcpy(a[j-1].name,str2);
tag=1;
}
i++;
}while(tag==1&&i}
voideasysort(structstudentc[20],intn)
{
inti,j,x,z,y,l;
charstr1[10],str2[10];
for(i=0;i<=n-1;i++)
{
z=i;
for(j=i+1;j<=n-1;j++)
if(c[j].classz=j;
{
x=c[i].class;
y=c[i].age;
l=c[i].num;
strcpy(str1,c[i].name);
strcpy(str2,c[z].name);
c[i].class=c[z].class;
c[i].age=c[z].age;
c[i].num=c[z].num;
strcpy(c[i].name,str2);
c[z].class=x;
c[z].age=y;
c[z].num=l;
strcpy(c[z].name,str1);
}
}
}
main()
{
intnumber;
for(;;)
{
switch(menu_select())
{
case0:
{clrscr();
number=create();
print(r,number);
}break;
case1:
{
clrscr();
shell(r,number);
print(r,number);
}break;
case2:
{
clrscr();
bubblesort(r,number);
print(r,number);
}break;
case3:
{clrscr();
easysort(r,number);
print(r,number);
}break;
case4:
{
clrscr();
search(r,number);
}break;
case5:
{
clrscr();
searchzuhe(r,number);
}break;
case6:
exit(0);}}}
停车场主界面:
车子进入停车场:
车子不进入停车场:
stoponstreet:
想进入停车场的截图:
不想进入停车场的截图:
离开停车场的截图为:
输出停车场中的所有信息的截屏为:
五、总结检验
1、是否达到课程设计目的?
何处体现?
这个程序达到了最终的目的,实现了队、栈的操作及其特点;通过实现改程序的运行可以得到结果。
2、哪些地方使你困惑?
你是如何解决的?
还是有一些代码不能够熟练地、快速地深刻理解部分代码,比如说是出队、出栈操作;通过向老师请教获得更进一步的理解,最总明白了整个程序代码,深刻理解两种特殊线性表在实际生活中的应用。
3、你认为哪些知识点重要,必须牢记?
对于特殊线性表这方面的知识,我认为应该抓住基础,深刻理解、融会贯通他们的基本操作,重点是定义,栈的顺序存储结构的运算,应用(算术表达式的应用),中缀表达式转换为等价的后缀表达式;还有就是队列的顺序存储结构及其运算,入队、出队,循环队列的基本操作和应用;队列的链式存储结构的基本操作,它的应用(了解键盘输入讯缓冲区的问题),我们还应给了解什么是一种受限制的特殊线性表。
成绩
6、教师评语及成绩
评语:
指导教师:
日期:
实验名称:
学生成绩管理系统实验日期:
2010.12.06
一、课程设计要求
1、自行设计,独立完成。
2、根据项目任务,设计主要算法及流程。
3、设计测试数据。
4、列出程序清单(加有必要的注释)
5、列出程序的运行结果。
二、课程设计任务描述
1.掌握线性链表的建立。
2.掌握线性链表的基本操作。
3掌握查找的基本算法。
三、课程设计目的
1.写出系统需求分析,并建模。
2.编程实现,界面友好。
3.输出操作前后的结果。
四、程序清单及运行结果(列出程序清单,写出运行结果)
#include"stdio.h"
#include"stdlib.h"
#include"ctype.h"
#include"alloc.h"
#include"conio.h"
#include"string.h"
structstudent
{intnum;
charname[10];
intage;
intclass;
}r[20];/*定义一个结构体变量r[20]*/
menu_select()
{char*menu[]={"***************MENU***************",/*字符型的菜单数组*/
"0.createlist",
"1.sortbynum(shellsort)",
"2.sortbyage(Bubblesort)",
"3.sortbyclass(easysort)",
"4.searchbyname",
"5.searchbynameandnum",
"6.exit"};
chars[3];
intc,i;/*定义两个整型变量c和i*/
gotoxy(1,80);
printf("\npressanykeyentermenu......\n");/*打印输出按任何键进入菜单选项*/
getch();
clrscr();
gotoxy(1,3);
textcolor(RED);/**/
putch(0xc9);
gotoxy(2,3);
for(i=2;i<70;i++)
putch(0xcd);
putch(0xbb);
for(i=4;i<17;i++)
{
gotoxy(1,i);putch(0xba);
gotoxy(70,i);putch(0xba);
}
gotoxy(1,17);
putch(0xc8);
for(i=3;i<71;i++)
putch(0xcd);
putch(0xbc);
for(i=0;i<8;i++)
{gotoxy(15,7+i);
cprintf("%s",menu[i]);
}
textbackground(BLACK);/*文本的背景色为黑色*/
gotoxy(30,20);
do
{textcolor(RED);
printf("\nEnteryouchoice(0~6):
");/*选项0到6*/
scanf("%s",s);
c=atoi(s);
}while(c<0||c>6);/*选择循环条件满足*/
returnc;/*函数返回值为c*/
}
voidsearch(structstudentd[20],intn)/*主查找函数;学生总个数为20,循环变量为n*/
{
inti;
charm[10];
intflag=0;/*flag初始值赋0*/
structstudent*q;
q=d;/*把d的值赋给指针q*/
printf("pleaseenterthenamethatyouwanttosearch");
scanf("%5s",&m);
for(i=0;i{
if((strcmp(m,q->name)==0))/*比较字符串;指针q指向name*/
{clrscr();
flag=1;
printf("\nsucess!
!
");
printf("\ntheinformationofthestudentis:
\n");
printf("num:
%2d",q->num);
printf("name:
%2s",q->name);
printf("age:
%2d",q->age);
printf("class:
%2d",q->class);
}
if(!
flag)
printf("Itdoesn'texist!
!
");
}
}voidsearchzuhe(structstudentd[20],intn)/*主查找组合函数*/
{inti;
intnum1;
charm[10];
structstudent*p;
p=d;
printf("pleaseenterthenamethatyouwanttosearch");
scanf("%5s",&m);
printf("pleaseenterthenumthatyouwanttosearch");/*请键入你要的菜单项*/
scanf("%5d",&num1);
for(i=0;i{if(((strcmp(m,p->name)==0))&&(strcmp(num1,p->num)==0))
{clrscr();
printf("\nsucess!
!
");/*查找成功*/
printf("\ntheinformationofthestudentis:
\n");
printf("num:
%2d",p->num);
printf("name:
%2s",p->name);
printf("age:
%2d",p->age);
printf("class:
%2d",p->class);
}
else
printf("Itdoesn'texist!
!
");/*否则输出不存在*/
}
}intcreate()/*建立学生信息库*/
{inti,j;
printf("pleaseenterthetotalnumberyouwantyoinsert:
");
scanf("%d",&i);/*从键盘取值*/
for(j=0;j
{printf("pleaseentertheinformationofthe%dstudent",j+1);
printf("\npleaseenterthenumber");
scanf("%4d",&r[j].num);
printf("\npleaseenterthename");
scanf("%s",&r[j].name);
printf("\pleaseentertheage");
scanf("%d",&r[j].age);
printf("\npleaseentertheclass");
scanf("%d",&r[j].class);
}return(i);/*返回输入的总数*/
}voidprint(structstudenta[20],intn)
{
inti;
clrscr();/*清屏*/
for(i=0;i{textcolor(RED);/*文本颜色为黄色*/
printf("\n\n\n****************************TheSTUDENT********************************\n");
printf("num:
%2d",a[i].num);
printf("name:
%2s",a[i].name);
printf("age:
%2d",a[i].age);
printf("class:
%2d",a[i].cla