13级计算机C课程设计诚毅.docx
- 文档编号:16886668
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:17
- 大小:73.31KB
13级计算机C课程设计诚毅.docx
《13级计算机C课程设计诚毅.docx》由会员分享,可在线阅读,更多相关《13级计算机C课程设计诚毅.docx(17页珍藏版)》请在冰点文库上搜索。
13级计算机C课程设计诚毅
2009级计算机《高级语言程序设计》课程设计任务书
一、教学目标
【高级语言程序设计】课程设计。
它是根据教学计划的要求,在教师的指导下,对学生实施程序设计训练的必要过程,是对前期课堂教学效果的检验。
其目标在于培养学生综合运用理论知识来分析和解决实际问题的能力、严谨的科学态度和良好的程序设计习惯,最终实现由知识向智能的初步转化。
通过这个课程设计,要求学生能够遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,独自地完成设计、编写、调试和测试应用程序及编写文档的任务。
二、教学要求
在本课程设计过程中要求学生:
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;
(3)认真编写课程设计报告。
课程设计报告的书写格式见附录A。
三、实验报告要求
1、只能使用C语言,源程序要有适当的注释,使程序容易阅读。
2、要有用户界面。
要求至少采用文本菜单界面;鼓励采用图形菜单界面。
3、必须使用结构和链表等数据结构。
4、使用文件保存数据。
5、至少输出一份报表,鼓励自行增加新功能。
6、写实验报告(要求正规打印,A4幅面),内容包括:
●题目
●系统功能模块结构图
●数据结构设计及用法说明
●程序结构(画流程图)
●各模块的功能
●试验结果(包括输入数据和输出结果)
●调试与测试:
调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。
●参考文献
●附录:
程序清单(清单中应有足够的注释)
三、考核评估
通过程序实现、总结报告和学习态度综合考评,并结合学生的动手能力,独立分析解决问题的能力和创新精神。
成绩分优、良、中、及格和不及格五等。
考核标准包括:
1、程序设计的正确性,程序结构是否合理、编程风格(50%)。
2、学生的工作态度、动手能力、创新精神(30%)。
3、总结报告(20%)
4、凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩。
三、课程题目安排
题目一、猜数字游戏(限1人)
猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户提供一个游戏的平台。
并且,该游戏提供了给用户计分的功能,并能对每个参与游戏的用户进行成绩排行,在排行榜中排出前五名玩家的游戏记录,并可以随着玩家的游戏记录进行更新。
该软件在Windows系统上为玩家提供猜数字游戏的基本功能,游戏用户可以选择开始游戏、排行榜查看、帮助等主要功能。
当用户选择开始游戏时,系统会提示用户排行榜上猜数字成绩的最好记录,并让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确但位置不正确的数字字数。
如果用户猜数字的次数超过10次,则提示用户游戏失败,如果在10次之内猜出了4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前五名,则计入排行榜中,以便其他用户查看。
在排行榜查看功能中,用户可以查看当前的游戏排行,排行榜中总共显示前5名玩家的排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。
在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
题目二、图书管理系统(限2人)
图书管理系统是运行于Windows系统下的应用软件,主要用于对图书馆中的图书信息进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理等。
系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
所需功能类似于学生成绩管理系统,界面可参考附录C。
用户分为管理员和一般人员两大类。
功能需求描述如下。
①用户登录:
根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。
学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:
系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。
系统主控平台包括输入功能选项、调用相应程序两大需求。
教师和学生对应的系统主控平台是不同的。
所能进行的操作也不相同。
③创建图书信息文件:
用户根据提示输入图书编号、图书分类号、书名、作者姓名、出版社名、出版年月、定价、存库数量和借阅和上架情况等等信息存储在系统磁盘的文件中。
以便进行管理、查找和备份。
④增加图书信息:
可在原有图书信息文件的基础上增加新的图书信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除图书信息:
提示用户输入要进行删除操作的图书编号,如果在文件中有该信息存在,则将该书号所对应的记录删除。
并选择是否继续进行删除操作。
⑥修改图书信息:
提示用户输入要进行修改操作的书号,如果在文件中有该息存在,则将提示用户输入该书号对应的要修改的选项,结果存储于文件。
该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询图书信息:
提供按书号或书名等查询。
在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧一般用户查询个人的借阅情况并按日期进行排序:
。
⑨管理员和一般用户管理:
管理员对用户的管理也需要进行用户的创建、增加、删除、浏览。
管理员创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。
管理员还具有用户的功能。
增加的用户及密码、权限等也被继续存储在yonghu文件中。
当某些用一用该系统时,还可以进行删除操作,并且管理员具有修改用户权限的功能,一般用户和管理员对于系统的权限是不一样的。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø至少采用文本菜单界面(如果能采用图形菜单界面更好)
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
题目三、建立自己的编译程序(限1人)
学习机器语言编程并编写几个机器语言程序,我们用基于软件的模拟技术建立一台计算机,并在这台计算机上执行所编写的机器语言程序。
建立一台称为Simpletron的计算机。
这是一台很简单的机器,但在后面你回发现它的功能同样很强大。
Simpletron只能运行用它可以理解的语言编写的程序,也就是Simpletron机器语言,简称为SML。
Simpletron含有一个累加器(一种特殊的寄存器,Simpletron在使用某个信息进行计算或对它进行各方面的检查时先把它存放在这里)。
Simpletron中的所有信息都是按“字”(Word)来处理的,每个字都是一个带符号的四位十进制数,如+3364、+0007、-0001等等。
Simpletron中100个字的内存,这些字是按其位置序号00单元、01单元、…、99单元来引用的。
在运行一个SML程序之前,必须先把程序装入内存,每个SML程序的第一条指令总是放在00单元处。
用SML编写的每一条指令都占用Simpletron内存的一个字,因此指令是带符号的四位十进制数。
我们假定SML指令的符号总是正,但数字的符号可正可负。
Simpletron内存中的每个单元可能含有一条指令,也可能是程序使用的一个数据值,还可能是一块未使用的内存区(未被定义)。
每条SML指令的前两位数是操作码,表示要被执行的操作。
SML的操作码见附录B。
每条SML指令的后两位是操作数,表示被操作的字所在内存单元的地址。
现在我们来考虑几个简单的SML程序。
范例程序1
内存单元数指令
00+1007(ReadA)
01+1008(ReadB)
02+2007(LoadA)
03+3008(AddA)
04+2109(StoreC)
05+1309(WriteC)
06+4300(Halt)
07+0000(VariableA)
08+0000(VariableB)
09+0000(ResultC)
这个SML程序从键盘上读取两个数,计算并打印出它们的和。
指令+1007从键盘读取1个数并把它存在内存单元07中(已被初始化为0),然后+1008读取下一个数并把它存在内存单元08中。
指令+2007把读取的第一个数存在累加器中,加法指令+3008把第二个数与累加器中的数相加,所有SML算术运算指令都把计算结果存在累加器中存储指令+2109把计算结果存放在内存单元09中,写指令+1309从中取出结果并以带符号的四位十进制数形式打印出该结果。
停止指令+4300终止程序的执行。
用一个含有100个元素的数组memory模拟Simpletron的内存。
运行是首先将程序装入内存,并提示“Programloadingcomplete,Programexecutionbegins”表示SML程序亿载入内存,接下来Simpletron执行这个SML程序,像C语言一样,除非通过控制转移到程序中的其它部分,否则该程序从内存单元00中的指令开始按顺序向下执行。
用结构体变量proccessor模拟Simpletron的处理器,成员accumulator代表累加器的寄存器,成员instructionCounter跟踪正在执行的指令内存单元,成员operationCode表示当前正在执行的操作,即指令字左边的两位数字,成员operand表示当前指令所操作的内存单元,也就是正在执行的指令字的右边两位数字。
不要直接从内存中执行指令,而是把下一条要执行的指令从内存中取出来放在成员instructionRegister中,执行时再将其左边两位数字放到operationCode中,右边两位数字放在operand中。
当Simpletron开始执行时,个寄存器按如下方式初始化:
accumulator+0000
instructionCounter00
instructionRegister+0000
operationCode00
operand00
在一个指令执行周期中,instructionCounter告诉我们下一条要执行的指令所在的内存单元;我们可以使用如下的C语句从数组中取出该内存单元中的内容;
proccessor.instructionRegister=memory[proccessor.instructionCounter];
用如下语句从指令寄存器中取出操作码和操作数;
proccessor.operationCode=proccessor.instructionRegister/100;
proccessor.operand=proccessor.instructionRegister%100;
接下来Simpletron必须确定操作码为读、写或加载等操作,可以用switch语句来区分SML的12种操作。
然后在打印出各寄存器的名字和内容、以及内存的全部内容。
这种打印输出通常称为“计算机的转储”(computerdump)。
完成了第一条指令的模拟,下面的任务就是准备让Simpletron执行下一条指令,因为刚才执行的第一条指令不是控制转移指令,那么只需要将指令计数寄存器的值加1就行了;
proccessor.instructionCounter++;
控制转移指令的模拟;如“如果累加器为0则转移”可模拟为;
If(proccessor.Accumulator==0)proccessor.instructionCounter=proccessor.Operand;
这样就实现了Simpletron模拟器指令执行的过程;
1.由键盘输入范例1的SML程序,执行并在屏幕上显示逐条指令执行过程中的“计算机转储”信息
2.将范例程序2(见附录B中)编写在文本文件fl2.txt中,Simpletron运行时从文件中读取程序再执行并最终将执行过程的“计算机转储”信息保存在另一个文本文件中。
3.程序运行时,有键盘读入文本文件名,再打开指定的文件执行完成以下任务的SML程序:
1)用标记控制的循环读取10个正数,计算并打印出它们的和;
2)用计数器控制的循环读取7个数,其中既有正数,也有负数,计算并打印出它们的平均值。
3)读取一组数,判断并打印出最大的数。
读取的第一个数表示要处理的数的个数。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
题目四、小型打字测验平台(限2人)
本系统提供给用户一个小型测验的平台,用来进行打字速度以及正确率的测验。
在使用本系统的过程中,用户还可以选择自己要进行测验的试卷(包括:
简单词汇练习、中级英文句子练习和高级整篇文章练习等),并查看自己的测验成绩,即打字准确率。
系统提供了排行榜对参加测验者的成绩进行了排行,并且排行榜上的信息是前5位测验者的信息,可以随着测验结果随时更新。
小型测验平台为学生提供一个打字正确率、打字速度的测验环境,在Windows系统下运行,学生在进行测验时可看到自己的测验开始时间,并可任选一个试卷进行测试。
系统会将学生选择的试卷内容显示到屏幕上,并提示学生测验开始的时问。
学生根据试卷内容开始测验打字正确率,在系统提示的光标位置开始进行打字测验,当学生输入的字符达到试卷内容中的字符数后,测验停止,系统提示学生测验结束的时间,并根据学生打字的实际情况和试卷中的原内容比较计算学生测验的正确率。
系统具有试卷管理功能。
当试卷内容经过测验练习已完全掌握后,可选择修改试卷选项,对试卷内容进行修改,则下次测验的内容会相应变化。
对于测验成绩系统也提供相应的管理,用户可以查看测验成绩排行榜中的成绩,并可清除排行榜中分数开始新一轮计分。
当测验开始时会提示用户榜首信息;当测验结束时能够判断用户的成绩是否达到入榜条件。
排行榜中共有5条测验记录。
如有用户达到入榜条件,则会将成绩最差者挤出排行榜。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
题目五、莫尔斯码(限1人)
所有的编码模式中最有名的可能要数莫尔斯(Morse)编码了,它是塞廖尔.莫尔斯在1832年为电报系统发明的。
莫尔斯码给每个字母、数字以及特殊字符(如句号、逗号、冒号和分号)赋予一组点划线。
在面向声音的系统中,点代表了短声音,划代表长声音。
点和划还用在面向光的系统和信号旗系统中。
文字之间的间隔表示为一个空格,即既不填写点也不填写划。
在面向声音的系统中空格表示一个短暂的停顿,其间什么声音也没有。
莫尔斯码的国际版如下表所示。
要求自己定义特殊字符(如句号、逗号、冒号和分号)的莫尔斯码。
并编写一个程序,程序中包含
1.输入一段文字,并立即将其转换成莫尔斯码。
2.从文本文件中读入一篇文本,将其转换成莫尔斯码并保存到另一个文本文件中。
3.从一个莫尔斯码文件中读入莫尔斯码并将其还原为文本。
4.自己制定一套莫尔斯编码,并用其对文本文件进行编码和解码的操作。
5.退出系统
注意:
在每个莫尔斯码的字母之间留一个空格,在每个用莫尔斯编码的单词之间留三个空格。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø至少采用文本菜单界面(如果能采用图形菜单界面更好)
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
题目六、学生成绩管理系统(限2人)
学生成绩管理系统是运行于Windows系统F的应用软件,主要用于对学生的学号、姓名等自然信息以及各项学科成绩进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理。
系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
该系统同时具有安全验证功能,根据用户的级别,其拥有的权限有所不同。
由系统判断用户名和密码是否符合,从而验证该用户能否成功登录。
用户登录后,系统会判断权限从而告知用户可以使用系统的哪些功能。
用户分为教师和学生两大类。
参考附录C管理系统示例。
功能需求描述如下。
①用户登录:
根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。
学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:
系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。
系统主控平台包括输入功能选项、调用相应程序两大需求。
教师和学生对应的系统主控平台是不同的。
所能进行的操作也不相同。
③创建学生成绩信息文件:
用户根据提示输入学生的学号、姓名、各科成绩,系统将学生成绩信息存储在系统磁盘的文件中。
以便进行管理、查找和备份。
④增加学生信息:
可在原有学生成绩信息文件的基础上增加新的学生成绩信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除学生信息:
提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的记录删除。
并选择是否继续进行删除操作。
⑥修改学生信息:
提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果存储于文件。
该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询学生信息:
按学号或姓名查询。
在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧学生成绩排行浏览:
根据学生的总分项进行排行。
⑨教师的用户管理:
教师对用户的管理也需要进行用户的创建、增加、删除、浏览。
教师创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。
教师还具有户的功能。
增加的用户及密码、权限等也被继续存储在yonghu文件中。
当某些用一用该系统时,还可以进行删除操作,并且教师具有修改用户权限的功能,学生和教师对于系统的权限是不一样的。
-----------------------------
题目七、时间、闹钟和万年历程序(限1人)
万年历程序是一个能在计算机屏幕上显示日期、时间、和日历的应用程序,其主要功能包括:
1.用户选择的任何一年的日历(包括阳历和农历);
2.允许用户查询任一阳历的年月日,是查询对应阴历的年月日
3.用户查询任一阴历的年月日查询对应阳历的日期;
4.允许用户查询某一年的所有节假日及其对应的阴历日期。
5.显示当天的日期、时间(时、分、秒随时间变化而改变),
6.允许修改时间,设定多个闹钟时间,并能准时报时。
其它要求:
Ø只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
Ø至少采用文本菜单界面(如果能采用图形菜单界面更好)
Ø学生可自动增加新功能模块(视情况可另外加分)
Ø写出课程设计报告,具体要求见相关说明文档
附录BSimpletron机器语言(SML)的操作码
操作码含义
输入/输出操作
#defineREAD10把一个字从终端读入指定的内存单元
#defineWRITE13把指定内存单元中的字写入终端
加载/存储操作
#defineLOAD20把指定内存单元中的字加载到累加器
#defineSTORE21把累加器中的字存储在指定内存单元中
算术运算
#defineADD30把指定内存单元中的字与累加器中的字相加,结果保存在累加器中
#defineSUBTRACT31把累加器中的字与指定内存单元中的字相减,结果保存在累加器中
#defineDEVIDE32把累加器中的字除指定内存单元中的字,结果保存在累加器中
#defineMULTIPLY33把累加器中的字与指定内存单元中的字相乘,结果保存在累加器中
控制转移操作
#defineBRANCH40转移到指定的内存单元
#defineBRANCHNEG41若累加器为负,转移到指定的内存单元
#defineBRANCHZERO42若累加器为0,转移到指定的内存单元
#defineHALT43停止,即程序的任务完成
范例程序2
内存单元数指令
00+1009(ReadA)
01+1010(ReadB)
02+2009(LoadA)
03+3130(SubtractB)
04+4107(Branchnegativeto07)
05+1309(WriteA)
06+4300(Halt)
07+1310(WriteB)
08+4300(Halt)
09+0000(VariableA)
10+0000(VariableB)
附录C、管理系统示例参考
以下示例仅作为参考,与前面的学生成绩和图书馆管理系统描述有一定出入。
设计时请按上述要求进行!
主界面:
附录D:
系统时钟、运行时间和随机函数使用示例:
这是一个使用随机函数随机生成一个加法表达式让用户计算,并计算出用户算题所用的时间的小程序;
#include
#include
#include
#include
#include
main()
{
inta,b,c;
charg;
clock_tstart,end;/*定义计时开始和结束两个时间变量*/
structdated;/*设置系统日期变量*/
structtimet;/*设置系统时间变量*/
getdate(&d);/*获取系统日期*/
gettime(&t);/*获取系统时间*/
randomize();/*用当前的时间初始化随机种子*/
while
(1)
{
clrscr();/*清楚屏幕上的显示内容*/
start=clock();/*开始计时*/
printf("\n\n\n");
printf("*****************************************\n");
printf("**\n");
printf("*PleaseCaculateanggivetheresult*\n");
/*显示系统日期和时间*/
printf("*Todayis%d.%d.%d*\n",d.da_year,d.da_mon,d.da_day);
printf("*thecurrenttime:
%d:
%d:
%d*\n",t.ti_hour,t.ti_min,t.ti_sec);
printf("**\n");
printf("*****************************************\n");
a=random(100);b=random(100);/*产生一个位于0到(max-1)之间的随机数*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 计算机 课程设计