【南邮】C/C++程序设计选题(2025版15题)[2025-03-31]
程序设计题01:神奇的盒子
1 问题描述
手机等电子设备在使用过程中发出的信号可能干挠飞机驾驶舱与地面的正常通信,使飞机处于错误操作状态,严重影响飞行安全。《中华人民共和国民用航空法》也明文规定限制飞机上使用手机。2013年10月,美国联邦航空管理局发文,允许在飞机上使用“飞行模式”的个人电子设备,随后,很多国家也逐步开放在飞机上使用手机这一限制。
然而,实际情况可能更复杂。很多手机质量堪忧,即使设置成“飞行模式”也可能失效,对飞机飞行造成巨大的安全隐患。针对这一特殊情况,某航班进行大胆革新,制作了一批“神奇的盒子”。在乘客在乘坐飞机时,由该航班的乘务人员发给每个乘客,供乘客放置手机等电子产品。这些盒子上都有编号,只要将手机放进去,无论什么状态都能自动转为“安全飞行模式”,既能正常使用,也能保证飞行的安排。飞机着陆后,乘务人员将回收这些盒子。
请你设计一款方便乘务人员管理这些“神奇的盒子”的软件,并对这一服务展开客户满意度调查,为航空公司进一步改善服务提供依据。
2 功能要求
这款软件应该包括以下几个基本功能:
(1)乘务人员的工号和密码验证。完成盒子发放和发回的工作可能由同一个或者不同的乘务人员完成,也可能出现中途换岗。不管哪位乘务员完成都要对自己的工作负责,因此在使用该软件时需要输入他(她)的工号以及密码。
(2)盒子发放。乘务人员在发放盒子的过程中,需要登记乘客的姓名、有效证件、登机牌,出发地和目的地,手机机型及手机号码,备用联系方式,以及盒子的编号等信息。可以考虑登机牌已经包含了乘客身份的有效信息。另外,乘客的“备用联系方式”必须要填写;身份证号码等信息输入有明显错误也应给出提示。
(3)信息保存。将登记的所有信息以文件形式保存。
(4)回收盒子。飞机着陆时,乘客可以将手机等电子设备取出,将空的盒子直接还给乘务员,也可以放在自己的位置上离开,由乘务人员来回收,乘务人员收到盒子需确认“已归还”。所有的信息也必须保存到文件中。
(5)找寻遗失手机的乘客。如果发生手机未取出就离开的乘客,乘务人员能根据盒子的号码找到该乘客的备用联系方式,以取得联系。
(6)满意度调查。针对某航班这一服务,对乘客进行满意度调查。在乘客离开时按键,满意为1,不满意为2,不表态为0。请统计乘客的满意度。
【选做要求】
(1)如果乘客有什么其他意见和建议,请记录下来或由乘客填写,以便在以后的工作总结会议上进行总体展示。
(2)参加满意度调查的乘客,可参加抽奖活动。请设计一个抽奖过程,以手机号码为准。
(3)如果有什么更好的、更合理功能,请自加。
【其他要求】
(1)界面美观,交互方便,实用性强。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题02:ATM仿真软件
1 问题描述
ATM的管理系统是银行流程业务中,十分重要且必备的环节之一。在银行业务流程中,有着承上启下、起承转合的作用。本课题可以帮助人们更加熟悉ATM的各类操作,从而方便生活中的使用。其基本功能如下:密码验证机制;吞锁卡机制;存取款功能;账户查询功能;转账功能等。
2 功能要求
要能提供以下几个基本功能:
(1)系统内的相关信息文件由程序设计人员预先从键盘上录入,文件中的数据记录不得少于20条;
(2)设计并实现系统的相关界面,使用分级菜单提高人机交互性;
(3)登录系统必须输入正确的卡号和密码,输入错误时提示用户,连续输入错误3次则显示锁卡,用户登录后可以修改自己的密码;
(4)取款功能:输入取款金额,核对。若超出账户余额,则输出“余额不足”则,输出对应金额的现金,并提示用户是否打印回单,退卡,返回界面;
(5)存款功能:存入现金,核对金额,存入账户,提示用户是否打印回单,返回主界面;
(6)查询账户信息,包括用户名、余额信息,以及各种操作的历史记录;
(7)转账模块,提示用户输入正确的账号,检查转账条件是否满足,并完成转账操作;
(8)退出终端系统,提示用户保存好银行卡。
(9)卡号密码设定及系统各功能需与实际生活逻辑相符。
【选做要求】
在查询界面中提供以下功能:利用账户的历史余额数据,进行账户余额的预测分析。
【提示】
(1)用户的卡号和密码必须以密文形式保存在文件中,所以在验证账号信息的过程中必须包含加密和解密的过程。
(1)ATM仿真系统功能框图如下:
图1 ATM仿真软件功能框图
(2)结构体
根据用户信息,设计每个用户的结构体如下:
struct Account{//账号信息
char ID[20];//卡号
char name[20];//姓名
int password[6];//密码
double money;//账户余额
}
struct Statement{//单笔流水信息
char ID[20];//编号
char accountID[20];//对应账号
char time[20];//交易时间
int type;//交易类型
double money;//交易数额
char toAccunt[20];//对方账号
}
【其他要求】
(1)在上述功能要求的基础上,为了提高成绩,可以添加一些额外的功能。
(2)变量、方法命名符合规范。
(3)注释详细:每个变量都要求有注释说明用途;方法有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(4)程序的层次清晰,可读性强。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题03:泊车系统
1 问题描述
该系统要求对一个文件中所存储的汽车数据进行各种常规操作,如:查找、计费、显示等功能。通过此课题,熟练掌握文件、数组的各种操作,以及一些算法思想的应用,实现一个简单的泊车管理系统。
2 功能要求
(1)管理人员根据口令进入系统;
(2)管理车位信息(车位编号,状态)和每小时的收费费率(大车7元/小时,小车5元/小时,由停车时选择录入);
(3)停车时,建立对象,录入汽车停泊信息(车牌号,停泊位置,停泊开始时间);停车位为第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示;
(4)取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时按一小时计算)并显示在屏幕上。
(5)可以随时根据车牌查询是否入库。
(6)可以随时根据车位查询该位置上的相关信息。
(7)程序中用到的时间通过提取系统时间获得。
(8)所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
提供泊车用户注册和登录系统的功能;
用户进入系统后可查询当前空余车位号;
用户进入系统后可根据车位号或车牌号查询当前要缴纳的停车费用。
【具体说明】
- 数据结构:
用类实现, 类类型的结构:class P:
数据成员
车牌号 字符串 char no[9]
车位号 int pos
收费费率 double fee
成员函数自行定义;
对象成员:
类class Time
{int hour;
int minute;}
成员函数自行定义; - 通过查询数组int position[100]中的信息确定车位状态。
函数原型清单:(建议,也可以用其它的参数或函数名)
1 构造函数,析构函数
2 泊车操作 void putcar()
3 取车操作 void takecar( )
4 查询车牌信息 int search_no()
5 查询位置信息 int searc_pos()
6 其它各成员函数
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题04:模拟演出售票系统
1 问题描述
已知某城市有3个演出场馆,每个场馆有4个座位区域,请模拟实现演出售票系统。系统要求对文件中所存储的票务信息进行各种常规操作,如:查询、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。
2 功能要求
(1)角色:系统设置管理员和普通观众
(2)管理员功能如下
A.根据密码登录,对每个场馆进行演出日期和时段(9点场/14点场)进行安排(查、增、删、改)。每个场馆每天都会安排最多2场演出。某演出可能会在不同场馆、不同日期或时段被多次安排,但不能在同一日期时段被安排在不同场馆。
B.统计某个场馆某天已售票价总额。
C.对所有场馆某天的已售票价总额进行排序。
D.统计某演出所有已售票价总额。
E.对所有演出的已售票价总额进行排序。
(3)用户的功能:
A.新用户需注册
B.老用户以密码登录后,可以浏览演出安排信息(演出名称、演出场馆、日期、时段)
C.查看某日某演出某场馆各座位区域的余票情况,进行选座购票:A区50元,B区100元,C区150元,D区200元,各区域均有20个座位。
售票和退票:合理进行售票和退票,自动更新余票数量;
(4)提供菜单选择项,如角色选择、时间选择、功能选择等。
(5)所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
(1)对用户的输入进行一定的正确性检查。
(2)用户可以查看历史购票记录。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题05:背单词
1 问题描述
“背单词—个性化背词”是背诵英语单词的软件。用户可以根据自己的需求导入需背诵的词库,并可以编辑自己的词库。背单词时有两种模式供选择:系统可以给出中文提示,用户输入对应的单词,也可输出单词让用户输入中文意思。系统判定词义是否正确。如果正确成绩加十分,如果不正确给出提示并要求用户重新输入。
2 功能要求
代码要能提供以下几个基本功能。
(1)用户登录:
·新用户可以注册,旧用户直接登录。
·可以只打卡不背词,直接退出界面。
(2)单词本:
·存储单词基本信息,英文、词性、中文解释等。
·选择词库维护编辑单词本信息,实现增加、修改、删除、补充(单词已有,补充新的释义)的功能。
(3)单词背诵及成绩统计:
·选择单词预览进行单词学习。
·单词背诵时有两种模式选择,选择题背诵及拼写单词背诵,而且支持多次背诵。
·答对加十分,答错扣十分,错词计入错题本。
·可查阅自己的总成绩,未达过关成绩可以选择错题重背直至完全掌握。
(4)单词复习:
·背诵完全正确时界面显示没有错题继续努力。
·有错题时可以选择错题重背加强记忆。
(5)退出系统时可以进行打卡,统计背诵单词天数。
(6)所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
(1)对用户的输入进行一定的正确性检查。
(2)能统计每一个单词出现频率及背诵正确率,供以后出题时提供依据。
(3)能设置提醒功能,激励大家坚持下去。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题06:智能实验室预约系统
1 问题描述
为提高实验室利用率,开通实验室预约使用模式,实验室有40台电脑,每天开放时间为8:00-17:00,预约时间以 1个小时为单位,请设计一个预约系统。
2 功能要求
代码要能提供以下几个基本功能。
(1)设计两个角色:管理员和学生。
管理员:维护电脑状态,比如标记故障电脑,以!标记
查询实验室使用情况:比如当前实验人数,正在做实验的学生信息等等
查询学生信息
统计一天实验室使用情况保存在文件count.txt中:
学生: 查询实验室预约情况
预约时间
取消预约
报告电脑故障,保存在文件error.txt中,供管理员维护;
(2)管理员和学生需要先注册用户,再使用密码登录;
管理员数据结构:
struct admin:
{
char name[10]; //姓名
char password[10]; // 密码
char ID[5] ; //工号
。。。
}
学生数据结构:
struct student:
{
char name[10]; //姓名
char password[10]; // 密码
char ID[5] ; //学号
int time; //累计时间
。。。
}
(3)满足选座位的要求,根据实验室电脑使用信息,显示实时座位使用情况表,供学生选择,实验室座位图如下:
** ** ** **
** ** !* **
*# ** *# **
** ** ## **
** ** ## ##
空座位以*表示,被选择的座位以。#符()号标记,!标记为故障电脑;可以自行设计座位图和座位编号 。
实验室电脑信息数据结构
struct lab
{ int No; //编号
char name[10]; //姓名
char number[10]; //学号
int eight; //时间段状态,下同
int nine;
int ten;
int eleven;
int twelve;
int thirteen;
int fourteen;
int fifteen;
int sixteen;
}
(4)提供菜单选择项,如角色选择、时间选择、功能选择等
【选做要求】
(1)对用户的输入进行一定的正确性检查。
(2)管理员统计一周实验室使用情况。
(3)学生查看实验累计时间
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题07:“C语言”学习自测系统
1 问题描述
怎样才能让同学们更好地了解自己对“C语言”这门课程的学习情况?现要求设计一个系统,其中主要功能为:可以选择相应的章节(可以单个章节,也可以部分章节),难度,生成一份自测试题,根据学生的答题结果,生成一份结果分析报告,涵盖已掌握知识点情况和未掌握知识点情况。
2 功能要求
代码要能提供以下几个基本功能。
(1)设计题库(可增删修改题目),包含所有章节内容,并做相应的标记;
(2)根据选择随机生成所选章节部分或全部题目,生成自测试题;
(3)答题完毕后生成知识点掌握信息报告;
(4)可以将未掌握知识点做出标记,以供将来学习重点检验;
(5)可以根据教学大纲要求,将课程的重点、难点知识点着重标记,以供自测出题时系统有针对性地出题。
(6)所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
(1)从多维度分析知识点掌握情况,生成相应的信息报告。
(2)根据学生答题情况,设计预测算法,预测其可能的期末成绩。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题08:大创项目管理系统
1 问题描述
该系统模拟一个简单的大创项目管理系统,要求对文件中所存储的项目数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的项目管理系统。
2 功能要求
预先准备好学生和指导教师的基本信息文件(.txt格式,记录学生学号(格式为字母B后8位数字,规则可参考实际学号)姓名、教师工号(格式为8位数字)姓名,该文件不需要编程录入数据,可用文本编辑工具直接录入)
编写代码提供以下几个基本功能:
(1)提供菜单选项,让用户登录,操作:
a. 用户名为学号或工号,默认密码为学号或工号后4位;
b. 有数据校验;密码为4位,暗文显示。
(2)用户类型分为教师和学生
(3)学生用户功能:
a. 每个项目由三位同学组队完成(即项目负责人和两位组员);
b. 项目负责人对自己项目信息增、改、删、查;提交后不得修改,修改需要指导教师退回;
c. 组员仅可查看自己参与的项目信息;
d. 每位同学仅可加入一个项目;
e. 可修改自己的登录密码、学院、手机号、邮箱。
(4)教师用户功能:
a. 可按年份升降排序列出指导的所有项目(年份、名称、审核状态),也可按年份、审核状态分类查找,找到后可查看指导的某个项目的所有信息;
b. 收到学生提交项目申请后可进行审核(审核通过或退回修改);
c. 可修改自己的登录密码、学院、手机号、邮箱。
d. 一位教师每年度最多可指导5个项目
(5)项目数据功能:
a. 项目年份、项目编号、项目名称、项目负责人和组员信息(学号、姓名、学院、手机号、邮箱)、指导教师信息(姓名、工号、学院、手机号、邮箱)、项目简介;
b. 指导教师审核通过后,程序为项目自动分配项目编号,如“CXXZD2023001”,其中“CXXZD”为固定内容,“2023”为项目申请年份(程序获取当前年份),“001”为序号(程序按审核通过顺序自动编号)。
c. 所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
(1)用户可查看自己的提交、审核日志(具体操作和操作的时间)。
(2)增加管理员账号:管理员可通过系统录入并保存学生数据库和教师数据库;管理员可按年份升降排序列出所有项目(年份、名称、审核状态),也可按年份、学院、审核状态分类查找,找到后可查看指导的某个项目的所有信息;管理员可接受用户“忘记密码”的申请,重置默认密码。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题09:电信优惠套餐推荐系统
1 问题描述
电信公司常常推出各种类型的优惠套餐,体现上网流量、语音通话、资费上的各种优惠。要求设计一个优惠套餐推荐系统,将各种优惠套餐的情况存于文件中,系统提供办理业务的用户输入功能,主是提供自己希望得到的优惠,系统根据用户需求和已有套餐自动去匹配,挑选出最合适的套餐推荐给用户。
2 功能要求
系统中主要有管理员和普通用户两种身份的用户,二者各具有不同的功能,所有信息通过程序保存数据到文件中并从文件中读入数据。
管理员:
(1)以密码登录系统(密码用*显示,不得显示输入的字符)
(2)管理优惠套餐(同学自己参考电信移动公司的优惠政策)的具体信息,主要包括:优惠套餐编号(主关键字,唯一)月资费、通话时长、4G流量、宽带带宽等。管理员可以增加、删除、修改具体优惠套餐的信息
(3)可以管理并查询所有用户所享受的优惠套餐政策
普通用户:
(1)逐条输入(或根据选项来选择)自己希望享受的各优惠条件,具体到每月通话时常、4G流量需求,是否需要宽带等;
(2)在系统给出推荐的优惠套餐之后,进行确认。如果系统无法匹配出完全符合用户需求的优惠政策的情况下,提供给用户一些接近用户需求的优惠套餐推荐,供用户从中进行选择。
(3)可以随时查询本人的优惠套餐具体信息,可根据需要提出变更需求,系统再为其重新计算和推荐。
【选做要求】
(1)管理员可以统计各优惠政策的意向客户人数,为下一步调整优惠政策提供依据。
(2)同学可以自拟扩展功能并实现。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题10:南邮图书馆管理系统
1 问题描述
该系统要求建立一个南邮图书馆管理系统,并具有排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。
图书的信息应包括:索引号,名称,馆藏地址(三牌楼、仙林)、类别(人文、科技、外语等),数量,价格,归还日期,借阅次数,借阅状态(可借、不可借)。
2 功能要求
代码要能提供以下几个基本功能。
(1)管理员(1名)通过用户名密码登录系统,修改密码前需输入旧密码
(1.1)对已图书信息进行更新操作,包括添加和删除一种书的信息、修改图书信息(例如图书被借阅,书的数目减1,借阅次数加1,如果数量为0则状态为不可借);
(1.2)通过按图书的名称、索引号、借阅次数、价格区间、借阅状态、馆藏地址精准查询图书信息;
(1.3)显示所有即将到期的图书的信息(归还日期在三天之内),对用户发出还书提醒;
(1.4)按借阅次数、图书名称首字母、索引号、入库时间对所有图书进行排序;
(1.5)管理员可添加、删除、修改用户各项数据
(2)用户(多个)通过用户名密码登录系统,修改密码前需输入旧密码
(2.1)通过按图书的名称、类别、索引号、借阅状态、馆藏地址精准查询图书信息;
(2.2)查到想借的图书后进行借阅操作
(2.3)在借图书按照剩余归还时间、图书名称首字母进行排序
(2.4)每人最多借阅5本
(2.5)若忘记密码,则对管理员发出申请
(3)将所有相关信息内容存为文件。
【选做要求】
(1)最大借阅数可改为本科生最多借阅5本、研究生最多借阅10本
【其他要求】
(1)界面友好美观,交互方便;
(2)对用户的输入进行一定的正确性检查,使得输入信息符合逻辑与实际。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题11:红楼梦人物分析系统
1 问题描述
《红楼梦》是中国古典四大名著之一,其中人物关系错综复杂、耐人寻味。本课题要求编写一个程序,实现对《红楼梦》中的主要人物进行分析,包括出场次数、人物的亲密度等等。
人物的亲密度可以通过计算在同一篇幅中共同出现的频率进行计算。
2 功能要求
要能提供以下几个基本功能:
(1)系统内小说主体和小说主要人物请自行从互联网上进行搜索下载,并保存在文本文件中,待分析人物由用户从键盘上输入;
(2)设计并实现系统的相关界面;
(3)分析数据时读取保存的文本文件进行分析;
(4)可以按照要求进行数据排序,包括:按出场次数从多到少排序、按篇幅跨度从大到小排序、按与其他人物的关系密度从高到低排序等等;
(5)可以根据用户输入单独查询某位主人公的分析结果;
(6)输入查询人物的分析结果,包括:出场次数、篇幅跨度、与其他人物的关系密度。
【选做要求】
(1)保存功能:能够将用户看到的结果按其需求保存到指定位置或覆盖已有文本文件。
(2)异常处理与读取功能:在读取默认位置的文件出错时,能够按用户选择读取新的小说文本文件,增加程序的健壮性。
【提示】
(1)因为小说中的人物存在别名,实现过程中可以用正则表达式来在文本中寻找。
(2)程序的总体框图如下:
图1红楼梦人物分析系统总体框图
(3)数据结构:
依据选定的小说主要人物,定义人物的结构体,设计内容如下:
struct Role{//人物信息
char ID[20];//编号
char name[20];//姓名
int times;//出现次数
int freq;//账户频率
}
【其他要求】
(1)在上述功能要求的基础上,为了提高成绩,可以添加一些额外的功能。
(2)变量、方法命名符合规范。
(3)注释详细:每个变量都要求有注释说明用途;方法有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(4)程序的层次清晰,可读性强。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题12:打印日历
1 问题描述
该课题要求学生会读取系统时间,利用系统库文件中所给的数据结构,得到自己解决问题所要的数据,设计算法求解问题,再进行一些输出格式上的控制,实现根据系统时钟输出当月日历、当年日历的功能。
2 功能要求
(1)本课题不需要从键盘读入数据。
(2)读系统时间,计算生成当天的日期。
(3)计算生成当月的日历,打印当月的日历,输出到以自己学号命名的文件中(如:thismonth_B05060512.txt),同时也在屏幕显示。输出的格式如下(假设当天日期为2005年12月20日):
Calendar
December
________________________________
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
今天是: 2005年12月20日,星期二
当前时间是:22时40分43秒
(4)计算生成当年的日历,打印当年的日历,以每行两个月的形式输出(如下),向屏幕输出,也写入文件中(calendar_年号_B05060512.txt)。
***** ***** ***** *****
* * * * * *
***** * * * * *****
* * * * * *
***** ***** ***** *****
Jan Feb
________________________________ ________________________________
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28
30 31
(5)万年历,根据输入的年号,打印当年的日历,以每行两个月的形式输出(如上),向屏幕输出,也写入文件中(calendar_年号_B05060512.txt),注意闰年的考虑。
【算法提示】
在C/C++中对日期和时间操作所用到的数据结构和函数,下面将作简单介绍,这些相关的函数和数据结构的声明都在time.h文件中。详细的技术资料请参考C语言手册。
(1)日历时间
Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量。
日历时间在系统中是一个long int型数据。
(2)标准时间
标准时间也就是我们通常所使用的年月日小时分钟秒等,在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:
#ifndef _TM_DEFINED
struct tm
{
int tm_sec; /* 秒 - 取值区间为[0,59] /
int tm_min; / 分 - 取值区间为[0,59] /
int tm_hour; / 时 - 取值区间为[0,23] /
int tm_mday; / 一个月中的日期 - 取值区间为[1,31] /
int tm_mon; / 月份(从一月开始,0代表一月) - 取值区间为[0,11] /
int tm_year; / 年份,其值等于实际年份减去1900 /
int tm_wday; / 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 /
int tm_yday; / 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 /
int tm_isdst; / 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
#define _TM_DEFINED
#endif
(3)如何获取当前日期
这里介绍两个函数
time()函数获得当前的日历时间(Calendar Time),其原型为:
long time( long * timer );
localtime()函数是将日历时间转化为本地时间,其原型为:
struct tm * localtime( const time_t * timer );
我们可以先用time()函数获得当前的日历时间(long int型数),再将之通过localtime()转换为我们所需要的日期格式等等就可以了。例子如下(在VC++6.0环境下编译通过):
// examp1e.cpp : This example shows that how date information is got.
#include <iostream.h>
#include <time.h>
int main(void)
{
struct tm *local;
long t;
time(&t);
cout << “The Calendar Time now is:” << t << endl ;
local = localtime(&t);
local->tm_year = local->tm_year + 1900;
local->tm_mon ++;
cout << "Today is: " << local->tm_year<< “-” << local->tm_mon
<< “-” << local->tm_mday << " " << local->tm_hour
<< “:” << local->tm_min << “:” << local->tm_sec
<< " " << local->tm_wday << endl;
return 0;
}
运行结果如下:
The Calendar Time now is:1135176221
Today is: 2005-12-21 22:43:41 3
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题13:机房收费管理系统
1 问题描述
结合机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。
2 功能要求
主要功能模块:
(1)登录模块
(2)上机管理模块
说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。
每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表中所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表中的余额。
(3)上机卡管理模块
(4)充值挂失模块
(5)查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。
参考的数据结构:
上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。
上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码)
上机记录表永久保存,用于事后查询和统计。
所有信息通过程序保存数据到文件中并从文件中读入数据。
【其他要求】
1)界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。
2)能从实践生活出发,设计合理的功能模块
3)各类信息的数据结构明晰
4)可根据自身生活体验添加相关功能模块。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题14:媒体信息统计系统
1 问题描述
该系统要求实现一个简单、实用的媒体信息统计程序,主要功能包括媒体信息数据的新增、删除、修改、查找、统计输出等。所有统计数据都要利用文件系统保存,以备系统下次运行时使用。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法的应用。
2 功能要求
代码应满足以下几个方面的要求。
(1)媒体信息数据是由多条数据记录构成,每条记录包括:媒体类型、作者/表演者、出版者、地区、年份、风格、数字化编码类型、介质类型、体积、时长等数据项。其中媒体类型取值包括:文字、音频、图像、图形、视频、动画等。
(2)数据保存形式:所有信息数据要以文本或二进制文件保存。
(3)需要实现的功能要求
1)新增媒体信息数据条目。
2)查找数据(可按作者、出版者、年份、风格等查找)。
3)修改数据条目(先查找,再修改。若当前条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一记录后再修改)。
4)删除数据条目(请参考上面修改的处理)。
5)显示媒体信息数据列表。
6)数据统计(可作者、出版者、年份、风格等生成各种统计报表)。
7)保存数据到文件中、从文件中读入数据。
(4)用户界面要求
1)采用友好的字符界面,实现一个功能控制菜单。
2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。
【选做要求】
(1)数据完整性保证。例如:地区和风格名称必须严格、规范。
(2)指标名称的维护和扩展功能,让用户可以添加新的指标名称。
(3)支持多地区、跨年份、多指标综合统计能力,要求报表格式灵活、形式多样、内容清楚,具体请学生自己构思、设计。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
【提示】
(1)根据媒体数据信息要求,设计合适的数据结构(如结构数组、链表、对象数组等实现)。
(2)选择文件存储格式(文本或二进制)和文件名。
(3)采用自顶向下的设计方法,设计系统的总体模块组成和数据结构。设计主程序的流程图和界面。
(4)对于每项操作,设计一个函数(方法、子模块)进行实现,要明确函数原型。
(5)根据设计结果分步开发实现各模块,最后进行总体集成。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。
程序设计题15:模拟电影院售票系统
1 问题描述
已知某电影院有5个放映厅,请模拟实现电影放映排片和观众购票。系统要求对文件中所存储的票务信息进行各种常规操作,如:查询、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。
2 功能要求
(4)角色:系统设置管理员和普通观众
(5)管理员功能如下
A.根据密码登录,对每个放映厅进行第二天的排片工作(查、增、删、改)。
B.统计某部电影当天的票房。
C.对当天的票房进行排序。
(6)用户的功能:
A.注册,
B.以密码登录后,可以浏览排片信息
C.查看每个放映厅的售票情况,如:
□□□□□□□□□□
□□□□□□□□□□
□□□●●□□□
□□□●●●□□
□□□□□●●●
符号含义:●已售出 □待售
选座购票:售出的位置变更符号。
售票和退票:合理进行售票和退票,自动更新余票数量;
(4)提供菜单选择项,如角色选择、时间选择、功能选择等。
(5)所有信息通过程序保存数据到文件中并从文件中读入数据。
【选做要求】
(1)对用户的输入进行一定的正确性检查。
(2)用户可以查看历史购票记录。
【其他要求】
(1)界面美观,交互方便。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
3 开发环境
开发工具可以选择TC2.0、TC3.0、VC++ 6.0或者Dev C++等C++开发工具,或者与老师讨论选择自己熟悉的开发工具与平台,鼓励采用MFC等开发工具,实现彩色或图形操作界面。