1、 数据结构 课程设计报告 专 业 计算机科学与技术 班 级 (1) 姓 名 学 号 20101308003 指导教师 起止时间 2011.102011.12 课程设计课程设计:利用栈求表达式的值利用栈求表达式的值 一、一、任务描述任务描述 建立试题库文件,随机产生 n 个题目;题目涉及加减乘除,带括号的整数混合运算;随 时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。 (假设这是一个 可供小学生练习算术运算的小系统)可供小学生练习算术运算的小系统) 要求:要求:根据以上任务说明,设计程序完成功能。 二、二、问题分析问题分析 1、功能分析功能分析 分析设计课题的要求,要求编程实
2、现以下功能: (1) 建立试题库文件即创建试题库函数 (2) 实现整数混合运算即建立栈实现运算 (3) 查看历史分数即建立函数查看 2、数据对象分析、数据对象分析 由于其中涉及了能回顾历史成绩以及随机做题等问题, 所以就考虑用到了文件的打开与 关闭以及文件的读写功能。由于此设计要实现多个功能,所以为了源代码清晰明了,所有的 函数不是用的嵌套方式, 而是对每个功能都用一个子程序来实现, 然后通过对子程序的调用 来达到设计的要求 三、数据结构设计三、数据结构设计 有关的定义如下: typedef struct shiti /*定义表达式*/ char a20; /*存放表达式*/ long res
3、ult; /*存放用户输入的答案*/ xuanti; typedef struct SqStack1 /*建立数字栈*/ int *base; int *top; int stacksize; SqStack1; typedef struct SqStack2 /*建立运算符栈*/ char *base; char *top; int stacksize; SqStack2; 四、功能设计四、功能设计 (一)主控菜单设计 为实现程序的操作功能, 首先设计一个含有多个菜单项的主控菜单程序, 然后再为这些 菜单项配上相应的功能。 程序运行后,给出以下项的内容和输入提示,如下: 1. 输入表达式 2
4、. 表达式结果 3. 继续输入表达式 4. 显示结果 (二)程序模块结构 由课题要求可将程序划分为以下几个模块(即实现程序功能所需的函数) : 1.写入函数WriteToFile() 2.读出函数ReadFromFile() 3.栈函数stack() (三)函数调用关系 程序的主要结构(函数调用关系)如下图所示: 其中 main()是主函数,它进行菜单驱动,根据选择项 09 用相应的函数。main()函数使 结构如下: void main() int i; char menuitem; Title(); loop:menuitem=menu(); system(“cls“); if(menuitem=3) EXIT(); return ; else if(menuitem=1) INSTRUCTION(); goto loop;/ 返回菜单界面; else if(menuitem=