提交 6c573452 创建 作者: 赵鹏翀's avatar 赵鹏翀

add input file to project file

上级 d412a5d3
流水线 #36992 已失败 于阶段
用时 23 秒
......@@ -2,6 +2,8 @@ image: "registry.cn-hangzhou.aliyuncs.com/engintime/ubuntu_16.04_program:latest"
stages:
- make
- case1
- case2
- case3
before_script:
- flex -b -oyylex.c lex.txt
......@@ -29,7 +31,72 @@ case1:
script:
- ./app input1.txt > user_output1.txt
- diff output1.txt user_output1.txt -b -B -y -i -W 100
- execscore.sh 80
only:
- master
teacher-check1:
stage: case1
<<: *codecode-runner
script:
- ./app input1.txt > /dev/null
- git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
- diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
- diff template/input1.txt input1.txt -b -B -y -i --suppress-common-lines
- diff template/output1.txt output1.txt -b -B -y -i --suppress-common-lines
- fileidentity.sh
only:
- master
when: manual
allow_failure: true
case2:
stage: case2
<<: *codecode-runner
script:
- ./app input2.txt > user_output2.txt
- diff output2.txt user_output2.txt -b -B -y -i -W 100
- execscore.sh 90
only:
- master
teacher-check2:
stage: case2
<<: *codecode-runner
script:
- ./app input2.txt > /dev/null
- git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
- diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
- diff template/input2.txt input2.txt -b -B -y -i --suppress-common-lines
- diff template/output2.txt output2.txt -b -B -y -i --suppress-common-lines
- fileidentity.sh
only:
- master
when: manual
allow_failure: true
case3:
stage: case3
<<: *codecode-runner
script:
- ./app input3.txt > user_output3.txt
- diff output3.txt user_output3.txt -b -B -y -i -W 100
- execscore.sh 100
only:
- master
teacher-check3:
stage: case3
<<: *codecode-runner
script:
- ./app input3.txt > /dev/null
- git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
- diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
- diff template/input3.txt input3.txt -b -B -y -i --suppress-common-lines
- diff template/output3.txt output3.txt -b -B -y -i --suppress-common-lines
- fileidentity.sh
only:
- master
when: manual
allow_failure: true
\ No newline at end of file
3 * 5
\ No newline at end of file
3 * 5
\ No newline at end of file
......@@ -62,8 +62,16 @@
</Filter>
<File RelativePath=".\input1.txt">
</File>
<File RelativePath=".\input2.txt">
</File>
<File RelativePath=".\input3.txt">
</File>
<File RelativePath=".\output1.txt">
</File>
<File RelativePath=".\output2.txt">
</File>
<File RelativePath=".\output3.txt">
</File>
<File RelativePath=".\readme.md">
</File>
</Files>
......
15
\ No newline at end of file
15
\ No newline at end of file
# 功能说明
此模板的功能是lex(Flex的Lex兼容模式)和yacc(Bison的yacc兼容模式)联合使用,用于创建从文件中读取数据,然后将结果输出到标准输出的任务模板。包含有1个case。
# 生成过程说明
flex.exe 使用lex.txt作为输入文件,生成了yylex.c
bison.exe 使用yacc.txt作为输入文件,生成了ytab.h和ytab.c
使用gcc 对main.h、ytab.h、ytab.c、yylex.c进行编译链接,生成了可执行程序。
使用CP Lab运行时,默认使用 sample.txt 文件作为命令行中的第一个参数,也就是从该文件读取内容,将处理结果打印到标准输出。
运行线上流水线时,使用 input1.txt 文件作为命令行中的第一个参数,并将标准输出重定向到 user_output1.txt 文件中,最后与答案文件 output1.txt 比较。
# 使用方法
为学生布置任务前,要先使用此模板创建一个任务模板。方法如下:
1. 在自己的群组中新建一个项目,新建项目时,不要创建空白项目,选择右侧的“导入项目”,然后选择“Repo by URL”作为导入源。将本项目的Git URL复制到“Git仓库URL”中。其他的控件按照自己的要求填入后,点击最下方的“创建项目”按钮,完成新建项目。这个新建的项目会用于给学生创建任务。
2. 使用教师账号登录 CP Lab,将新建的项目克隆到本地。
3. 编辑 input1.txt 文件和 output1.txt 文件以及 sample.txt 文件。写入实验要求的内容。
4. 编辑 readme.md 文件的内容,通常在此文件中写明实验的要求,让学生依据要求完成实验。推荐将读取文件的样例和输出样例写入 readme.md 文件中方便学生查看。
5. 如果有必要,也可以修改已有的文件,提供一个合适的代码基。或者在项目中加入其它的头文件和C文件。方法是在CP Lab左侧的项目管理器中对应的节点上点击鼠标右键,在弹出的菜单中选择“添加”中的“添加新文件”。
6. 推送项目到 Git 远程库。
7. 如果有答案源代码的话,最好能做一个测试,确保学生能够顺利完成实验。方法是:新建一个课程,使用刚刚制作的模板项目新建一个任务,将学生添加到课程中,发布课程和任务后,使用学生账号领取任务,然后使用学生账号登录 CP Lab,克隆任务的项目,将源代码答案填入 lex.txt 和 yacc.txt 文件后提交作业。如果线上的流水线成功,并得到了100分。说明模板制作成功了。否则需要按照上面的步骤继续修改模板。
# 注意
1. 使用此模板制作的任务模板不提供在 CP Lab 中的图形化功能和验证功能。只能通过线上的流水线进行验证。
2. 不要通过浏览器直接编辑C源代码文件,可能会出现乱码的情况。
# 功能说明
此模板的功能是lex(Flex的Lex兼容模式)和yacc(Bison的yacc兼容模式)联合使用,用于创建从文件中读取数据,然后将结果输出到标准输出的任务模板。包含有3个case。
# 生成过程说明
flex.exe 使用lex.txt作为输入文件,生成了yylex.c
bison.exe 使用yacc.txt作为输入文件,生成了ytab.h和ytab.c
使用gcc 对main.h、ytab.h、ytab.c、yylex.c进行编译链接,生成了可执行程序。
使用CP Lab运行时,默认使用 sample.txt 文件作为命令行中的第一个参数,也就是从该文件读取内容,将处理结果打印到标准输出。
运行线上流水线时,使用 input1-3.txt 文件作为命令行中的第一个参数,并将标准输出重定向到 user_output1-3.txt 文件中,最后与答案文件 output1-3.txt 比较。
# 使用方法
为学生布置任务前,要先使用此模板创建一个任务模板。方法如下:
1. 在自己的群组中新建一个项目,新建项目时,不要创建空白项目,选择右侧的“导入项目”,然后选择“Repo by URL”作为导入源。将本项目的Git URL复制到“Git仓库URL”中。其他的控件按照自己的要求填入后,点击最下方的“创建项目”按钮,完成新建项目。这个新建的项目会用于给学生创建任务。
2. 使用教师账号登录 CP Lab,将新建的项目克隆到本地。
3. 编辑 input1-3.txt 文件和 output1-3.txt 文件以及 sample.txt 文件。写入实验要求的内容。
4. 编辑 readme.md 文件的内容,通常在此文件中写明实验的要求,让学生依据要求完成实验。推荐将读取文件的样例和输出样例写入 readme.md 文件中方便学生查看。
5. 如果有必要,也可以修改已有的文件,提供一个合适的代码基。或者在项目中加入其它的头文件和C文件。方法是在CP Lab左侧的项目管理器中对应的节点上点击鼠标右键,在弹出的菜单中选择“添加”中的“添加新文件”。
6. 推送项目到 Git 远程库。
7. 如果有答案源代码的话,最好能做一个测试,确保学生能够顺利完成实验。方法是:新建一个课程,使用刚刚制作的模板项目新建一个任务,将学生添加到课程中,发布课程和任务后,使用学生账号领取任务,然后使用学生账号登录 CP Lab,克隆任务的项目,将源代码答案填入 lex.txt 和 yacc.txt 文件后提交作业。如果线上的流水线成功,并得到了100分。说明模板制作成功了。否则需要按照上面的步骤继续修改模板。
# 注意
1. 使用此模板制作的任务模板不提供在 CP Lab 中的图形化功能和验证功能。只能通过线上的流水线进行验证。
2. 不要通过浏览器直接编辑C源代码文件,可能会出现乱码的情况。
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论