365文库
登录
注册
1

准考证号的编排

387阅读 | 16收藏 | 8页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
1
准考证号的编排第1页
准考证号的编排第2页
准考证号的编排第3页
准考证号的编排第4页
准考证号的编排第5页
准考证号的编排第6页
准考证号的编排第7页
准考证号的编排第8页
福利来袭,限时免费在线编辑
转Pdf
right
1/8
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
杀了书生 上传于:2024-06-21
一、题目:设计考场的编排,生成准考证号 二、目的与要求 1. 目的 培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 2. 基本要求 (1) 用C++语言编程,在Visual C++环境下调试完成; (2) 使用结构数组,各个功能分别使用函数来完成。 三、设计方法和基本原理 1.课题功能描述 本程序要求根据考生人数、考场个数和每个考场的人数,为考生生成准考证号,并显示生成的考生信息。 2.问题详细描述 根据考生的报名信息、考场数和每个考场容纳的人数,来编排考生的准考证号。已知准考证号(字符串)依次由由考场号(2位)、学校代码(2位)、考生学号的前两位(2位)、座位号(2位)共8位组成,其中学校代码已给定(const int CODE = 18)。已知,每个考生的信息包括学号(int num)、姓名(char name[20])和准考证号(char testID[8])。要求编写多个函数分别实现下列功能,而后在main函数中进行调用。 (1) 录入考生的报名信息,即学号和姓名。 (2) 根据用户输入考生人数,每个考场容纳的人数,生成准考考号。例如:若某考生的学号为99764,考场号为2,座位号为5,学校代码为18,则该考生的准考证号为:”02189905”,注意当考场号和座位号小与10时,前面加0。 (3) 显示全部考生的考试信息,如输出考生的学号、姓名、准考证号、考场号和座位号。 (4) 按考场号分别显示考生信息。 3. 问题的解决方案 (1) 采用结构体类型存储学生信息。 (2) 使用字符型数组存储准考证号,因此要将考场号、学校代码、考生学号、座位号分别转换为字符型数据进行存储。 (3) 考场号和座位号的编排与总人数和每个考场的人数有关。 四、主要技术问题的描述 分别编写函数实现编排考场号、学校代码转换、取学号前两位、编排座位号、显示信息,形参为结构数组,在上述函数中分别将转换的结果分别存放到testID成员(准考证号,字符数组)中相应的数组元素中。 五、创新要求 在基本要求达到后,进行创新设计: (1)使用多文件,即主函数和各个函数分别存放在不同的.cpp文件中,在头文件中进行函数原型声明。 (2)对程序功能进行拓展,使其更加实用。例如,按照随机数编排座位号等 //student.h #ifndef STUDENT_H #define STUDENT_H struct Student { int num; //学号(为5位的学号) char name[20]; //姓名 char testID[9]; //准考证号(8位) }; void input_info(Student*stu,int count);//录入考生的报名信息,即学号和姓名 void print_one(Student*stu);//显示一个考生的考试信息,如输出考生的学号、姓名、准考证号、考场号和座位号。 void print_by_attendNum(Student*stu,int attendNum);//按考场号显示考生信息。 int search_by_num(Student*,int num);//按照学号,查找信息 int search_by_name(Student*,char*name);//按照姓名,查找信息 void set_attendNumber(Student*stu);//编排考场号 void change_CODE(Student*);//学校代码转换 void get_num_first2(Student*);//取学号前两位 void set_place(Student*stu,int place_num);//编排座位号 int get_place(int*);//获取一个,按照随机数编排的座位号。 void set(int*,int num);//辅助函数,将数组置一 bool search(int*array,int point); #endif // STUDENT_H //student.cpp #include "Student.h" #include #include #include #include #include #include using std::cout; using std::cin; using std::endl; extern int const STUDEN_COUNT; extern const int SHCOOL_CODE ; extern const int FULL_NUMBER ; //录入考生的报名信息,即学号和姓名 void input_info(Student*stu,int count) { for (int i= 0;i < count ; ++i) { std::cout<<"输入第"<>stu[i].num; std::cout<<" 输入第"<>stu[i].name; std::cout< FULL_NUMBER) return; if (place_num < 10 )//保证宽度为2 itoa(place_num,num+1,10); else itoa(place_num,num,10); std::strcat( (*stu).testID,num ); } //编排准考证号 void set_attendNumber(Student*stu) { int array[FULL_NUMBER];//用于存储一个考场座位的状态 set(array,FULL_NUMBER);//该考场所有位置都可用 float max_number = static_cast(FULL_NUMBER);//浮点型保存考场容纳人数 for (int i = 0;i< STUDEN_COUNT; ++i) { set_attendNumber(stu+i,static_cast(i/max_number+1));//考场号(2位) change_CODE(stu+i);//学校代码(2位) get_num_first2(stu+i);//考生学号的前两位(2位) if (i%FULL_NUMBER == 0) set(array,FULL_NUMBER); set_place(stu+i,get_place(array));//座位号(2位) } } //获取一个,按照随机数编排的座位号 int get_place(int*array) { srand( (unsigned)time( NULL) ); int point = -1; while (true) { point = rand()%FULL_NUMBER; if (search(array,point))
tj