计算机综合课程设计.doc

上传人:laozhun 文档编号:2882883 上传时间:2023-03-01 格式:DOC 页数:19 大小:4.78MB
返回 下载 相关 举报
计算机综合课程设计.doc_第1页
第1页 / 共19页
计算机综合课程设计.doc_第2页
第2页 / 共19页
计算机综合课程设计.doc_第3页
第3页 / 共19页
计算机综合课程设计.doc_第4页
第4页 / 共19页
计算机综合课程设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机综合课程设计.doc》由会员分享,可在线阅读,更多相关《计算机综合课程设计.doc(19页珍藏版)》请在三一办公上搜索。

1、“计算机综合课程设计”报告 姓 名 程 序优 良 中 及格 不及格 学 号09007301文 档优 良 中 及格 不及格 专 业计算机科学与工程系平 时优 良 中 及格 不及格 起始日期2008年 8月总 评终止日期2008年 9月设 计 文 档设计任务1) 计算器 输入一个算式(包含操作数(整形、浮点数)、操作符、优先级); 对算式进行编译,确定操作数、操作符、运算次序; 输出结果;2) 矩阵运算 学会建立模板类; 实现矩阵的“加”、“减”、“乘”、“数乘”、“转置” ; 内存动态分配并用随机数填充; 注意“加”、“减”、“乘” 要进行条件的判断; 使用模板类方式实现矩阵运算;3) 汽车客运

2、公司售票系统设某客运公司每日向10个城市发一个直达班车(中途不停留下客)。每天都发售今、明、后三天的车票。该系统在磁盘上存贮以下信息:1. 今、明、后三天每个班次的基本信息,包括:每个班次的班次号、发车时间、终点城市,座位数量;2今、明、后三天每个班次的旅客登记表,表项有:姓名、身份证号、座号。 系统功能要求如下: 1创建存贮一天(开始时创建今、明、后三天的,以后每天创建后天的)每个班次的基本信息的存贮系统; 2创建每个班次的旅客登记表(每次售该班次的客票时创建);3办理售票,即在旅客登记表中添加旅客信息(座位号不能重);4办理退票,即在旅客登记表中删除旅客信息; 5. 可查询当前指定班次的余

3、票数和座位号;6输出指定班次的旅客登记表(发车前交驾驶员用)。任务分析1) 计算器首先要把算式输入计算机内,就要创建一个对话框,实现人机交互,在对话框中输入算式,函数通过数组提取对话框中的算式,并对其进行分析(如优先级,语法等)运算,最后把结果用字符串输出在对话框中即可。2) 矩阵运算要进行矩阵的计算,首先需要有矩阵,建立一个模板类用于存储矩阵对象,还可以创建一个对话框让人输入所需要创建矩阵的行和列,模板类知道行和列后调用其下的Create函数来创建矩阵,就有了两个类对象。有了矩阵对象,就可以进行矩阵运算了:相加、相减、相乘、赋值及数乘(当然要判断条件),结果存放在另一个类对象中用于输出即可。

4、3) 汽车客运公司售票系统要创建一个班次信息类,包含每个班次的班次号、发车时间、终点城市,座位数量、已售数量,应派生自CObject类,在文档类中加入关于班次类的集合类,管理所有班次信息,在文档类Serialize函数中实现序列化;建立座位类,加入表示座位的顾客姓名、身份证号、座号的成员变量,在班次类中加入关于每个座位的集合类,管理所有座位信息,在班次类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中创建班次信息、售票、退票,并更新文档数据;每当班次信息发生变化(有新班次增加或售票或退票),更新数据;还要实现班次查询功能,视图类显示查询结果,班次信息要保存到文件并可读出。计思

5、路与流程1) 计算器1. 获取用户通过界面输入的表达式,记为总表达式;2. 将总表达式读入数组;3. 将算式中的空格去掉,并确定去掉空格后,字符串的末尾位置;4. 输入的算式是否以乘除运算符开头,是否以乘除加减运算符结尾,如果是,反馈信息并退出,否则进入步骤5;5. 输入的算式是否有连续的运算符出现,如果是,反馈信息并退出,否则进入步骤6;6. 判断总表达式中括号是否匹配,如不匹配,反馈信息并退出,否则进入步骤77. 判断是否有多余的括号(即整个算式的最左边和最右边不需要时),如果有,反馈信息并退出,否则进入步骤88. 判断当前总表达式是否为纯数值,如果不是,反馈信息并退出,否则进入步骤99.

6、 扫描加减运算符,如果有加减运算符,判断此时是否为总表达式以从右到左的顺序第一次完全匹配的位置,如果是,以此运算符为基准,将表达式分成两部分,分别记为子表达式;如果没有加减运算符符合条件,就扫描乘除运算符,判断此时是否为总表达式以从右到左的顺序第一次完全匹配的位置,如果是,以此运算符为基准,将表达式分成两部分,分别记为子表达式(此时注意除数不可以为零,若是零,反馈信息并退出,否则进入步骤11);10. 各分成的子表达式,再按步骤9进行计算,直到将运算符两边的子表达式皆为一个数值;11. 将结果转换为字符串,输出字符串结果;流程图:用户输入去掉空格以运算符开头结尾语法错误退出是否有连续的运算符括

7、号不匹配退出语法错误,退出括号是否匹配是否是否否是括号是否多余 括号多余退出是否是否纯数值否语法错误退出是提取子表达式判断是否为数值是否计算结果字符输出2) 矩阵计算1. 建立一个模板类,用于生成和存储矩阵。2. 创建一个对话框让人输入所创建矩阵的行和列,创建矩阵类对象(模板类知道行和列后调用其下的Create函数来实现),并用随机数填充它们。3. 再进行矩阵运算: 相加、相减(这两种运算要判断两个类对象的行数和列数是否相等,若不相等,显示错误信息并退出); 相乘(此运算要判断第一个矩阵的行数是否等于第二个矩阵列数,若不相等,显示错误信息并退出); 赋值(判断所在行和所在列是否存在,若不存在,

8、显示错误信息并退出); 数乘4. 结果存放与另一个类对象中,最后视图类输出即可。流程图:建立模板类创建对话框创建类对象矩阵间运算转置、数乘行、列是否相等可加减是否不可加减矩阵1列数是否等于矩阵2行数是可相乘否不可相乘所输列和行是否存在是否可赋值不可赋值输出3) 汽车客运公司售票系统1. 首先要有班次类,存储班次的信息,每个班次的班次号、发车时间、终点城市,座位数量、已售数量,且需要输入就要建立一个对话框来建立人机交互。2. 有了班次,就会有座位,座位的信息包含了座位的顾客姓名、身份证号、座号的成员变量,所以要有一个座位类用于存储座位的信息,当然乘客订票也需要人机交互,需要建立对话框。3. 班次

9、类和座位类都应派生至CObject,在文档类中加入关于班次类的集合类,管理所有班次信息,在文档类Serialize函数中实现序列化;在班次类中加入关于每个座位的集合类,管理所有座位信息,在班次类Serialize函数中实现序列化。4. 实现订票与退票功能,创建各自的对话框输入用于加入或删除座位类。5. 要有输出功能,能输出各班次信息,各个班次的座位信息等,可以在视图类中添加函数来实现此功能。流程图:建立对话框输入班次信息建立对话框向导类建立班次类存储班次信息建立对话框输入各班次座位信息建立对话框向导类建立座位类存储座位信息文档类中加入班次集合类指针,班次类中加入座位集合类指针订票退票班次信息以

10、及各班次座位信息的输出功能介绍1) 计算器 实现运算优先级别,包括运算符号的优先级判断,基于括号的优先级控制 实现具有加,减,乘,除基本四则运算功能 能把空格分析出来 能判断负数,运算小数 判断算式中左右括号是否配对了 判断是否有多余的括号(即整个算式的最左边和最右边不需要时) 判断当前总表达式是否为纯数值(即不能出现如a、&等字符) 判断是否除零 是否有连续的运算符(即+、-、*、/连续出现,出现3+*4的情况) 判断是否以乘除运算符开头,或乘除加减运算符结尾;2) 矩阵计算 类存储信息 内存动态分配并用随机数填充; 使用模板类方式实现矩阵的“加”、“减”、“乘”、“数乘”、“转置” ; 条

11、件的判断:u 相加、相减:判断两个类对象的行数和列数是否相等;u 相乘:判断第一个矩阵的行数是否等于第二个矩阵列数;u 赋值:判断所在行和所在列是否存在;3) 汽车客运公司售票系统 班次存储及查询功能; 创建今、明、后天的班次,创建大后天的班次时,将会自动删除今天的班次; 售票、退票业务的使用; 售票时能检验是否此班次已满座; 退票时能判断此人是否已购票; 视图类显示查询结果; 班次信息可保存到文件并可读出;1) 计算器建立如图所示“数学问题”-“计算器”菜单,来控制下面的“计算器算式输入”对话框:文件与对象描述 为对话框建立向导类CCaculator: OnCal(): 提取算式,去掉算式中

12、的空格,判断算式是否合乎语法;GetResult(char*, int):用递归法将算式断成一个个小算式,知道运算符的左右两边都只是一个数值(这中间也要判断是否除零);IfRedundant(char *, int ,int ):判断子算式中最左边和最右边的括号 是否多余;IfValue(char *, int ):判断算式除了第一个字符外,子算式中是否只有数字;是否为纯数值及一些运算符(即算式中没有出现诸如a这样的字符);Judge(char *, int ):判断提取的算式是否为纯数值及一些运算符、括号、小数点等(即算式中没有出现诸如a这样的字符);JudgePart(char *, in

13、t ):判断分下来的子算式是否已为一个数值;2) 矩阵计算菜单:建立如图所示菜单项:“建立”:用来控制用于输入所需矩阵行和列对话框;“矩阵1”:点击即可在视图中看到矩阵1的内容;“矩阵2”:点击即可在视图中看到矩阵2的内容;“相加”:点击即可看到矩阵1和矩阵2相加结果; “相减”:点击即可看到矩阵1和矩阵2相减结果;“相乘”:点击即可看到矩阵1和矩阵2相乘结果;“转置”:点击即可看到矩阵1转置后的结果;“赋值” “定位”:用于调出对话框,让用户输入赋值位置 (所在行与所在列)及要赋的数值; “赋值结果”:点击显示被重新赋值后,矩阵1 的内容; “数乘”“乘数”:调出对话框让用户输入所要乘的数;

14、 “结果”:点击显示数乘后矩阵1的内容;对话框及类:l “建立”菜单项对应下的对话框:用于输入所要建矩阵的行数和列数,以便于矩阵类创建对象;l “赋值”-“定位”菜单项对应下的对话框:m_ColNum: 存放对话框中“所在列”的参数;m_RowNum:存放对话框中“所在行”的参数;m_Value: 存放对话框中“所要赋的值”的参数;l “数乘”-“乘数”菜单项对应的对话框: m_Number用于存储对话框中输入的要乘的那个数;3) 汽车客运公司售票系统 菜单: 输入: 班次:点击显示添加班次对话框; 订票:点击显示选择班次的座位ListBox,双击就可出现乘客信息对话框; 退票:点击显示要退乘

15、客填写信息的对话框;显示: 班次表:点击查看今、明、后三天的班次信息; 座位表:点击查看所选择班次的座位信息;对话框及类:“输入”-“班次”菜单下对应对话框,用于输入班次信息:班次号 m_nBusOrder 座位数量 m_nChairNum;终点城市 m_strEndCity;已售数量 m_nSellNum;发车时间 m_odtStartTime;l 该类存储输入的班次信息在文档类创建的班次集合类中;l 每一次的班次信息输入,就是该类的一个对象;l mBusOrderArray.Add(pBusOrder)将对象存入集合类中;l Serialize(CArchive &Ar)函数用于序列化;l

16、 其余个成员变量都与对话框类中的成员变量一一对应,将把对话框中的信息读入该类对象中; “输入” -“订票”菜单下对应对话框,用于选定班次的座位分配: l OnInitDialog()将所有的班次添加入对话框中“班次”下拉列表里;l OnSelchangeBusorder()找出用户所需要的那个班次,并把它赋给mpBusOrder;l OnDblclkSeatlist()点击座位表Listbox,弹出填写订票乘客信息的对话框: 这里乘客输入自己的相关信息(如姓名、身份证号等)来订票;l UpdateSeat()把修改后的座位信息,添加到班次类下,座位集合类中; l 座位类用于存储每个乘客座位信息

17、;ll Serialize(CArchive &Ar)用于序列化;l 座位集合类的大小是由班次的座位数量来决定的;“输入” -“退票”菜单下对应对话框:乘客退票时,首先要输入乘客的信息,建立如上图所示的对话框,以及与对话框相应的向导类,向导类中的成员变量用于存储对话框中输入的信息;l OnInitDialog()将所有的班次添加入对话框中“班次”下拉列表里;l OnSelchangeBusorder()找出用户所需要的那个班次,并把它赋给mpBusOrder;l mpDoc是文档类指针,用于调用文档类下的班次集合类指针mBusOrderArray;l 然后根据乘客所在的班次,调用该班次下的座位

18、类指针,将乘客的座位对象里的信息改为初始状态(即没有售出时的状态);“显示” -“座位表”菜单下对应对话框:l OnInitDialog()将所有的班次添加入对话框中“班次”下拉列表里;l 在“班次”编辑框中选定退票乘客的班次后,OnSelchangeBusorder()找出用户所需要的那个班次;l 视图类中的函数显示该班次的座位信息即可;测试报告1) 计算器l 能进行基本的优先级判断,包括括号的优先级,能判断负数,进行基本的加减乘除计算,能计算小数。l 能进行语法的判断,判断是否有非法字符出现。l 判断左右括号是否成对出现,如果没有,将显示错误报告并退出。 l 判断是否有连续的运算符的出现,

19、如果有,将显示错误报告并退出。这里显示的是“*”、“/”运算符的同时出现: l 判断括号的多余性: l 判断除数是否为0: 2) 矩阵计算l 矩阵的加减乘计算(建立两个3*3的矩阵):矩阵1:矩阵2:相加结果:相减结果:相乘结果:矩阵1转置结果:l 赋值:(将矩阵1的第一行、第一列赋值为0):赋值后的矩阵1“赋值结果”:l 数乘(将矩阵1乘0):乘后矩阵1的“结果”:l 行数或列数不相等的两个矩阵是不能相加减的,第一个矩阵的行数与第二个矩阵的列数不相等时不能相乘(矩阵1,3*4矩阵;矩阵2,3*3矩阵): l 赋值时,所要赋值的位置一定要存在(在3*4的矩阵中,要在(4,3)号位置赋值是不行的

20、):3) 汽车客运公司售票系统 l 每一次单击“输入”-“班次”按钮,就会出现“班次信息”对话框: 填写完班次信息(班次号自增)后,单击对话框中【确定】按钮,就会把新增的班次添加进去,并在视图菜单中显示出来;l 订票时,单击“输入” -“订票”按钮,弹出“座位表” 对话框:在“班次”下拉列表中选择班次,如选择102号班次:双击列表框中的座位对象,就会弹出一个“乘客信息”,在对话框输入信息后,按“确定”,就能把座位对象的信息修改,单击“座位表”中的“确定”后,系统会自 动在102班次的已售座位数中自增1(初始化为0): 上图为班次表 定过一次票后,我们查看班次102的座位表,就可单击“显示”-“

21、座位表”,在“班次”下拉列表中选择“102”即可输出如下图所示: 可以看到“姚明”这个乘客已经在102班次中了;l 退票时,单击“输入” -“退票”按钮,弹出“退票” 对话框,在其中选择102班次,输入姚明的信息,单击“确定”,再次查看102的“座位表”时,已经没有姚明了,变成了待定状态,而且“班次信息”的102中已售座位数量又回归到了0(不显示):总结本次程序设计让我更加了解MFC,知道它的一些功能的实现,如集合类、序列化等,也有很多内部的函数,如集合类指针的RemoveAt(), Add()等,让我更加明白做程序前,尤其是比较大的程序的时候,实现要想好思路,做好流程思路的安排,否则边做边改非常麻烦,我的“汽车客运公司售票系统”还不够完善,计算机与人的交流界面也不是十分好,有待改进。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号