
排考场座位程序.doc
19页优质文档《高级语言程序设计》课程设计说明书设计题目:排考场座位程序目 录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考生座位支配考生座位支配模块源程序/*选择1,为新来的考生支配座位,方法:用户输入准考证号和姓名,系统随机产生*//*该考生座位的行号和列号,要求做到一个考生只有一个座位,而且在已有考生的位*//*置上不能再支配新的考生;*/void fun1(){ int h=0,l=0,i,j,f=1,f2=1; struct node *q,*p,*r; if(count==HANG*LIE) printf("\t\t\tThe room is full!\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\tThe ID has exited!\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=(struct node*)malloc(sizeof(struct node)); 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******ADD SUCCESS!******\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; } }考生座位支配模块流程图起先输入用户信息是否接着进展? 完毕返回主菜单Y输入吩咐16. 2取消某考生考场座位模块源程序/*选择2,取消某人考场座位〔假设取消后的座位别人能坐〕*/void fun2(){ struct node *p,*r; int f=1; p=head->next; r=head; printf("\t\t\tPlease input the ID:"); 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******Delete SUCCESS!******\n\n"); break; } else { r=p; p=p->next; } } if(f==1) { printf("\t\t\tThe ID is not exit!!\n\n"); }}取消某考生考场座位模块流程图 起先输入要删除考生的学号是否找到?删除数据显示胜利显示没有找到Y完毕 起先6. 3.1查找考生信息源程序/*选择3,4,显示考场座次表,要求再每个座位对应的行列上显示该考生的准考证号*/void fun3(){ unsigned h,l,f=1;struct node *p=head->next; printf("\t\t\tPlease input the position:");scanf("%d,%d",&h,&l); printf("\n"); while(p!=NULL) { if((p->hang==h)&&(p->lie==l)) { printf("\t\t\t******SELECT SUCCESS!******\n\n"); printf("\t\t\tID:%s\n\t\t\tname:%s\n\n",p->ID,p->name);f=0; break; } else p=p->next; } if(f==1)printf("\t\t\tNO ONE exit!!\n\n");} void fun4(){ struct node *p=head->next; unsigned f=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; } else p=p->next; } if(f==0) printf("\t\t\tFAILE:The ID is not exit!\n\n");}6.3.2查找考生信息流程图起先输入查找的方式:3.座位号;4.ID是否找到?显示找到的记录提示没找到Y完毕Y是否接着查找?返回主菜单7.测试结果7.1起先界面:7.2菜单界面:7.3功能一:考生座位支配支配座位:某座位已有人就坐:考场已满:7.4功能二:取消某考生考场座位取消预订座位取消逝败,没有该考号考生7.5功能三:依据考生座位信息查考生个人信息找到该考生输出其个人信息该座位未支配考生7.6功能四:依据学号查找某学生座位信息找到该考生输出其座位信息没有该学号的考生7.7功能五:输出该考试全部考生信息8.程序设计总结本次程序设计由于完成仓促,虽然想要实现的功能均可以实现,但是,仍旧会有不行预料的错误,例如:当完成某一项任务之后,当用户输入吩咐以外数字系统有时没有报错,而是执行前一个操作的功能;同时,当用户输入了正确的的吩咐之后系统不会马上回应,有时出不来结果;但编译时系统也不报错,而且这种错误只是偶发性的,总的运行结果还不错。
在本次程序设计过程中,感受最深的是:细微环节确定成败,有的时候就是一个点号的错误,会让你纠结半个小时;其次,还是要有扎实的根本功,编程不是粘贴和复制也不是拿着别人的程序找错,假如不亲自去写程序,没有练好编程根本功即使你的想法再好也只是天方夜谭。












