超市数据统计汇总系统
1.问题描述:
在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据
项的值叠加起来,生成一个分类汇总表。
假设某超级市场销售有 m 种商品(假设商品的编号为 1,2,3,┅┅,m),
有 n 台前台收款机(假设收款机的编号为 1,2,3,┅┅,n)进行收款,以记
录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和
销售额。记录由 4 个域组成:收款机编号、商品编号、销售数量、销售金额。构
造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。
2.实现要求:
⑴ 编写实现将数据记录插入到数据文件的最后的函数;
⑵ 编写以收款机为单位的数据分类处理函数。构造 n 个单链表,每个链表
保存一台收款机的销售记录,这 n 个单链表的头指针存放在一个指针数组中,通
过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记
录(数据文件中的全部记录)分解插入到 n 个单链表;
⑶ 统计每台收款机的销售总额;
⑷ 编写以商品为单位的数据分类处理函数。构造 m 个单链表,每个链表
保存一种商品的销售记录,这 m 个单链表的头指针存放在一个指针数组中,通
过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录
(数据文件中的全部记录)分解插入到 m 个单链表;
⑸ 以商品为单位,统计每种商品的销售总额。
⑹ 设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统
计销售总额、退出系统等最基本的功能。
35 / 43
26. 计划评审技术 PERT
1.问题描述:
计划评审技术 PERT (Program Evaluation and Review Technique)是用于项目管
理的先进方法,它把一个工程项目的各项活动,它们之间的联系和约束(各活
动之间在物理上、工程上和逻辑上的制约),经过组合分解、统筹安排,有机
地构成一个整体,用网络模型直观地反映出来,力求在一定的资源约束条件下,
使得工程周期最短。PERT 具有较强的预测、计划、协调和控制能力。
在 PERT 网络图中,顶点表示项目对象,有向边表示活动,有向边上的数字表
示完成边的起点项目对象到开始终点项目对象所花费的时间代价(在本题中单
位为天)。因此,利用 PERT 网络图,就能确定完成工程的关键路径,从而可以
有效地组织计划实施,并进行协调与控制。下图是一个工程的 PERT 网络图(虚
线表示时间代价为 0)示例。
具体的计算方法是:
? 总时间:从起点到终点的所有路线中活动时间的最大值;
? 最早开始时间:从起点到达该点的所有路线的活动时间的最大值;
? 最早结束时间=最早开始时间+活动时间;
? 最晚开始时间=总时间-从该点到终点的所有路线中活动时间的最大值;最
早开始时间和最晚开始时间相同的就是关键路径上的顶点;
? 总时差=最晚开始时间-最早开始时间。
2.实现要求:
⑴ 以(Vi
,Vj
,d)的形式从键盘输入 PERT 图的数据并以正邻接链表方式保存;
⑵ 以二维矩阵方式输出所输入的 PERT 图;
⑶ 对 PERT 图进行拓扑排序,然后输出拓扑序列;
⑷ 对 PERT 图进行逆拓扑排序,然后输出逆拓扑序列;
⑸ 完成网络计算(计算表格如下)并输出;
⑸ 应设计一个菜单,具有以上要求的功能和退出系统等功能;
活动名 活动时间 最早开始时间 最早结束时间 最晚开始时间 最晚结束时间 总时差 关键路径
37 / 43
27. 通信线路的敷设问题
1.问题描述
若要在下图中的 13 个城市之间建设通信网络,只需要敷设 12 条线路即可,
边上的数字为两个城市之间建设线路的花费,单位:拾万元。如何以最低的经济
代价建设这个通信网,是一个网的最小生成树的问题。
2.基本要求
⑴ 以邻接矩阵方式保存图的数据,并以邻接链表的形式输出图的数据;
⑵ 以边表方式保存图的数据,并以邻接矩阵方式的形式输出图的数据;
⑶ 用 Prim 算法求网的最小生成树,并以邻接链表的形式显示所求得的最
小生成树,然后计算敷设相应的通信网的总造价;
⑷ 用 Kruskal 算法求网的最小生成树,并以邻接链表的形式显示所求得的
最小生成树,然后计算敷设相应的通信网的总造价;
⑸ 整个应用设计成一个菜单,具有上述功能要求和退出系统的基本的功
28. 简单个人电话号码查询系统(二叉排序树)
1.问题描述
人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实
现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行
快速查询。
2.基本要求
(1) 在外存上,用文件保存电话号码信息;
(2) 在内存中,设计数据结构存储电话号码信息;
(3) 提供查询功能:根据姓名实现快速查询;
(4) 提供其他维护功能:例如插入、删除、修改等;
(5) 按电话号码进行排序。
3.设计思想
由于需要管理的电话号码信息较多,而且要在程序运行结束后仍然保存电话
号码信息,所以电话号码信息采用文件的形式存放到外存中。在系统运行时,需
要将电话号码信息从文件调入内存来进行查找等操作,为了接收文件中的内容,
要有一个数据结构与之对应,可以设计如下结构类型的数组来接收数据:
const int max=10;
struct TeleNumber
{
string name; //姓名
string phoneNumber; //固定电话号码
string mobileNumber; //移动电话号码
string email; //电子邮箱
} Tele[max];
为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用折半
查找,但是,在数组中实现插入和删除操作的代价较高。如果记录需频繁进行插
入或删除操作,可以考虑采用二叉排序树组织电话号码信息,则查找和维护都能
获得较高的时间性能。更复杂地,需要考虑该二叉排序树是否平衡,如何使之达
到平衡。
39 / 43
29.作业调度问题
1.问题描述
假设计算机只有一个 CPU,在任何时候只能运行一个作业,并且作业的执
行是非抢占式的(作业一旦被调度后占有 CPU 就一直执行完成)。
作为例子,现假设有 5 个作业,如表 1 所示。
作业次
序
进入时
间
运行时
间
Job1 0 15
Job2 6 8
Job3 12 5
Job4 15 10
Job5 18 7
对于先来先服务的调度策略,各个作业的进入时间、等待时间、开始时间、
完成时间如表 2 所示,则 5 个作业的平均等待时间为:(9+11+13+20)/5=10.6,
平均运行时间为:(15+8+5+10+7)/5=9
作业次
序
进入时
间
等待时
间
开始时
间
运行时
间
Job1 0 0 0 15
Job2 6 9 15 8
Job3 12 11 23 5
Job4 15 13 28 10
Job5 18 20 38 7
对于最短服务时间优先的调度策略是:当一个作业完成后,从已进入的所有
作业中选取运行时间最短的作业开始运行。各个作业的进入时间、等待时间、开
始时间、完成时间如表 3 所示,则 5 个作业的平均等待时间为:(3+14+10+20)
/5=9.4,平均运行时间为:(15+8+5+10+7)/5=9
作业次
序
进入时
间
等待时
间
开始时
间
运行时
间
Job1 0 0 0 15
Job3 12 3 15 5
Job2 6 14 20 8
表 1:作业序列表
表 2:作业序列表
表 3:作业序列表
40 / 43
Job5 18 10 28 7
Job4 15 20 35 10
通过随机函数生成方式生成 n 个作业,每个作业的进入时间为 Ei、所需的
运行时间为 Ti 都通过随机函数生成,(Ei∈[0,5000],Ti∈[5,50]),i∈[1,n],
n∈[1,5000] )。
2.基本要求:(下面每个操作要求可能需要编写若干个函数)
⑴ 将生成的作业信息(序号、进入时间、运行时间)数据形成结点,插入到
作业链表中;
⑵ 按先来先服务的调度策略将作业链表中的所有结点构造成作业队列链
表(原作业链表不变,实际上是入队,建立队列),输出各个作业的开始时间、等
待时间、完成时间(实际上是结点依次出队,全部出完);计算所有作业的平均等
待时间、平均运行时间。
⑶ 按最短服务时间优先的调度策略将作业链表中的所有结点构造成作业
队列链表(原作业链表不变,实际上是入队,建立队列);输出各个作业的开始时
间、等待时间、完成时间(实际上是结点依次出队,全部出完);计算所有作业的
平均等待时间、平均运行时间。
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。