当前位置:文档之家› 《C语言课程设计》任务书和说明书 - 1401

《C语言课程设计》任务书和说明书 - 1401

课程设计任务书

课程设计名称C语言课程设计

(2015年春季学期)

学院信息与控制工程学院

专业计算机科学与技术

班级计算机1401

姓名

指导教师王永会

2015 年2 月22 日

一、设计要求与设计报告

1、设计要求

(1) 任意选定以下一个题目完成(每题最多三人)

(2) 模块化程序设计

(3) 锯齿型程序书写格式

(4) 必须上机调试通过

2、设计报告格式

(1) 设计目的

(2) 总体设计(程序设计组成框图、流程图)

(3) 详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

(4) 调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

(5) 源程序清单和执行结果:清单中应有足够的注释

二、检查要求

(1) 每个人必须有程序运行结果

(2) 每个人必须交《C语言课程设计报告》和设计程序清单

(3) 课程设计任务必须由个人独立完成,禁止相互抄袭,如有发现,严肃处理

三、评分标准

(1) 根据平时上机考勤;注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机

(2) 根据程序运行结果

(3) 根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚,以上三项缺一不可

(4) 由于课程设计各题目的难度不一,所以成绩的评定将根据各人完成题目的难度和完成情况的不同,分别评定成绩,如未能完成任何题目,则以不及格计算

四、提交时间

课程设计任务完成时间为第1周结束,届时上交课程设计报告和程序。

五、设计题目

题目01:年历显示。

设计一个年历显示的程序,具备可根据要求显示对应年历信息的功能。

功能要求:

(1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。

(2) 输入年月,输出该月的日历。

(3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。

题目02:小学生测验

面向小学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以下“TRY AGAIN”。

题目03:运动会比赛计分系统

要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:

取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;

功能要求:

(1) 系统以菜单方式工作

(2) 由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。

(3) 所有信息记录完毕后,用户可以查询各个学校的比赛成绩

(4) 查看参赛学校信息和比赛项目信息等。

题目04:学生学籍管理系统

用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。

功能要求:

(1) 系统以菜单方式工作。

(2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;

(3) 删除已知学号的学生信息;

(4) 查找已知学号的学生信息;

(5) 按学号,专业输出学生籍贯表。

(6) 查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。

题目05:排班系统

学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:钱:星期一、星期六

赵:星期二、星期四

孙:星期三、星期日

李:星期五

周:星期一、星期四、星期六

吴:星期二、星期五

陈:星期三、星期六、星期日

运行结果:

Solution: 1

赵钱孙李周吴陈

============================================================= 星期四星期一星期三星期五星期六星期二星期日

Solution: 2

赵钱孙李周吴陈

============================================================= 星期四星期一星期日星期五星期六星期二星期三

Solution: 3

赵钱孙李周吴陈

============================================================= 星期四星期六星期三星期五星期一星期二星期日

Solution: 4

赵钱孙李周吴陈

============================================================= 星期四星期六星期日星期五星期一星期二星期三

题目06:通讯录程序设计

设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。

功能要求:

(1) 系统以菜单方式工作;

(2) 信息录入功能;

(3) 信息浏览功能;

(4) 信息查询功能;

(5) 信息修改功能;

(6) 系统退出功能。

题目07:学生选课系统

假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:

功能要求:

(1) 系统以菜单方式工作;

(2) 课程信息和学生选课信息录入功能(课程信息用文件保存);

(3) 课程信息浏览功能;

(4) 查询功能;

(5) 按学分查询;

(6) 某门课程学生选修情况(可选项)。

题目09:班级成绩管理系统

对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:

(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。

(2)本系统显示这样的菜单:

请选择系统功能项:

a、成绩录入

b、成绩显示

c、成绩保存

d、成绩排序

e、成绩修改(要求先输入密码)

f、成绩统计

1)显示每门课程成绩最高的学生的基本信息

2)显示每门课程的平均成绩

3)显示超过某门课程平均成绩的学生人数

g、退出系统

(3)执行一个具体的功能之后,程序将重新显示菜单。

(4)将学生成绩保存到文件中。

题目10:机房机位预定系统

20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求:

(1)系统以菜单方式工作

(2)查询,根据输入时间,输出机位信息。

(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。

(4)退出预定,根据输入的时间,机器号撤销该事件的预定!

(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。

题目11:班级档案管理系统

对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。

功能要求:

(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。

(2)本系统显示这样的菜单:

请选择系统功能项:

a 学生基本信息录入

b 学生基本信息显示

c 学生基本信息保存

d 学生基本信息删除

e 学生基本信息修改(要求先输入密码)

f 学生基本信息查询

(1)按学号查询

(2)按姓名查询

(3)按性别查询

(4)按年龄查询

g. 退出系统

(3)执行一个具体的功能之后,程序将重新显示菜单。

(4)将学生基本信息保存到文件中。

(5)进入系统之前要先输入密码。

题目12:职工工资管理系统

功能设计要求

1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。?该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

5. 删除记录:可删除数据文件中的任一记录。

6. 统计: (A)计算各项工资平均工资及总工资, (B)?统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(?包括各项总的平均工资)。

7.保存数据文件功能。

例如:职工工资信息表

ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资

01 张望1286 794 198 109 135 2034

02 李明1185 628 135 94 114 1740

03 王小民 895 438 98 64 73 1294

04 张效章 1350 868 210 116 150 2162

05 彭山745 398 84 61 68 1098

????????

各项平均工资1092.2 625.2 145 88.8 108

题目13:工资纳税系统

个人所得税每月交一次,底线是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

要求:输入工资计算出纳税金额。

题目14:歌手比赛系统

对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。2、显示主菜单如下:1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据6)写入数据文件7)退出系统。

题目15:用英文单词模拟数学计算

读入两个小于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

nine zero

nine six

题目16:万年历查询程序。

功能要求:

(1)提供菜单方式选择

(2)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;

(3)输入公历的年月日,输出农历年月日。

(4)输入农历节气,输出当年农历的年月日及公历年月日。可以假定只涉及年份是1940年到2040年。

题目17:C语言关键字中英翻译机。

要求输入中文的名词和关键字,可以将其翻译成英语,如输入“基本整形”+回车,得到int;输入英文的单词int,则可以翻译成中文“基本整形”。可模拟文曲星来实现。可多次查询,输入bye时退出。

题目18:简单的计算器

用C 语言设计一个简单的计算器,要求能够对输入的数 1.进行+,-,*,/,运算; 2.可以带括号( );

3.不限定运算式的输入长度.

(参考编译技术中语法分析原理)

题目19:多项式乘法的实现

已知如下两个多项式 P(x)=P 1-m X 1

-m + P 2-m X

2

-m +...+P 1X+P 0

Q(x)=q 1-n X

1

-n +q 2-n X 2

-n +...+q 1X+q 0

求它们的乘积多项式 S(x)=s 2-+n m X 2

-+n m +...+s 1X+s 0。

可以定义两个一维数组p ,q ,按照次数从高到低存储两个多项式的系数,定义一维数组来s 来存储结果;利用函数来完成对结果多项式各项系数的计算,最后在屏幕上计算结果。

题目20:实现带有括号的四则运算

输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后程序计算得出结果为:359183

题目21:线性方程组求解

输入是N (N<256)元线性方程组Ax=B ,输出是方程组的解,也可能无解或有多组解。可以用高斯消去法求解,也可以采用其它方法。

题目22:n 阶方阵求逆

输入是一个n (n<256)阶方阵A ,输出是它的逆矩阵,要求还要再将得到的逆矩阵与原来的矩阵相乘,验证其结果是单位矩阵。

题目23:大整数的四则运算

大整数指超过十位的十进制整数,这里为简便,假定不超过五十位。这类大整数在C 语言系统中因超界溢出,是不能直接表达和计算的。可以用数组来表示大整数,在此基础上编写出实现大整数加、减、乘、除的程序,并努力加以优化。

题目24:三角形面积验证程序

设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1、CC1相交而成的三角形A2B2C2的面积是正三角形ABC的面积的七分之一。

题目25:四边形面积验证程序

对于任意的四边形ABCD,其对角线AC与BD的中点分别是M、N,AB、CD的延长线交于R。验证三角形RMN的面积是四边形ABCD面积的四分之一。

题目26:文件加密

文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。

要求:

(1)对文件的字符根据加密算法,实现文件加密。

(2)对操作给出必要的提示。

(3)对存在的file1.txt文件,必须先打开,后读写,最后关闭。加密后的文件放在file2.txt。

(4)解密文件保存在file3.txt中。

题目27:商品管理程序

设计一个可进行商品管理的程序,具备基本的商品管理功能。

要求:程序菜单功能或详细的提示功能,商品信息输入、输出、添加(进货)、删除(销售)、查询(按商品名)、排序(按编号,品名,数量)、文件保存、文件读入。

题目28:图书管理程序

设计一个可进行图书管理的程序,具备基本的图书管理功能。

要求:程序菜单功能或详细的提示功能,书籍信息输入、输出、添加(进书)、删除及销售出、查询(按书名)、排序(按编号,书名,数量)、文件保存、文件读入。

题目29:航班管理程序

设计一个可进行航班管理的程序,具备基本的航班管理功能。

要求:程序菜单功能或详细的提示功能,航班信息输入、输出、添加(航班)、删除及售出、查询(按航班号,出发地与目的地,*与输入时间最近的航班)、排序(按航班号)、文件保存、文件读入。

题目30:个人通讯录

设计一个个人通讯录。

要求:程序菜单功能或详细的提示功能,通讯录人员的输入、输出、添加、删除、查询(按姓名,电话)、排序(按姓名、年龄)、文件保存、文件读入。

题目31:教室管理程序

设计一个可进行教室管理的程序,具备基本的教室管理功能。

要求:程序菜单功能或详细的提示功能,教室信息输入、输出、添加、删除、查询(按教室名)、排序(按容量,分类)、文件保存、文件读入。

题目32:链表的综合运算。

要求:设计一个可进行链表的综合运算的程序,具备基本的管理功能:链表的建立、链表的输出、链表的删除、链表的插入等。

题目33:高速公路计费系统

要求:1、在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0。4元,小型车每公里0。3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总金额数。

2、保存:将相关数据写入磁盘文件,便于存、取操作。

题目34:飞机订票系统设计

要求:1、本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。

2、保存:将相关数据写入磁盘文件,便于存、取操作。

题目35:商店销售管理系统。

要求:1、屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。

2、保存:将相关数据写入磁盘文件,便于存、取操作。

题目36:商品订购系统设计。

要求:1、屏幕上出现一个界面,让顾客或者输入商品名称,或者输入商品型号,或者给出商品选择列表供用户选择让用户输入所选商品编号,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。建立两个文件,分别存放商品信息与订购信息。

2、保存:将相关数据写入磁盘文件,便于存、取操作。

题目08(37):机房收费管理系统

(1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。

(2)计算功能:计算每个下机学生的上机费用,每小时1元。

(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)

(3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。

(4)机器使用情况的显示(显示方式不限但要一目了然)

课程设计说明书

设计名称C语言课程设计

设计题目学生选课系统

设计时间2015年6月21日-6月25日学院信息与控制工程学院

专业计算机科学与技术

班级计算机1401班

姓名叶达成

指导教师王永会

2015年6月25日

C语言课程设计说明书

目录

一、题目简介

二、功能说明

三、程序框图

四、程序清单

五、运行结果

六、设计体会

七、参考文献

八、教师评语

题目07:学生选课系统

假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:

功能要求:

(1) 系统以菜单方式工作;

(2) 课程信息和学生选课信息录入功能(课程信息用文件保存);

(3) 课程信息浏览功能;

(4) 查询功能;

(5) 按学分查询;

(6) 某门课程学生选修情况(可选项)。

一、题目简介

这是一个研究生信息管理程序,可以对学生的学号、姓名、性别、年龄、电话、学习成绩,具有输入、输出、查找、插入、删除、排序等功能。

二、功能说明

1、输入功能:可以一次完成若干条记录的输入。

2、输出功能:完成全部研究生信息的显示。

3、查找功能:完成按学号查找研究生记录,并显示。

4、删除功能:完成按学号删除一条研究生信息档案记录。

5、插入功能:插入研究生的一条信息包括研究生的学号、姓名、性别、电话、学习成绩。

6、排序功能:按研究生的学号对研究生的信息档案进行排序。

7、退出功能:退出系统。

三、程序框图

四、程序清单

#include

#include

#define N 35

#define M 25

typedef struct doctor

{

int number;

char name[M];

char telephone[14];

char sex[3];

char age[3];

int chinese;

int english;

int c_program;

int autmation;

int wh_mark_average;

int wh_mark_total;

}DOCTOR;

/*函数wh_input*/

void wh_input(DOCTOR *wh_data,int *length) {

int number;

char ch[M];

int mark;

putchar('\n');

printf("%s\n","输入信息,退出请按-1回车");

putchar('\n');

putchar('\n');

printf("输入学号:\n");

scanf("%d",&number);

while(number!=-1)

{

wh_data[*length].number=number;

printf("输入姓名:\n");

scanf("%14s",wh_data[*length].name);

printf("输入电话:\n");

scanf("%14s",wh_data[*length].telephone);

printf("输入性别:\n");

scanf("%3s",wh_data[*length].sex);

printf("输入年龄\n");

scanf("%3s",wh_data[*length].age);

printf("输入中文成绩:\n");

scanf("%14d",&wh_data[*length].chinese);

printf("输入英语成绩:\n");

scanf("%14d",&wh_data[*length].english);

printf("输入控制理论成绩:\n");

scanf("%14d",&wh_data[*length]. autmation);

printf("输入C语言成绩:\n");

scanf("%14d",&wh_data[*length].c_program);

(*length)++;

printf("输入学号:\n");

scanf("%d",&number);

}

}

/*函数wh_output*/

void wh_output(DOCTOR *wh_data,int length)

{

int i;

printf(" 学号姓名电话性别年龄中文英文控制理论c语言平均分总分");

putchar('\n');

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

for(i=0;i

{

wh_data[i].wh_mark_total=wh_data[i].chinese+wh_data[i].english+wh_data[i].autmation+wh_data[i].c_pr ogram;

wh_data[i].wh_mark_average=wh_data[i].wh_mark_total/4;

printf("%4d",wh_data[i].number);

printf("%6s",wh_data[i].name);

printf("%10s",wh_data[i].telephone);

printf("%5s",wh_data[i].sex);

printf("%6s",wh_data[i].age);

printf("%8d",wh_data[i].chinese);

printf("%7d",wh_data[i].english);

printf("%9d",wh_data[i].autmation);

printf("%9d",wh_data[i].c_program);

printf("%8d",wh_data[i].wh_mark_average);

printf("%8d",wh_data[i].wh_mark_total);

putchar('\n');

}

putchar('\n');

putchar('\n');

printf("按回车键继续.\n\n");

getchar();

}

/*排序*/

void wh_sort(DOCTOR *wh_data,int length)

{

int x,j,m;

DOCTOR temp;

for(x=0;x

{m=x;

for(j=x+1;j

if(wh_data[m].number>wh_data[j].number)

{

temp=wh_data[x];

wh_data[x]=wh_data[j];

wh_data[j]=temp;

}

}

wh_output(wh_data,length);

}

/*查找*/

void wh_find(DOCTOR *wh_data,int length)

{

int wh_find_number,result;

int i;

lab:result=0;

printf("%s\n","输入要查找的学号.退出按-1回车.\n 输入研究生的学号");

scanf("%d",& wh_find_number);

if(wh_find_number==-1) return;

while(wh_data[result].number!= wh_find_number && result

if(result>=length)

{

printf("%s\n","这是你要的信息.");

goto lab;

}

else

{

printf("%s\n","以下是你要的信息." );

for(i=0;i<80;i++)

{

putchar('=');

}

wh_data[result].wh_mark_total=wh_data[result].chinese+wh_data[result].english+wh_data[result].autmati on+wh_data[result].c_program;

wh_data[result].wh_mark_average=wh_data[result].wh_mark_total/4;

putchar('\n');

printf(" 学号姓名电话性别年龄中文英文控制理论c语言平均分总分");

printf("%4d",wh_data[result].number);

printf("%6s",wh_data[result].name);

printf("%10s",wh_data[result].telephone);

printf("%5s",wh_data[result].sex);

printf("%6s",wh_data[result].age);

printf("%8d",wh_data[result].chinese);

printf("%7d",wh_data[result].english);

printf("%9d",wh_data[result].autmation);

printf("%9d",wh_data[result].c_program);

printf("%8d",wh_data[result].wh_mark_average);

printf("%8d",wh_data[result].wh_mark_total);

相关主题
文本预览
相关文档 最新文档