C高级语言程序设计课程设计题目.docx
《C高级语言程序设计课程设计题目.docx》由会员分享,可在线阅读,更多相关《C高级语言程序设计课程设计题目.docx(29页珍藏版)》请在冰豆网上搜索。
C高级语言程序设计课程设计题目
《C++程序设计》课程设计选题
选题说明:
(1)学号后两位除以5得余数n,可以在尾数为n或n+5的题目中任选一题;
(2)部分题目可以组队完成,限2-3人,队员中只要有一位同学的学号尾数满足
(1)所规定的规律即可。
第一类题目应用类:
题目1:
年历显示(可组队)
(1)输入一个年份,输出是在屏幕上显示该年的日历。
假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
题目2:
小学生测验(可组队)
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRYAGAIN”。
题目3:
输出九九乘法口诀
输出九九乘法口决表(循环结构的应用,表的格式自己设定)
题目4:
运动会比赛计分系统(可组队)
要求:
初始化输入:
N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数
各项目名次取法有如下几种:
取前5名:
第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:
第一名得分5,第二名得分3,第三名得分2;
功能要求:
(1)系统以菜单方式工作
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩
(4)查看参赛学校信息和比赛项目信息等。
题目5:
学生学籍管理系统(可组队)
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
功能要求:
(1)系统以菜单方式工作。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
(3)删除已知学号的学生信息;
(4)查找已知学号的学生信息;
(5)按学号,专业输出学生籍贯表。
(6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
题目6:
排班系统(可组队)
学校实验楼有7名保安人员:
钱、赵、孙、李、周、吴、陈。
由于工作需要进行轮休制度,一星期中每人休息一天。
预先让每一个人选择自己认为合适的休息日。
请编制程序,打印轮休的所有可能方案。
当然使每个人都满意,例如每人选择的休息日如下:
钱:
星期一、星期六
赵:
星期二、星期四
孙:
星期三、星期日
李:
星期五
周:
星期一、星期四、星期六
吴:
星期二、星期五
陈:
星期三、星期六、星期日
运行结果:
Solution:
1
赵钱孙李周吴陈
星期四星期一星期三星期五星期六星期二星期日
=============================================================
Solution:
2
赵钱孙李周吴陈
星期四星期一星期日星期五星期六星期二星期三
=============================================================
Solution:
3
赵钱孙李周吴陈
星期四星期六星期三星期五星期一星期二星期日
=============================================================
Solution:
4
赵钱孙李周吴陈
星期四星期六星期日星期五星期一星期二星期三
=============================================================
题目7:
通讯录管理系统(可组队)
设计一个实用的小型通讯录程序,具有添加,查询和删除功能。
由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。
电话号码可由字符和数字组成。
实现功能:
(1)系统以菜单方式工作
(2)信息录入功能
(3)信息浏览功能
(4)信息查询功能
(5)信息修改功能
(6)系统退出功能
题目8:
学生选课系统(可组队)
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。
试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
题目9:
学生考勤系统(可组队)
学生考勤系统应包含各班学生的全部信息。
每个学生是一条记录,包括姓名、性别、
学号、出勤情况等。
本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、最低要求:
建立一个文件,包括同一个班的10个学生的必要信息,能对文件进行补充、修订、删除。
3、进一步要求:
完成包括至少4个班的考勤系统。
要求:
1、用C++实现系统;
2、函数功能要划分好(结构化程序设计);
3、界面友好(良好的人机交互),加必要的注释;
4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
题目10:
机房收费管理系统(可组队)
(1)输入功能:
输入30名学生的学号、班级、姓名、上机起始时间。
(2)计算功能:
计算每个下机学生的上机费用,每小时1元。
(上机费用=上机时间*1.0/h,不足一小时按一小时计算)
(3)查询功能:
按条件(班级、学号、姓名)显示学生的上机时间。
(4)机器使用情况的显示(显示方式不限但要一目了然)
题目11:
歌手比赛系统(可组队)
对一次歌手比赛的成绩进行管理,功能要求:
1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2、显示主菜单如下:
1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据6)写入数据文件7)退出系统。
题目12:
成绩排序
假设某年级有4个班,每班有45名同学。
本学期有5门课程考试,每门课程成绩是百分制。
假定每个同学的成绩记录包含:
学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求:
⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩;
⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中;
⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;
⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;
⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;
题目13:
班级成绩管理系统(可组队)
对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
功能要求:
(1)本系统采用一个结构体数组,每个数据的结构应当包括:
学号、姓名、M门课程名称。
(2)本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数
g、退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生成绩保存到文件中。
题目14:
运动会管理系统(可组队)
校际运动会管理系统。
设有n个学校参加校际运动会,共有男子竞赛项目数m,女子竞赛项目数w。
每个学校可以参加所有竞赛项目,也可以只参加部分竞赛项目,每个学校对每个项目的参赛运动员不能超过4人,每个运动员最多只能参加3项单项比赛,团体赛不受限制。
各项目名次取法有如下几种:
用户自定义:
(各名次权值由用户指定)①参赛人数超过6人,取前5名:
第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;
②参赛人数不超过6人,取前3名:
第1名得分5,第2名得分3,第3名得分2;
③团体项目的名次取法和上面相同,但分数加倍。
功能要求:
⑴运动员报名登记,以学校为单位进行运动员报名登记,登记的限制要求按问题描述的要求;
⑵参赛信息查询,查看参赛学校信息和比赛项目信息;
⑶竞赛检录,每项比赛开始前完成参赛运动员的检录;
⑷竞赛成绩登记,填写比赛名次,然后根据竞赛检录的运动员人数和上述的记分方式自动完成各学校的成绩登记并实时生成各学校的团体总分;
⑸比赛成绩查询,可以按竞赛项目、参赛学校、参赛运动员查看比赛成绩;
⑹竞赛成绩排序,以学校为单位,按总成绩的高低,分别排序输出每个学校的总成绩、男子总成绩、女子总成绩;
题目15:
机房机位预定系统(可组队)
20台机器,编号1到20,从早八点到晚八点。
两小时一个时间段,每次可预定一个时间段。
功能要求:
(1)系统以菜单方式工作
(2)查询,根据输入时间,输出机位信息。
(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:
若用户在非空时间上机,则将用户信息列入等待列表。
(4)退出预定,根据输入的时间,机器号撤销该事件的预定!
(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
题目16:
用C++设计一个简单的计算器
要求能够对输入的数
1.进行+,-,*,/,运算;
2.可以带括号();
3.不限定运算式的输入长度.
题目17:
班级档案管理系统(可组队)
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a学生基本信息录入
b学生基本信息显示
c学生基本信息保存
d学生基本信息删除
e学生基本信息修改(要求先输入密码)
f学生基本信息查询
(1)按学号查询
(2)按姓名查询(3)按性别查询(4)按年龄查询
g.退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。
题目18:
班车信息管理(可组队)
交通公司的班车系统的数据包括如下两部分:
①班车信息:
班交及车号、最大载客数、起点、开车时间、终地点、到达终点站时间,单价;
②乘客信息:
车次及车号、身份证号码、姓名、性别、出生年月、座位号。
乘客订票的主要方式是:
乘客提供起点、时间、终点、订票数等订票要求,根据事先保存的班数据决定乘客能否订票?
只有全部满足了乘客的订票要求并且所订班次有足够的未订座位之后才能完成订票处理,并且修改该班次的未订座位数(每个班的未订座位数的初始值就是该班次的最大载客数);否则,订票失败,并且给出不能订票的原因。
功能要求:
⑴增加班次记录。
将新的次班记录增加到原有的次班数据中。
在进行处理时必须检查所要增加的班次记录是否存在,如果已经存在,应给出提示信息后停止增加;
⑵班次取消。
如果某班次的乘客数太少(已订票的少于本次班次最大载客数的10%),将取消该班次,但该班欠的记录仍然保存在原有的班数据中;
⑶班次查询。
应该有以下几种基本的查询方式:
按班次号、按起点和时间、按终地点,和时间;
⑷班次订票。
按上述问题描述中的乘客订票方式完成班次订票处理。
题目19:
用英文单词模拟数学计算
读入两个小于100的正整数A和B,计算A+B。
需要注意的是:
A和B的每一位数字由对应的英文单词给出。
具体的输入输出格式规定如下:
输入格式:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。
当A和B同时为zero时输入结束,相应的结果不要输出。
输出格式:
对每个测试用例输出1行,即A+B的值。
输入样例:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
输出样例:
Three
ninezero
ninesix
题目20:
职工工资管理系统(可组队)
功能设计要求
1.输入记录:
将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2.显示记录:
根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3.修改记录:
可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:
可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5.删除记录:
可删除数据文件中的任一记录。
6.统计:
(A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
7.保存数据文件功能。
例如:
职工工资信息表
ID号姓名基本工资职务工资津贴医疗保险-公积金-总工资
01张望12867941981091352034
02李明1185628135941141740
03王小民8954389864731294
各项平均工资1092.2625.214588.8108
题目21:
月历显示
输入年份和月份,输出该月的月历:
题目22:
万年历查询程序(可组队)
功能要求:
(1)提供菜单方式选择
(2)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;
(3)输入公历的年月日,输出农历年月日。
(4)输入农历节气,输出当年农历的年月日及公历年月日。
可以假定只涉及年份是1940年到2040年。
题目23:
工资纳税系统
个人所得税每月交一次,底线是1600元/月,也就是超过了1600元的月薪才开始计收个人所得税。
个人所得税税率表一(工资、薪金所得适用)
级数----------全月应纳税所得额----------税率(%)
1--------------不超过500元的--------------------------5
2----------超过500元至2000元的部分------------10
3----------超过2000元至5000元的部分----------15
4----------超过5000元至20000元的部分---------20
5----------超过20000元至40000元的部分-------25
6----------超过40000元至60000元的部分-------30
7----------超过60000元至80000元的部分-------35
8----------超过80000元至100000元的部分------40
9----------超过100000元的部分---------------------45
表中的应纳税所得额是指以每月收入额减除1600元后的余额。
例如:
计算为:
2500-1600=900
应纳个人所得税额=500×5%+400×10%=65
再比如:
我们用一个大额工资计算,25000元
应纳税所得额=25000-1600=23400
应纳税额=500×5%+1500×10%+3000×15%+15000×20%+3400×25%=4475
要求:
输入工资计算出纳税金额。
第二类题目小游戏和图形处理
题目24:
图形时钟
功能要求:
在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
题目25:
计算24游戏
1.涉及知识点
1.数组的运用;
2.函数及其调用;
3.数据的输入输出。
2.题目介绍
计算24游戏是根据扑克牌游戏得来。
游戏规则是:
四个人每个人出一张牌,看谁能用四则运算凑出24这个数,可以加入括号运算。
程序要求从键盘输入四个一位数,通过加减允许加入括号,计算出24,显示计算过程,并提示成功信息。
3.功能要求
从键盘任意输入4个数字(2-10)或字母(J、Q、K、A),程序输出所有利用这4个数字或字母(A表示1,J表示11,Q表示12,K表示13)能得到24的表达式,如
4.难点与提示
1.程序采用穷举法实现。
例如,只有2个数字(或字母)A,2时,穷举法计算的表达式有1+2,1-2,1*2,1/2。
2.当有4个数字(或字母)时,表达式可以分为三种情况:
无括号的简单四则运算表达式;有一个括号的表达式;有两个括号的表达式。
对于三种情况分别用三个函数实现。
题目26:
井子棋游戏
1.目的与要求
(1)设计一个程序实现人与计算机玩井子棋游戏,假设计算机画×,人画O,人可选择是否先走。
(2)显示3×3方格的棋盘,一个玩家选择一个棋格画×,紧接着另一个玩家选择一个空棋格画O,双方轮流走棋,直到一个玩家占领一行,一列或一条对角线获胜,这时比赛结束。
(3)输出参考格式:
是否先走(Y/N)?
y
输入要走的棋格行号和列号:
1,1
+------+------+------+
||||
+------+------+------+
||O||
+------+------+------+
||||
+------+------+------+
计算机选手走的棋格是:
0,0
2.实现提示
(1)选手及棋局状态:
可以采用枚举类型定义选手{Human,Computer};选手棋局状态{WIN(胜),LOSE(负),TIE(平),UNEND(还没结束)}
(2)棋格位置:
用棋格的行号和列号来表示
(3)棋格打分规则:
1如果棋盘上有棋子,则得0分;
2如果棋盘上没有棋子,但棋格所在行,列或对角线有两个×,则得6分;
3如果棋盘上没有棋子,但棋格所在行,列或对角线有两个O,则得5分;
4如果棋盘上没有棋子,但棋格所在行,列或对角线其他棋格有一个×和一个没有棋子,则得4分;
5如果棋盘上没有棋子,但棋格所在行,列或对角线其他棋格有一个O和一个没有棋子,则得3分;
6如果棋盘上没有棋子,但棋格所在行,列或对角线没有棋子,则得2分;
7如果棋盘上没有棋子,但棋格所在行,列或对角线有一个×和一个O,则得1分。
(4)选手走棋规则:
选择分值最高值为计算机的走棋,如果有多个棋格的分值都为最高分,则随机选择一个分值最高的棋格作为计算机的走棋。
题目27:
汉诺塔
1.涉及知识点
1.函数的参数;
2.数组的使用;
3.循环;
4.数据的输入输出。
2.题目介绍
设有n根柱子,每根柱子上有一个圆盘,圆盘上有一个正整数,不同圆盘上的数不同。
初始时假定柱子按照其上圆盘上数的大小从左向右排列,移动规则是从左向右看,当前一根柱子最下圆盘上数与后一根柱子最上圆盘上数相加的和是一个完全平方数时,前一根柱子上所有圆盘移动到后一根柱子上方。
要求你编写程序,输入柱子数目和圆盘上的整数,输出移动的过程和结果。
例如,一组输入是:
4,1,3,5,6,第一个数4表示有4根柱子,圆盘上的数依次是1,3,5,6。
程序运行后,可以输出1->3->6,5,c=2,表示移动是1到3,3到6,因为1+3=4,3+6=9,而4和9是完全平方数,符合条件的移动只有这两次。
移动结果是还有2根柱子上有圆盘,即c=2,有圆盘的一根柱子上圆盘3个,有数1->3->6,有圆盘另一根柱子上圆盘一个,有数5,它其实没有发生移动。
3.功能要求
1.任意输入数据,第一个数据为柱子的个数,后续的数据为柱子上数的值。
2.将结果分行输出,一行输出一种组合。
3.使用函数调用完成题目功能,主函数负责数据的输入与输出,子函数负责运算。
4.难点与提示
1.提示:
输入:
9,1,2,3,4,5,6,7,8,9输出:
1->3->6,2->7->9,4->5,8,c=4
输入:
10,1,3,5,7,9,11,13,15,17,19输出:
1->3->13,5->11,7->9,15,17->19,c=5
2.以一个数组接收输入的数据,具体运算数据从第二个元素开始。
3.最终剩余的柱子数为初始数据中第一个元素值减去已生成数组个数得到。
题目28:
猜数游戏
程序说明:
游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:
YouranswerisHIGH,tryagain.,否则,程序提示:
YouranswerisLOW,tryagain.,直到猜对为止。
程序可实现连续猜数,直到游戏者退出。
程序输出要求:
累计游戏者猜对一个数所需次数n,当n<=7时,给出“Congratulation”字样;当7<n<15时,给出“Icanbetyoucandoitbetter.”;当n>=15时,用exit(0)库函数退出程序。
提示:
用库函数random()产生一个随机数。
如:
intz;
z=random(9999);
题目29:
五子棋游戏(MFC)(可组队)
1.目的与要求
(1)游戏规则:
传统五子棋的棋具与围棋相同,棋子分为黑白两色,盘为19×19,棋子放置于棋盘线交叉点上。
两人对局,各执一色,轮流下一子。
如果某一方下棋的棋子最先5子连续连成一线(行、列、对角线),则该方为赢家,游戏一局结束;如果棋盘下满未定胜负则为平局,游戏一局结束。
(2)功能模块:
将程序分为图形显示、玩家控制、胜负判断和玩家计分四个模块。
1图形显示模块:
程序开始运行时,给出欢迎及帮助