飞机订票系统
湖南工程学院
应用技术学院
课 程 设 计 报 告
课程名称 C语言程序
课题名称 飞机订票系统
专 业 电气工程及其自动化
0783 班 级 电气工程
学 号 200713010303 姓 名 竹 航 波 指导教师 王 颖
2008年 3 月19 日
湖南工程学院
课 程 设 计 任 务 书
课程名称 C语言程序设计 课 题 飞机订票系统
专业班级 电气工程0783 学生姓名 竹 航 波 学 号 200713010303 指导老师 王 颖 审 批
任务书下达日期:2008 年3月8日
任务完成日期:2008年3月20日
1
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了四个设计课题,训练重点在于基本的程序设计
和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计
,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘(缺一不可)收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、基本情况
课程类别:必修课
课程学分:1学分
课程学时:1周
课程对象:电气工程0781、0782、0783、0784、0785、0786
三、时间安排
时间 任务
2008-3-8下午3:40-5:40 指导老师给学生布置课程设计的任务及要求 2008-3-10到2008-3-15 学生根据设计任务及要求,对系统进行需求分析、概要设计
和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序
修改并完善程序并上机调试程序
2008-3-16 接受指导老师的验收
2008-3-16到2008-3-22 书写课程设计报告
提交课程设计报告
2
课题要求
一、 需求分析
分析系统功能需求以及用户操作流程。
二、 概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
三、 详细设计
定义数据储存结构,并设计实现系统功能的具体算法,画出各算法的工作流程图。
四、 代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量。重点功能部分均要求给出清晰的程序注释。
五、 程序调试
程序编译、连接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。如果程序能够基本正确地运行,可考虑增加若干基本的容错功能;另外尽量对现有的算法给出改进
,并比较不同算法之间的优缺点
五、设计报告及书写内容要求
课程设计任务完成后,每位同学必须独立书写一份课程设计报告,注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。课程设计报告的内容应包括以下五个部分:
1)需求分析:包括设计题目、设计要求以及系统功能需求分析;
2)概要设计:包括系统总体设计框架和系统功能模块图;
3
3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图; 4)主要源程序代码:包括存储结构设计说明,以及完整源程序清单; 5)调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问
题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等); 6)总结:包括课程设计过程中的学习体会和收获、对c语言和本次课程设计的认识以
及自己的建议等内容。
7)书写格式严格按所附要求书写。
附1:
, 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸
及程序清单)。
, 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行
距为22。
, 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);
三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;
六、附件(所有程序的原代码,要求对程序写出必要的注释)。 正文总字数要求在5000字以上(不含程序原代码)。
六.课程设计题目:飞机订票系统
1)问题描述
假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。
2)功能要求:
?(本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:目的地、
航班号、座次号码、座次定出与否标记、订坐者的姓名和订坐座号.
?(本系统显示这样的菜单:
?输入航班信息
?输出航班信息
?查找航班信息
a、显示座位的数量
b、显示座位的信息
c、显示订座的信息
?订票预约
4
?删除订票预约
?退出系统
?(本系统成功执行菜单的每个信息,选项?和?将要求额外的输入,并且
它们都允许用户收回其输入。
?(查找航班信息既可按线路查,也可按目的地查。
?(在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,
它首先从该文件读入数据。
3)算法提示:
?(数据结构:结构体类型数组
?(数据库结构:下表构成该系统的基本数据库。
航班号 目的地 座次号 座次订出与否的标记 订票者姓名 订票者座位号
Int char int char char char
4)测试数据:
每架飞机的座位N=100,N=5;
5)其它:
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
5
课 程 设 计 文 档....................................................................................... 7
一. 课程设计题目: 飞机订票系统; .................................................. 7
二.内容摘要: ......................................................................................... 7
三.关键字: ............................................................................................. 7
四.总体方案的选定: .............................................................................. 7
【概要设计】......................................................................................... 8
1)程序的模块组成及各个函数的功能: .......................................... 8
2)程序中的抽象数据类型的定义: ................................................. 8
【详细设计】......................................................................................... 9
相关的数据类型: ............................................................................. 9
五(函数间的调用关系图如下:........................................................... 10
1)主函数 ........................................................................................ 10
2)book函数 .................................................................................... 11
3)check函数: ............................................................................... 11
4)tui函数:.................................................................................... 12
六.收获及体会: .................................................................................... 13
附录: .................................................................... 错误~未定义书签。
一.参考文献: ....................................................................................... 14
二.源程序清单 ....................................................................................... 14
6
课 程 设 计 文 档
【需求分析】
一(设计题目: 飞机订票系统;
二(内容摘要:
本系统设计主要是根据售票业务的基本流程进行的,一般地说,售票业务包括:订票子系统、查询子系统、修改子系统、删除子系统、退票子系统等五个方面。该系统是一个简单的飞机订票系统,能够方便地查询所需信息。其功能包括:信息录入、信息显示、信息删除、信息修改及查询等。
三.关键字
飞机定票管理系统。
四.总体方案的选定:
在了解该系统的功能后,可以通过运用函数、编译语句、数据类型来实现。由于数据多,数据结构相似的特点,自然地想到用数组实现数据的存储,且总体数据结构应用文件类型的数据。文件类型为结构体数据,数据库结构用文件来实现。
7
【概要设计】
1)程序的模块组成及各个函数的功能: 1)程序的模块组成:
主函数:main();
输出数据函数:printf();
读取数据函数:scanf();
菜单显示函数:menu(); 2) 各函数的主要功能:
输出数据函数:随时输出数据;
输入数据函数:随时保存输入的数据;
读取数据函数:读取输入的数据;
订票函数:显示各个座位的被订与否,便于乘客选择;
退票函数:满足乘客的退票要求;
查询数据函数:显示所有输入的信息; 2)程序中的抽象数据类型的定义:
机票的状态结构
机票数目;
航班信息;
航线信息;
机票剩余数;
目的地信息;
8
【详细设计】
相关的数据类型:
机票管理结构数组
struct
char over[23];/*目的地*/
int setnum[12];/*机票数*/
char name;/*姓名*/
plane[5];/*航班号*/
9
五(函数间的调用关系图如下:
1)主函数
开始
memu
fun slect 定确修退退
票认改出票
函函函函函数函函 数数数数 数数
输出结果
10
2)定票函数
开始
输入 0
s=fun(t,n)
S==0
输出结果 输出结果
3)修改函数:
开始
输入 3
Plane[i],setnum[j]==’n
’
输出结果 输出结果
11
4)退票函数:
开始
输入 5
p=plane[i].setnum[u]
Plane[i].setnum[j]=’n’
Plane[i].nanme=’\0’
输出结果 输出结果
12
六.收获及体会:
我这次在C语言程序设计课程中,做的是“飞机订票系统”。通过一周的上机操作,充分应用了所学的C语言的知识,粗略设计出并成功的运行起该系统。 这说明我这次的课程设计是成功,但更为重要的我又进一步了解了C语言,加深了对C语言的认识,充分的将课本知识进行梳理、整合、融会贯通之后应用到了实际的工作需要中。以实现学以致用,学有所用。同时也增加了我对C语言的兴趣,激起了学习的热情。
当然,由于学艺不精,在课程设计的过程也碰到的一些问题。其中,不乏一些简单的基础性的错误,如经常输入错误的字母,使程序无法运行,程序也比较简单,还有许多不足之处,但通过这次专业性的练习,相信在以后会有所减少。而关键性问题经常出现在一些函数的使用上,由于对一些函数调用的正确使用不够熟悉,往往也会造成程序无法运行,出现错误。如:清屏函数clrscr(),按任意键可以插入getch(),主函数void main()的用法,C语言的一些标准库函数的应用。然而这一切,通过王颖老师的指导与帮助,自己的查阅资料,也都一一解决了。
书本知识固然重要,但我们更要学会将书本知识应用到实际的工作中。实践中才会发现错误,也才能改进,才能达到学习的最终目的。这些就是我在这个设计中所得到的体会。
13
附录:
一. 参考文献
《程序设计
及开发系统按例》
二.源程序清单
#include
#include #include #define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW -2 #define PR printf typedef int status; typedef struct airline {
char line_num[8];
char plane_num[8]; char end_place[20]; int total;
int left;
struct airline *next; }airline;
typedef struct customer {
char name[9];
char line_num[8];
int seat_num;
struct customer *next; }customer;
airline *init_airline() {
airline *l;
l=(airline*)malloc(sizeof(airline));
if(l==NULL)
{ exit(0);
}
l->next=NULL;
return l;
}
customer * init_customer(){
customer *l;
l=(customer*)malloc(sizeof(customer));
if(l==NULL){
14
exit(0);
}
l->next=NULL;
return l;
}
status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){
airline *q;
q=(airline*)malloc(sizeof(airline)); strcpy(q->line_num , line_num); strcpy(q->plane_num , plane_num); strcpy(q->end_place , end_place); q->total =total;
q->left =left;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
return OK;
}
status insert_customer(customer **p,char *name,char *line_num,int seat){
customer *q;
q=(customer*)malloc(sizeof(customer)); PR("内存分配失败\n");
strcpy(q->name , name);
strcpy(q->line_num , line_num); q->seat_num =seat;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
return OK;
}
airline *modefy_airline(airline *l,char *line_num)
{ airline *p;
p=l->next ;
for(;p!=NULL;p=p->next )
{ if(strcmp(line_num,p->line_num )==0) { p->left ++;
return l;
}
}
PR("没有这个航班,无法完成修改任务~\n");
return 0;
}
status delete_airline(airline *h,char *line_num)
{ airline *p,*pr;
pr=h;
p=pr->next ;
while(p!=NULL)
{ if(strcmp(line_num,p->line_num )==0) { pr->next =p->next ;
PR("删除 %s 航班\n",p->line_num );
return OK;
}
pr=pr->next ;
p=pr->next ;
15
}
PR("无此航班,无法删除~\n");
return ERROR;
}
status delete_customer(customer *h,char *line_num)
{ customer *p,*pr;
pr=h;
p=pr->next ;
while(p!=NULL)
{ if(strcmp(line_num,p->line_num )==0)
{ pr->next =p->next ;
}
pr=pr->next ;
p=pr->next ;
}
return OK;
}
status delete_cus(customer *h,airline *l,char *name)
{ customer *p,*pr;
char line_num[8];
pr=h;
p=pr->next ;
while(p!=NULL)
{ if(strcmp(name,p->name )==0) { strcpy(line_num,p->line_num ); l=modefy_airline(l,line_num); pr->next =p->next ;
PR("顾客 %s 退票成功!\n",p->name ); return OK;
}
pr=pr->next ;
p=pr->next ;
}
PR("无此顾客,无法退票~\n");
return ERROR;
}
status save_airline(airline *l) { FILE *fp_airline;
char ch='#';
airline *p=l->next ;
char filename[]="c:\\airline.dat"; if((fp_airline=fopen(filename,"wb"))==NULL)
{ printf("can not open file to write:%s\n",filename); return ERROR;
}
for(;p!=NULL;p=p->next )
{
fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left ,c
h);
}
fclose(fp_airline);
return OK;
}
status save_customer(customer *l) { FILE *fp_customer;
16
char ch='#';
customer *p=l->next ;
char filename[]="c:\\customer.dat"; if((fp_customer=fopen(filename,"wb"))==NULL)
{ printf("can not open file to write:%s\n",filename);
return ERROR;
}
for(;p!=NULL;p=p->next )
{
fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->line_num ,p->seat_num ,ch);
}
fclose(fp_customer);
return OK;
}
int changStrInt(char *ch)
{ int a=1,b=0,c=0,i;
for (i=strlen(ch)-1;i>=0;i--) { if (ch[i]<58&&ch[i]>47)
{ b=a*(ch[i]-48);
a=a*10;
c=c+b;
}
else
{ PR("%c 不合法,无法将此字符串转化为整形!\n",ch[i]); return 0;
}
}
return c;
}
status insert_air(airline *l,char *line_num,char *plane_num,char *end_place,int total,int left){
airline *q;
q=(airline*)malloc(sizeof(airline)); strcpy(q->line_num , line_num); strcpy(q->plane_num , plane_num); strcpy(q->end_place , end_place); q->total =total;
q->left =left;
q->next=l->next ;
l->next=q;
return OK;
}
status insert_cus(customer *l,char *name,char *line_num,int seat){
customer *q;
q=(customer*)malloc(sizeof(customer)); strcpy(q->name , name);
strcpy(q->line_num , line_num); q->seat_num =seat;
q->next=l->next ;
l->next=q;
return OK;
}
status load_airline(airline *l) { FILE *fp_airline;
int flag=0,i=0;
char ch;
17
char line_num[8];
char plane_num[8];
char end_place[20];
char total_str[5];
char left_str[5];
int total;
int left;
char filename[]="c:\\airline.dat";
if((fp_airline=fopen(filename,"rb"))==NULL)
{ printf("can not open file to load:%s\n",filename);
return ERROR;
}
while(!feof(fp_airline)) { ch=fgetc(fp_airline); if(ch!='#')
{ if(flag==0&&ch!=',') { line_num[i]=ch;
i++;
}
else if(flag==1&&ch!=',') { plane_num[i]=ch;
i++;
}
else if(flag==2&&ch!=',') { end_place[i]=ch;
i++;
}
else if(flag==3&&ch!=',') { total_str[i]=ch;
i++;
}
else if(flag==4&&ch!=',') { left_str[i]=ch;
i++;
}
else if (ch==',')
{ flag++;
i=0;
}
}
else
{ flag=0;
i=0;
total=changStrInt(total_str); left=changStrInt(left_str); PR("%8s%8s%8s%9d%9d\n",line_num ,plane_num ,end_place ,total ,left );
insert_air(l,line_num,plane_num,end_place,total,left);
}
}
fclose(fp_airline);
return OK;
}
status load_customer(customer *l)
{ FILE *fp_customer; int flag=0,i=0;
char ch;
18
char name[9];
char line_num[8];
char seat_num_str[5];
int seat_num;
char filename[50]="c:\\customer.dat"; if((fp_customer=fopen(filename,"rb"))==NULL)
{ printf("can not open file to load:%s\n",filename);
return ERROR;
}
while(!feof(fp_customer))
{ ch=fgetc(fp_customer);
printf("%c\n",ch);
if(ch!='#')
{ if(flag==0&&ch!=',')
{ name[i]=ch;
i++;
}
else if(flag==1&&ch!=',')
{ line_num[i]=ch;
i++;
}
else if(flag==2&&ch!=',')
{ seat_num_str[i]=ch;
i++;
}
else if (ch==',')
{ flag++;
i=0;
}
else
{ PR("错误\n");
return ERROR;
}
}
else
{ flag=0;
seat_num=changStrInt(seat_num_str); PR("%10s %10s %d\n",name ,line_num ,seat_num );
insert_cus(l,name,line_num,seat_num);
}
}
fclose(fp_customer);
return OK;
}
status creat_airline(airline **l) { airline *p=*l;
int i=0;
char *line_num[3]={"bjnc01","bjsh02","shgz03"};
char *plane_num[3]={"plane1","plane2","plane3"};
char *end_place[3]={"nc","sh","gz"}; int total[3]={100,100,100};
int left[3]={51,50,78};
for (i=0;i<3;i++){
insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]);
}
return OK;
19
}
status creat_customer(customer **l) { customer *p=*l;
int i=0;
char *name[3]={"ouyangj0","yhl","fs"}; char *line_num[3]={"bjnc01","bjsh02","shgz03"}; int seat_num[3]={1,5,10};
for (i=0;i<3;i++){
insert_customer(&p,name[i],line_num[i],seat_num[i]);
}
return OK;
}
status increase_air(airline *l,char *line_num,char *plane_num,char *end_place,int total)
{ airline *p=l->next ;
for(;p->next !=NULL;p=p->next){} insert_airline(&p,line_num,plane_num,end_place,total,total);
PR("增加航班 %s 成功!\n",line_num);
return OK;
}
status book(airline *l,char *line_num,customer *c,char *name)
{ airline *p=l;
customer *q=c->next ;
p=l->next ;
for(;q->next !=NULL;q=q->next){}
for(;p!=NULL;p=p->next )
{ if(strcmp(line_num,p->line_num )==0) { if(p->left >0)
{ PR("恭喜您!订票成功!\n");
PR("你的座位号是: %d\n",(p->total -p->left +1)); insert_customer(&q,name,line_num,p->total -p->left +1);
p->left --;
return OK;
}
else PR("对不起,座位已满!\n");
return 0;
}
}
PR("对不起,没有这个航班号!\n");
return ERROR;
}
status print_airline(airline *l)
{ airline *p=l->next ;
for(;p!=NULL;p=p->next )
{ PR("%8s%8s%8s%9d%9d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );
}
return OK;
}
status print_customer(customer *l) {
customer *p=l->next ;
for(;p!=NULL;p=p->next )
{ PR("%10s %10s %d\n",p->name ,p->line_num ,p->seat_num );
}
return OK;
}
status inputpassword(char cc[9])
{
20
char c;
int i;
for(i=0;c=getch();i++) {
if(c==13) break;
else
{
cc[i]=c;
printf("*");
}
}
cc[i]='\0';
return strlen(cc);
}
void main()
{ char choice,choice2,name[9],line_num[8],password[9],plane_num[8],end_place[9];
char pass[9]="19851102",re_pass_1[9],re_pass_2[9];
int t=1,tt=1,total;
airline *air=init_airline(); customer *cus=init_customer(); PR(" 电气0783课程设计 (一)\n");
PR(" 航空订票系统\n");
PR(" 成员:竹航波\n");
PR("发行单位:湖南工程学院应用技术学院\n"); creat_airline(&air); creat_customer(&cus);
while(t==1)
{ PR("*----------------------------*\n");
PR("*--航空订票系统选择菜单------*\n"); PR("* 订票-------0 *\n"); PR("* 退票-------1 *\n"); PR("* 查询-------2 *\n"); PR("* 修改航线---3 *\n");
PR("* 读入文件---4 *\n");
PR("* 退出-------5 *\n"); PR("*----------------------------*\n");
PR("请选择: ");
choice = getch();
PR("%c\n",choice);
if(choice=='0')
{ PR("请输入你要订的航班号: ");
scanf( "%s",line_num); PR("请输入你的姓名: ");
scanf( "%s",name);
book(air,line_num,cus,name); save_airline(air);
save_customer(cus);
}
else if(choice=='1') { PR("\n请输入你的姓名: ");
scanf( "%s",name);
21
delete_cus(cus,air,name); save_airline(air);
save_customer(cus);
}
else if(choice=='2') { PR("\n 航班号 飞机号 目的地 总票数 余票数\n"); print_airline(air);
PR(" 姓名 航班号 座位号\n");
print_customer(cus); }
else if(choice=='3') { tt=1;
PR("请输入密码: ");
inputpassword(password);
if(strcmp(password,pass)==0) { while (tt==1){
PR("\n*------------------------------*\n");
PR("*-------航线信息修改:----------*\n"); PR("* 增加航班号-----'0' *\n"); PR("* 删除航班号-----'1' *\n"); PR("* 修改密码-------'2' *\n"); PR("* 查询航线信息---'3' *\n"); PR("* 退出航线修改---'4' *\n"); PR("*------------------------------*\n");
PR("请选择: ");
choice2=getch();
PR("%c\n",choice2);
if(choice2=='0')
{ PR("请输入你要增加的航班号: ");
scanf("%s",line_num); PR("请输入飞机号: ");
scanf("%s",plane_num); PR("请输入目的地: ");
scanf("%s",end_place); PR("请输入座位总数: ");
scanf("%d",&total);
increase_air(air,line_num,plane_num,end_place,total);
save_airline(air);
save_customer(cus);
}
else if (choice2=='1') { PR("请输入你要删除的航班号: ");
scanf("%s",line_num); delete_airline(air,line_num); delete_customer(cus,line_num);
save_airline(air);
save_customer(cus);
}
else if(choice2=='2') { PR("注意:密码不能超过8位!\n");
PR("请输入新密码:");
scanf("%s",re_pass_1); PR("请再输入一次: ");
22
scanf("%s",re_pass_2); if(strcmp(re_pass_1,re_pass_2)==0)
{ strcpy(pass,re_pass_1); PR("密码修改成功!请记住.\n"); }
else { PR("你两次输入的密码不一致!\n"); }
}
else if(choice2=='3') { PR("\n 航班号 飞机号 目的地 总票数 余票数\n");
print_airline(air); }
else if(choice2=='4') { tt=0;
}
else {
PR("你的输入有误\n");
tt=0;
}
}
}
else {
PR("对不起!你输入的密码不正确!\n"); }
}
else if(choice=='4') { load_airline(air); load_customer(cus); }
else if(choice=='5') { PR("再见!");
t=0;
}
else
{ PR("你的输入有误\n");
}
}
getch();
}
应用技术学院课程设计评分表
23
课程名称: 飞机定票系统
项目评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
(注:1(此页附在课程设计报告之后;2(综合成绩按优、良、中、及格和不及格五级评定。)
24