- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安郵電學院
数据结构课程设计报告
题 目: 魔王语言/多项式相乘
系部名称
:
专业名称
:
班 级
:
学号
:
学生姓名
:
指导教师
:
时间
:
2010年12月06日 至2010年12月15日
一、?课程设计目的
通过对《魔王语言》的编写,对所学数据结构算法以及对C语言数组,文件的读写的一个巩固,并能够运用现有知识进行简单的程序设计,熟悉掌握程序设计的一般步骤,对所要编写的程序进行模块的分解,进而能够更好更快的进行设计,养成良好的程序设计习惯。
二、课程设计内容
运用现有数据结构及C语言知识,独立编写一个魔王语言翻译系统。
问题描述
有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:
(1)α→β1β2 …… βm
(2)(θδ1δ2 …… δn)→ θδnθδn-1 …… θδ1 θ
在这两种形式中,从左到右均表示解释;从右到左均表示抽象。试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。
基本规则
现在有以下三种规则,设大写字母表示魔王语言解释的词汇,小写字母表示人的语言的词汇;希腊字母表示可以用大写或小写替换的变量。魔王语言可含人的词汇。
(1)B-tAdA
(2)A-sae
(3)示例:
魔王说:B(ehnxgz)B
解释成人的语言:tsaedsaeezegexenehetsaedsae
若每个小写字母含义如下表示:
t
d
s
a
e
z
g
x
n
h
天
地
上
一只
鹅
追
赶
下
蛋
恨
则魔王说的话是:天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅
三、需求分析
设计一个简单的魔王语言翻译系统,能够对其进行简单的翻译操作,用文件来存储相应的规则以及翻译后的结果。该翻译系统能够对魔王语言进行对应规则的翻译(去括号操作,对应大写转换小写)。
四、概要设计
1.系统结构图(功能模块图)
对系统进行分析,给出系统结构图;
主函数main
主函数main
读取文件模块
录入所需翻译魔王语言
去括号模块
开始进行大小写转换,并将其如队
不再存在括号
将翻译后的魔王语言写入文件
2.功能模块说明
对各个模块进行功能的描述。
1.登录模块:
用户通过账号,密码验证,正确后方可进行一下模块的操作
2.读取文件模块:
将魔王翻译对应的规则及汉语意义读出并显示在用户屏上,如果没有相应rule.txt和mean.txt文件则系统创建并执行读取文件模块。
3.去括号模块:
将从键盘录入的所需翻译的魔王语言进行去括号操作,主要应用栈和队列来实现去括号操作,该模块操作完成后将数据存在数组中(数据中将不再存在括号),进而进行下一步的操作。
4.翻译模块:
将去括号处理完成的数据进行如队操作,遇到大写则按相应规则入队,全部入队完成后,将数据出队,然后将翻译后的数据及对应的汉语意思写入到result2.txt及result.txt文件中。
五、详细设计及运行结果
流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。
否是否结束输出相关翻译对应含义输出对应翻译规则开始fp=fopen(f:\\rule.txt,rt))= =NULL是
否
是
否
结束
输出相关翻译对应含义
输出对应翻译规则
开始
fp=fopen(f:\\rule.txt,rt))= =NULL
是
fopen(f:\\rule.txt,rt))= =NULL读取rule.txt文件相关信息开始
fopen(f:\\rule.txt,rt))= =NULL
读取rule.txt文件相关信息
开始
是
是
创建rule.txt文件
创建rule.txt文件
否
否
读取mean.txt文件相关信息
读取mean.txt文件相关信息
是
是
创建mean.txt文件fopen(f:\\
创建mean.txt文件
fopen(f:\\mean.txt,rt))= =NULL
否
否
输出相关规则信息
输出相关规则信息
结束
结束
void read_files() /*读取文件模块*/
{
FILE *fp;
int i=0;
if((fp=fopen(f:\\rule.txt,rt))==NULL)
{
printf(\n\n*****库存rule.txt文件不存在!\n任意键创建……\n);
getch();
文档评论(0)