排考场座位程序.docx
《排考场座位程序.docx》由会员分享,可在线阅读,更多相关《排考场座位程序.docx(22页珍藏版)》请在冰豆网上搜索。
![排考场座位程序.docx](https://file1.bdocx.com/fileroot1/2023-4/17/1615307f-9faf-404d-991d-c6527d313164/1615307f-9faf-404d-991d-c6527d3131641.gif)
排考场座位程序
《高级语言程序设计》课程设计
说明书
设计题目:
排考场座位程序
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;
}