




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
陕西工业职业技术学院2011/2012学年第1学期数据结构实训报告课程名称: 数据结构 班 级: 软件1001 姓 名: 薛 帅 教学周数: 1周(第18周) 地 点: 行知楼(506) 指导教师: 刘喜勋 吴红 信息工程学院数据结构课程设计实训方案 一 实训对象1. 实训班级软件1001班2. 计划实训周期:5个工作日3. 计划受训人数: 50人左右二 实训目的通过本次实训希望学生能有以下收获:(1) 掌握数据结构的基础知识;;(2) 数据结构模型的建立以及存储结构的选择;(3) 掌握C 语言文件操作方式 ;(4) 掌握数据结构中队列、新建、入队、出队。线性表、查询、更新、插入、删除、排序等功能;(5) 了解数据处理的权限管理;三 实训内容题目:车库管理系统问题描述设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。以线性表模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“”离去信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。线性表以顺序结构实现,队列以链表结构实现。 系统要求(1)初始化:初始化线性表、队列。(2)入队:新车加入队。(3)出队:队首出队。(4)入库:定位、队列元素入库。(5)出库:查找、出库并计费、记录流水。(6)输出流水帐四摘 要详细内容如下:序号实训项目内容及要求学时1数据结构基础知识数据结构设计1)了解数据结构中的基本概念2)数据结构应用设计过程3)独立完成“车库管理系统”数据结构的规范化设计;42初始化:初始化线性表、队列。要求:1) 完成初始化线性表、队列程序设计;23入队:新车加入队。出队:队首出队。要求:1)完成入队出队程序设计;44入库:定位、队列元素入库要求:1) 完成定位、队列元素入库程序设计65出库:查找、出库并计费、记录流水。要求:1) 完成查找、出库并计费、记录流水2) 保存数据(文件写操作);66输出流水帐要求:1)读入数据(文件读操作);2)输出数据27完成报告要求:文章结构清晰,文字描述准确;掌握科技应用文的写作;4五实训环境地点:行知楼506软件: Turbo C2.0 六实训进度序号时间实训内容方式1第一天早上数据结构基础知识、数据结构设计讲练2第一天下午初始化:初始化线性表、队列。练习3第二天早上入队:新车加入队列讲练4第二天下午出队:队首出队。练习5第三天早上入库:队列元素入库讲练6第三天下午出库:查找、出库并计费练习7第四天早上记录流水。讲练8第四天下午输出流水帐练习9第五天早上系统联调讲练10第五天下午完成报告练习目录绪论1第一章 题目2第二章 题目3第三章 题目4总结和体会5参考文献6绪 论本系统是假设有一个停车场且只有一个大门可供汽车进出。汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一辆车停放在车场的最北端),若车场内已停满汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用的系统。其顺序用队列来实现,车辆的车牌、停车时间以及车位号均保持在库中,在车辆离开停车场时调用库中信息,查询车辆信息,计算应缴纳的费用,并处理后续车辆。第一章 初始化具体内容对线性表、队列的初始化和必要的操作提示,代码如下:#include stdio.h #include stdlib.h #include string.h #include conio.hint MAX; /*定义一个全局变量用来存储车库最大容量*/ float price;/*每车每小时的费用*/ typedef struct time int hour; int min; Time; /*时间结点*/ typedef struct node char num100; Time reach; Time leave; Car; /*车辆信息结点*/ typedef struct NODE Car *stack100; int top; float x;SqStack; /*停车站*/ typedef struct car Car *data; /数据域名 struct car *next; /指针域名 QNode; typedef struct Node QNode *head; /队头指针 QNode *rear; /队尾指针LinkQueue; /*通道*/ void InitStack(SqStack *); /*初始化栈*/ int InitQueue(LinkQueue *); /*初始化便道*/ int arrive(SqStack *,LinkQueue *); /*车辆到达*/ void leave(SqStack *,SqStack *,LinkQueue *); /*车辆离开*/ void info(SqStack,LinkQueue); /*显示停车场信息*/ void PRINT(Car *p,int room);/打印详细信息及账单void InitStack(SqStack *s) /*初始化栈*/ int i; s-top=0; /定义初始栈顶下标值 for(i=0;istacks-top=NULL; /建立一个空栈 int InitQueue(LinkQueue *Q) /*初始化便道*/ Q-head=(QNode *)malloc(sizeof(QNode); /为通道开辟一个空间 if(Q-head!=NULL) /判断队头是否为空 Q-head-next=NULL; /队头的下一个数据元素设为空 Q-rear=Q-head; /把队头数据元素的值赋给队尾 return(1); else return(-1); void main() SqStack In,Out; LinkQueue Wait; int ch; InitStack(&In); /*初始化停车站*/ InitStack(&Out); /*初始化让路的临时栈*/ InitQueue(&Wait); /*初始化通道*/ while(1) printf(-欢迎使用停车场管理系统-n); printf(请输入停车场的容量:); scanf(%d,&MAX); printf(请输入停车场的收费标准(元/小时):); scanf(%f,&price); printf(您输入的停车场容量为%d位,费用为%2.1f元/小时。n,MAX,price); printf( (1)车辆到达n); printf( (2)车辆离开n); printf( (3)停车场信息n); printf( (0)退出系统n); printf(-n); printf(请选择n); while(1) ch=getch(); switch(ch) case 1:arrive(&In,&Wait);break; /*车辆到达*/ case 2:leave(&In,&Out,&Wait);break; /*车辆离开*/ case 3:info(In,Wait);break; /*输出车站信息*/ case 0:printf(谢谢使用!);exit(0); /*退出主程序*/ default:printf(n非数字键,请重新按键选择!); system(CLS); printf(-欢迎使用停车场管理系统-n); printf(您输入的停车场容量为%d位,费用为%2.1f元/小时。n,MAX,price); printf(n(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n); 第二章 车辆到达车场可停放多辆汽车,且只有一个大门可供汽车进出。汽车在停车场内按车辆达到时间的先后顺序依次排列,若车场内已停满汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入代码如下:int arrive(SqStack *In,LinkQueue *W) /*车辆到达*/ Car *p; QNode *t; p=(Car *)malloc(sizeof(Car); /把开辟成功的空间存入指针p中 flushall(); /清除所有缓冲区 printf(n停车场还有%d个停车位(若停车位为0,车可先进入便道等待),MAX-In-top); printf(n请输入车牌号码(例:3454):); gets(p-num); if(In-toptop+; printf(n停车的位置:%d号停车位。,In-top); /printf(n请输入车到达的时间(格式*:*):); printf(n请输入车到达的时间:); scanf(%d:%d,&(p-reach.hour),&(p-reach.min); In-stackIn-top=p;/弹出栈顶数据元素值到指针p printf(请按任意键返回); getch(); return(1); else /*停车场已满,车进便道*/ printf(n停车位已满,该车须在便道等待!); t=(QNode *)malloc(sizeof(QNode); t-data=p; /指针t所指向结点的数据元素存入指针p内 t-next=NULL; /新结点链为空 W-rear-next=t; W-rear=t; printf(请按任意键返回); getch(); return(1); 第三章 车辆离开和查询当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用 代码如下:void leave(SqStack *In,SqStack *Out,LinkQueue *W) /车辆离开 int room; char *x; int A1,A2,B1,B2; Car *p,*t; QNode *q; /判断车场内是否有车 if(In-top0) /有车 while(1) /输入离开车辆的信息 printf(n请输入车在停车场的车位号:,In-top); scanf(%d,&room); if(room=1&roomtop) break; while(In-toproom) /*车辆离开*/ Out-top+; Out-stackOut-top=In-stackIn-top; In-stackIn-top=NULL; In-top-; p=In-stackIn-top; In-stackIn-top=NULL; In-top-; while(Out-top=1) printf(请便道车进入) ; In-top+; In-stackIn-top=Out-stackOut-top; Out-stackOut-top=NULL; Out-top-; PRINT(p,room); /*判断通道上是否有车及车站是否已满*/ if(W-head!=W-rear)&In-tophead-next; t=q-data; In-top+; printf(n便道的%s号车进入车场第%d号停车位。,t-num,In-top); /printf(n请输入现在的时间(格式*:*):); printf(n请输入现在的时间:); scanf(%d:%d,&(t-reach.hour),&(t-reach.min); W-head-next=q-next; if(q=W-rear) W-rear=W-head; In-stackIn-top=t; free(q);/释放原栈结点内存空间 else printf(n停车场里没有车n); /*没车*/ printf(请按任意键返回); getch();void info1(SqStack *S) /*列表输出车场信息*/ int i; if(S-top0) /*判断停车场内是否有车*/ printf(n车场:); printf(n 位置 到达时间 车牌号n); for(i=1;itop;i+) printf( %dt,i); printf(%d:%d ,S-stacki-reach.hour,S-stacki-reach.min); puts(S-stacki-num); else printf(n停车场里没有车); void info2(LinkQueue *W) /*显示便道信息*/ QNode *p; p=W-head-next; if(W-head!=W-rear) /*判断通道上是否有车*/ printf(n便道中车辆的号码为:n); while(p!=NULL) puts(p-data-num); p=p-next; else printf(n便道里没有车n); printf(请按任意键返回); getch(); void info(SqStack S,LinkQueue W) info1(&S); /*显示停车场信息*/ info2(&W); /*显示停便道信息*/ void PRINT(Car *p,int room) /出停车站车的信息 int A1,A2,B1,B2; printf(n请输入车离开的时间:); scanf(%d:%d,&(p-leave.hour),&(p-leave.min); printf(n车牌号码:); puts(p-num); printf(n车登记的时间是: %d:%d,p-reach.hour,p-reach.min); printf(车离开的时间是: %d:%d,p-leave.hour,p-leave.min); A1=p-reach.hour; A2=p-reach.min; B1=p-leave.hour; B2=p-leave.min; printf(n费用为: %2.1f元,(B1-A1)+(B2-A2)/60)*price); free(p); 总结和体会具体内容(不少于500字):本学期开设的数据结构基础课程已经已经结束,现实训也结束了,就学习体会进行学习总结.这是一门纯属于设计的科目,它需用把理论变为上机调试。刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们讲不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序。实训中,我总结了学习中遇到的一些问题,结合书本上的知识与老师的讲解的问题得到解决,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段写到自己的程序中再加以必要的连接以完成程序的编写。刚开始的时候确实有很多地方我很不理解,老师给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。经过了这次课程实训,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。在这一段努力学习的过程中,我们有了明显的提高。现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。以上便是我对数据结构基础门课实训总结,我会抓紧时间将没有吃透的知识点补齐,克服学习中遇到的难关,在打牢基础的前提下向更深入的层面迈进!参考文献 1 王元珍,韩宗芬.IBM-PC宏汇编语言程序设计(第二版).华中理工大学出版社.(按以上标准格式增加班 学号 姓名 2011年12月 日袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆托管与广告合作经营协议
- 生态农庄餐饮承包合作协议书
- 医疗机构代理记账及药品成本管理合同
- 茶叶种植与生态旅游合作开发协议
- 智能制造园区标准化厂房租赁合同
- 电力抢修服务采购方案
- 时尚餐饮店合伙人权益保障协议书
- 厦门城管整改方案
- 餐饮企业股权并购与品牌传承协议
- 草场租赁与农业科技推广合同
- 2025年财会业务知识竞赛题库及答案(360题)
- 《从偶然到必然:华为研发投资与管理实践》第1,2章试题
- 内部收益率的计算课件
- 中医基础知识津液课件
- 冷链物流工程监理总结报告
- 地下水监测井打井施工方案
- 航天器发射与返回任务作业指导书
- 基于大概念的初中化学单元整体教学设计及实践研究
- 分级护理质量追踪与持续改进
- 《当代世界政治》课件
- 2024年01月11237物流管理基础期末试题答案
评论
0/150
提交评论