排考场座位程序.docx

上传人:b****5 文档编号:12221265 上传时间:2023-04-17 格式:DOCX 页数:22 大小:179.70KB
下载 相关 举报
排考场座位程序.docx_第1页
第1页 / 共22页
排考场座位程序.docx_第2页
第2页 / 共22页
排考场座位程序.docx_第3页
第3页 / 共22页
排考场座位程序.docx_第4页
第4页 / 共22页
排考场座位程序.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

排考场座位程序.docx

《排考场座位程序.docx》由会员分享,可在线阅读,更多相关《排考场座位程序.docx(22页珍藏版)》请在冰豆网上搜索。

排考场座位程序.docx

排考场座位程序

 

《高级语言程序设计》课程设计

说明书

 

设计题目:

排考场座位程序

 

1.设计任务

2.需求分析

3.系统模块图

4.模块说明

5.用户使用说明

6.部分程序流程图

7.测试结果

8.程序设计小结

9.参考文献

附录

 

1.设计任务

假设考场有8行8列的座位,每当一个学生进入考场就为他安排座位。

主界面如下:

当选择1,用户输入准考证号,随机产生该学生座位的行号和列号,要求一个考生只有一个座位,已有考生的位置上不能再安排新的考生;

当选择2,取消某人的考场座位;

当选择3,输入行号列号,输出该考生的准考证号;

当选择4,输入某学生的准考证号,输出该学生的座位。

当选择5,输出次考场所有考生信息。

2.需求分析

本程序除了可以应用于安排考场座位上,也可以应用在订票系统,学生信息管理系统以及酒店的入住登记等方面.

3.系统模块图

 

4.模块说明

模块一:

考生座位安排

实现方法:

系统根据用户输入的准考证号和姓名,利用rand()函数随机产生该考生座位的行号和列号,同时可以实现一个考生只有一个座位,而且在已有考生的位置上不会再安排新的考生。

输入的同时系统利用链表将输入的数据信息存入计算机内存中。

模块二:

取消某考生考场座位

实现方法:

系统通过用户输入的准考证号,利用循环结构找出与该准考证号相符的考生座位信息,同时清空链表中的记录该考生信息的节点。

模块三:

查找该考场考生信息

实现方法:

系统通过用户输入的座位的行号和列号,利用循环结构找出与该座位信息相符的考生的信息,然后输出该考生的信息。

模块四:

查找该考场某考生座位

实现方法:

系统通过用户输入的准考证号,利用循环结构找出与该准考证号相符的考生座位信息,然后输出该考生的信息。

模块五:

显示该考场所有考生信息

实现方法:

系统通过循环结构将计入链表中的信息有次序的全部输出

 

5.用户使用说明

在开始界面,用户键入任意键继续

用户键入1,用户输入准考证号和姓名,系统随机该考生座位的行号和列号,要求做到一个考生只有一个座位,而且在已有考生的位置上不能再安排新的考生;

用户键入2,取消某人考场座位(假设取消后的座位别人能坐);

用户键入3,用户需输入座位的行号和列号,然后显示该座位学生的信息;

用户键入4,用户需输入某考生准考证号,然后显示该学生的座位;

用户键入5,显示该考场每位考生的基本信息;

用户键入6,退出系统;

注:

在用户输入命令界面,如果用户输入了1—6之外的其他数字、字符或符号系统自动报错,并返回用户命令界面。

 

6.部分程序流程图

6.1考生座位安排

6.1.1考生座位安排模块源程序

/*选择1,为新来的考生安排座位,方法:

用户输入准考证号和姓名,系统随机产生*/

/*该考生座位的行号和列号,要求做到一个考生只有一个座位,而且在已有考生的位*/

/*置上不能再安排新的考生;*/

voidfun1()

{

inth=0,l=0,i,j,f=1,f2=1;structnode*q,*p,*r;

if(count==HANG*LIE)

printf("\t\t\tTheroomisfull!

\n");

else

while

(1)

{

f=1;

h=rand()%HANG+1;

l=rand()%LIE+1;

r=head;

p=head->next;

if(f2)

get_id();

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{printf("\t\t\tTheIDhasexited!

\n");f=0;break;}

else

if((p->hang==h)&&(p->lie==l))

{

f=2;f2=0;

break;

}

else

{

r=p;

p=p->next;

}

}

if(f==1)

{

get_name();

q=(structnode*)malloc(sizeof(structnode));

r->next=q;

q->hang=h;

q->lie=l;

strcpy(q->ID,ID);

strcpy(q->name,name);

q->next=NULL;

count++;

printf("\t\t\t******ADDSUCCESS!

******\n\n");

printf("\t\t\tID:

%s\n\t\t\tname:

%s\n\t\t\tPosition:

(%d,%d)\n",ID,name,h,l);

break;

}

if(f==0)

break;

}

}

6.1.2考生座位安排模块流程图

开始

输入用户信息

是否继续进行?

结束

返回主菜单

Y

输入命令1

 

6.2取消某考生考场座位模块源程序

/*选择2,取消某人考场座位(假设取消后的座位别人能坐)*/

voidfun2()

{

structnode*p,*r;

intf=1;

p=head->next;r=head;

printf("\t\t\tPleaseinputtheID:

");

scanf("%s",ID);

printf("\n");

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{

r->next=p->next;

count--;

f=0;

printf("\t\t\t******DeleteSUCCESS!

******\n\n");

break;

}

else

{

r=p;

p=p->next;

}

}

if(f==1)

{

printf("\t\t\tTheIDisnotexit!

!

\n\n");

}

}

6.2.2取消某考生考场座位模块流程图

 

开始

输入要删除

考生的学号

是否找到?

删除数据

显示成功

显示没有找到

Y

结束

开始

6.3.1查找考生信息源程序

/*选择3,4,显示考场座次表,要求再每个座位对应的行列上显示该考生的准考证号*/

voidfun3()

{unsignedh,l,f=1;structnode*p=head->next;

printf("\t\t\tPleaseinputtheposition:

");scanf("%d,%d",&h,&l);printf("\n");

while(p!

=NULL)

{

if((p->hang==h)&&(p->lie==l))

{

printf("\t\t\t******SELECTSUCCESS!

******\n\n");

printf("\t\t\tID:

%s\n\t\t\tname:

%s\n\n",p->ID,p->name);f=0;break;

}

elsep=p->next;

}

if(f==1)printf("\t\t\tNOONEexit!

!

\n\n");

}

voidfun4()

{

structnode*p=head->next;

unsignedf=0;

get_id();

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{

printf("\t\t\t******FIND!

******\n\n");

printf("\t\t\tPosition:

(%d,%d)\n",p->hang,p->lie);

f=1;

break;

}elsep=p->next;

}

if(f==0)

printf("\t\t\tFAILE:

TheIDisnotexit!

\n\n");

}

6.3.2查找考生信息流程图

开始

输入查找的方式:

3.座位号;4.ID

是否找到?

显示找到的记录

提示没找到

Y

结束

Y

是否继续查找?

返回主菜单

 

7.测试结果

7.1开始界面:

7.2菜单界面:

7.3功能一:

考生座位安排

7.3.1安排座位:

7.3.2某座位已有人就坐:

7.3.3考场已满:

7.4功能二:

取消某考生考场座位

7.4.1取消预订座位

7.4.2取消失败,没有该考号考生

7.5功能三:

根据考生座位信息查考生个人信息

7.5.1找到该考生输出其个人信息

7.5.2该座位未安排考生

7.6功能四:

根据学号查找某学生座位信息

7.6.1找到该考生输出其座位信息

7.6.2没有该学号的考生

7.7功能五:

输出该考试所有考生信息

8.程序设计总结

本次程序设计由于完成仓促,虽然想要实现的功能均可以实现,但是,仍然会有不可预测的错误,例如:

当完成某一项任务之后,当用户输入命令以外数字系统有时没有报错,而是执行前一个操作的功能;同时,当用户输入了正确的的命令之后系统不会立即回应,有时出不来结果;但编译时系统也不报错,而且这种错误只是偶发性的,总的运行结果还不错。

在本次程序设计过程中,感受最深的是:

细节决定成败,有的时候就是一个点号的错误,会让你纠结半个小时;其次,还是要有扎实的基本功,编程不是粘贴和复制也不是拿着别人的程序找错,如果不亲手去写程序,没有练好编程基本功即使你的想法再好也只是天方夜谭。

最后,送给自己一句话,有想法是好事,动手实践才能出成果。

9.参考文献

[1]谭浩强.C程序设计(第3版).北京:

高等教育出版社,2006

[2]刘玮玮,汪晓平.C语言高级实例解析.清华大学出版社,2004

附录

源程序

#include"stdlib.h"

#include"Stdio.h"

#include"Conio.h"

#defineHANG2

#defineLIE2

typedefstructnode{

unsignedhang;

unsignedlie;

charID[20];

charname[20];

structnode*next;

};

unsignedcmd,count;

structnode*head;

charID[20],name[20];

unsignedget_cmd()

{

system("cls");

printf("\n\n");

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

printf("\t\t\t1.SeatArrangement\n");printf("\t\t\t2.SeatCancelled\n");

printf("\t\t\t3.Findthearrangedstudent\n");

printf("\t\t\t4.Findthearrangedseat\n");

printf("\t\t\t5.Displayalltheinformation\n");

printf("\t\t\t6.Exit\n");

printf("\n\t\t\tPleaseinputthecommand:

");

scanf("%d",&cmd);

printf("\n");

returncmd;

}

voidstart()

{

inti,j;

printf("\n\n");

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

{

printf("\t");

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

printf("*");

printf("\n");}

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

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

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

printf("\t**************\tSubject:

SeatArrangementSystem\t\t************\n");

printf("\t**************\tClass:

20101461\t\t\t\t************\n");

printf("\t**************\tStudentID:

2010146143\t\t\t************\n");

printf("\t**************\tName:

Wanyan\t\t\t\t************\n");

printf("\t**************\tComletionDate:

2011/11/29\t\t************\n");

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

{

printf("\t");

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

printf("*");

printf("\n");}

system("pause");

}

 

voidget_id()

{

printf("\t\t\tPleaseinputstudentID:

");

scanf("%s",ID);

printf("\n");

}

voidget_name()

{

printf("\t\t\tPleaseinputstudentname:

");

scanf("%s",name);

printf("\n");

}

voidfun1()

{

inth=0,l=0,i,j,f=1,f2=1;structnode*q,*p,*r;

if(count==HANG*LIE)

printf("\t\t\tTheroomisfull!

\n");

else

while

(1)

{

f=1;

h=rand()%HANG+1;

l=rand()%LIE+1;

r=head;

p=head->next;

if(f2)

get_id();

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{printf("\t\t\tTheIDhasexited!

\n");f=0;break;}

else

if((p->hang==h)&&(p->lie==l))

{

f=2;f2=0;

break;

}

else

{

r=p;

p=p->next;

}

}

if(f==1)

{

get_name();

q=(structnode*)malloc(sizeof(structnode));

r->next=q;

q->hang=h;

q->lie=l;

strcpy(q->ID,ID);

strcpy(q->name,name);

q->next=NULL;

count++;

printf("\t\t\t******ADDSUCCESS!

******\n\n");

printf("\t\t\tID:

%s\n\t\t\tname:

%s\n\t\t\tPosition:

(%d,%d)\n",ID,name,h,l);

break;

}

if(f==0)

break;

}

}

voidfun2()

{

structnode*p,*r;

intf=1;

p=head->next;r=head;

printf("\t\t\tPleaseinputtheID:

");

scanf("%s",ID);

printf("\n");

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{

r->next=p->next;

count--;

f=0;

printf("\t\t\t******DeleteSUCCESS!

******\n\n");

break;

}

else

{

r=p;

p=p->next;

}

}

if(f==1)

{

printf("\t\t\tTheIDisnotexit!

!

\n\n");

}

}

voidfun3()

{unsignedh,l,f=1;structnode*p=head->next;

printf("\t\t\tPleaseinputtheposition:

");scanf("%d,%d",&h,&l);printf("\n");

while(p!

=NULL)

{

if((p->hang==h)&&(p->lie==l))

{

printf("\t\t\t******SELECTSUCCESS!

******\n\n");

printf("\t\t\tID:

%s\n\t\t\tname:

%s\n\n",p->ID,p->name);f=0;break;

}

elsep=p->next;

}

if(f==1)printf("\t\t\tNOONEexit!

!

\n\n");

}

voidfun4()

{

structnode*p=head->next;

unsignedf=0;

get_id();

while(p!

=NULL)

{

if(strcmp(p->ID,ID)==0)

{

printf("\t\t\t******FIND!

******\n\n");

printf("\t\t\tPosition:

(%d,%d)\n",p->hang,p->lie);

f=1;

break;

}elsep=p->next;

}

if(f==0)

printf("\t\t\tFAILE:

TheIDisnotexit!

\n\n");

}

voidfun5()

{

structnode*p=head->next,*q;inth,l,f;

for(h=1;h<=HANG;h++)

{for(l=1;l<=LIE;l++)

{f=1;p=head->next;

while(p!

=NULL)

{

if((p->hang==h)&&(p->lie==l))

{printf("\t\tID:

%sname:

%shang:

%dlie:

%d\n",p->ID,p->name,p->hang,p->lie);

f=0;break;}

p=p->next;

}

if(f==1)printf("\t\t\tID:

####\t");

}printf("\n");

}printf("\n\n");

}

voidp_cmd(unsignedt)

{

switch(t)

{

case1:

fun1();break;

case2:

fun2();break;

case3:

fun3();break;

case4:

fun4();break;

case5:

fun5();break;

case6:

break;

default:

printf("\t\t\tWrongcomand!

\n\n");

}system("pause");system("cls");

}

intmain(void)

{

start();

system("cls");

head=(structnode*)malloc(sizeof(structnode));

head->next=NULL;

while

(1)

{

get_cmd();if(cmd==6)break;

if(cmd!

=1&&cmd!

=2&&cmd!

=3&&cmd!

=4&&cmd!

=5)

;

p_cmd(cmd);

}system("cls");

printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\tByebye!

!

!

");

getch();

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1