《程序设计(上机)》
课内周数:2周
本次设计的课题采用每人一个题目,五个题目,学号最后一位为1-5的,对应做1-5题,
尾号为6,7,8,9,0的,对应做1,2,3,4,5题。
提交文档
1. 报告一份,每人提交一份
2. 软件运行的视频截图
3.    源代码
最后一节课上以文件夹的形式提交到教师指定地方
文件夹命名:程序设计_班号_学号_姓名
评分标准
1. 专业课程设计Ⅰ成绩采用五级制,其对应关系如下:
百分制  90-100    80-89  70-79  60-69  0-59
五级制  优秀      良好    中等    及格    不及格
2. 个人成绩由四部分组成:
1)指导教师评价成绩,占30%左右;
2)报告评阅成绩,占40%左右;
4)平时成绩,占30%左右;
内容与要求
  题目一:单词
  (一)课题内容
要求用CC++模拟猜单词游戏。游戏包括:单词管理、玩家纪录、猜词过程、系统设置等必须完成的基本功能以及成绩计算、猜词时间限制、词库管理等选做的扩展功能。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法。
  (二)课题要求
课题分基本要求和扩展要求,基本要求是必须完成的,扩展要求视能力自选一个或多个完成。
1. 基本要求
(1) 单词管理:程序中用来做谜题的单词必须存放在磁盘文件中,文件中的单词数不得少于200个。
(2) 玩家纪录:程序要求记录前五名成绩。成绩指标自行设计,必须包括时间。记录的时候要求有排名、玩家姓名、成绩三项,并保存在文件中。在程序开始运行的时候就必须读入,以便随时供玩家查询、及时更新成绩。
(3) 猜词过程:①先请用户输入猜的单词数量,可以有一个默认值。②随机抽取单词,对每个单词,系统根据谜底单词长度在屏幕上显示相应个数'-',假设谜底单词为"hello",则在屏幕上输出"-----"玩家输入一个字母进行猜测,如果这个字母不在单词中,系统提示玩家不对;如果猜对字母,比如玩家输入了一个'l',则在屏幕上输出"--ll-"重复,直到玩家在规定的次数内猜出了单词或者超过次数游戏失败。⑤显示玩家每个单词猜对与猜错次数等统计信息。如果玩家猜出单词,计算成绩,如进入前五名提示玩家并记录存储到记录文件中。⑥询问玩家是否开始新一轮猜词,如果玩家选“否”,则系统退到外面的菜单。
(4) 系统设置:猜词次数可以为默认值。玩的时候,可以对其进行修改。     
2. 扩展要求 
(1) 成绩计算:考虑各种情况下所设计的成绩计算方法是否合理。
(2) 除了玩家猜词的次数有限制之外,对玩家猜一个单词的总时间进行限制。
(3) 可以向单词库中添加单词、删除单词或修改单词。
(三)考核及报告要求
1. 考核
根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
2. 报告要求
见本大纲最后的一个报告样例。
题目二:打印万年历
(一)课题内容
CC++编程实现一个简单、实用的万年历程序。主要功能为在屏幕上显示任意年月的月历,按每行两个月的格式输出当年或指定的任意年的年历。通过此课题,熟练掌握数组、格式输出、字符串处理、时间函数的调用、文件的各种操作,以及一些基本的日期算法思想。
  (二)课题要求
课题分基本要求和扩展要求,基本要求是必须完成的,扩展要求视能力自选一个或多个完成。
猜词游戏题目
1. 基本要求
(1) 读取系统时钟,计算与日期相关的信息,首先打印出当月的月历,在当月月历的最下方也下列两行方式显示与当前有关的信息:
今天是: 20051220日,星期二
当前时间是:224043
(2) 输入任意年号能得到指定年的年历(万年历)。
(3) 将屏幕上显示的月历和年历均存为文本文件以便今后读取。
(4) 按每行两个月的格式显示今年的日历,形式如下:
***** ***** ***** *****
    * *  * *  * *  *
***** *  * *  * *****
*    *  * *  *    *
***** ***** ***** *****
              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
                ……                                  ……
2. 扩展要求 
(1) 重要节假日用一个文本文件进行设置,文件格式为txt。程序应通过读取节假日文件的信息来对日历上的节假日日期进行标注。从而在日历上显示节假日信息。如十月份的1号显示为:国庆节 1
(2) 提供按年上下翻页的功能来实现对上一年或下一年的年历的查询功能。                            
(三)考核及报告要求
1. 考核
根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
2. 报告要求
见本大纲最后的一个报告样例。
题目三:火车票务管理系统
  (一)课题内容
CC++语言实现一个简单的火车票务系统,能实现火车车次信息管理、查询、统计、排序等功能,并提供售票及退票服务。通过此课题,熟练掌握文件、数组、结构体的各种操作,以及一些算法思想的应用。
  (二)课题要求
课题分基本要求和扩展要求,基本要求是必须完成的,扩展要求视能力自选一个或多个完成。
1. 基本要求
(1) 提供录入功能,录入一个火车站的n个发车班次信息存于文件schedule.dat中,具体有下列信息:
车次  发车时间  起点站  终点站  行车时间  额定载量  余票数量
(2) 可随时增加、修改、删除车次数据。
(3) 浏览班次信息,可显示出所有车次当前状况(如果当前系统时间超过了某班次的发车时间,则显示此车已发出”的提示信息)
(4) 查询路线:可按班次号、起点站、终点站查询售票情况。
(5) 按发车时间的先后给出发车时间表(排序方法自选),存入文件保存(sort.dat)。
(6) 售票和退票功能:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新余票数量;退票时,输入退票的班次,在本车次发出前半小时才可以退票,自动更新已售票数和余票数量。     
2. 扩展要求 
(1) 角区分:以上的功能(1)和(2)只有管理员凭密码才能操作;其余所有的功能管理员和普通访客均可操作。
(2) 某人一旦购买了某一天的某一趟火车,则不允许他预订同一天其他班次的火车。                             
(三)考核及报告要求
1. 考核
根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
2. 报告要求
见本大纲最后的一个报告样例。
题目四:文档编辑器的设计与实现
  (一)课题内容
CC++语言实现一个简单的文档编辑器,该系统要求对一个文本文件中的内容进行各种常规操作,如:插入、删除、查、替换、排序等功能。通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的功能。
(二)课题要求
课题分基本要求和扩展要求,基本要求是必须完成的,扩展要求视能力自选一个或多个完成。
1. 基本要求
(1) 首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。
(2) 统计功能:可方便地统计出文档中所有出现次数最多和最少的单词。
(3) 查与替换功能:能够查任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。
(4) 显示功能:编辑完成后可以显示编辑后的文档。
(5) 抽取功能:重复单词只保留一份拷贝,单独存于另一个文件中。
(6) 排序功能:按单词的长度由小到大排序。     
2. 扩展要求 
(1) 按单词出现的频率由小到大排序。
(2) 不是简单地以空格为分隔符来确定单词,单词必须以字母开头,加入一些规则将单词和非单词分别用不同的文件存储。                             
(三)考核及报告要求
1. 考核
根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
2. 报告要求
见本大纲最后的一个报告样例。
题目五:大整数的算术运算
  (一)课题内容
CC++语言实现一个简单的大整数的算术运算程序。主要功能计算两个大整数(20位)的加减法等算术运算,按指定的格式输出结果。通过此课题,熟练掌握字符串、格式输出、文件的各种操作,以及基本的计算算法思想的应用。
(二)课题要求
课题分基本要求和扩展要求,基本要求是必须完成的,扩展要求视能力自选一个或多个完成。
1. 基本要求
(1) 输入功能:能实现从键盘或文本文件输入代表大整数的字符串并用合适的结构存储,能实现输入整个表达式(含大整数和相应的运算符)。
(2) 输出功能:将算式及计算结果按照一定格式批量输出到屏幕及另一个文本文件中。
(3) 判断功能:能够对输入的表达式判断其正确与否,如果表达式不正确则无法进行运算;
表达式正确的情况下执行运算功能。
(4) 运算功能:可以实现大整数的加法和减法运算。
2. 扩展要求 
(1) 能实现大整数的乘除法运算,并且定义一些常用的数学函数对大整数进行运算。
(2) 定义一些常用的数学函数对大整数进行运算,如:sqrt(x)pow(x,y)等。