C语言课程设计题目及要求(附参考案例)

更新时间:2023-10-08 23:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计要求

一、选题

1、每个题目每班最多有1组选择,人数2-3人,不得超过这个数目,超过的由各班班长进行调整。

2、选定题目后不能随意更改 二、课程设计过程注意事项

1、按题目要求进行设计,必须完成规定的基本功能,多增加的功能可以获得加分。 2、文件的具体上传方法上机实验时再另行通知。

3、最后上交内容:课程设计报告书、源程序和运行结果截图。 三、课程设计题目

题目一:职工信息管理系统设计

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。 试设计一职工信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作

2、职工信息录入功能(职工信息用文件保存)--输入 3、职工信息浏览功能--输出 4、职工信息查询功能--算法 查询方式

按学历查询等 按职工号查询等

5、职工信息删除、修改功能

题目二:图书信息管理系统设计

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 试设计一图书信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作

2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息浏览功能--输出 4、图书信息查询功能--算法 查询方式 按书名查询 按作者名查询

5、图书信息的删除与修改(可选项)

题目三:图书管理系统设计

图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等 功能描述

1、新进图书基本信息的输入。 2、图书基本信息的查询。 3、对撤消图书信息的删除。 4、为借书人办理注册。 5、办理借书手续。

6、办理还书手续

要求:使用二进制文件方式存储数据,系统以菜单方式工作

题目四:实验设备管理系统设计

实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。 主要功能:

1、能够完成对设备的录入和修改 2、对设备进行分类统计

3、设备的破损耗费和遗损处理 4、设备的查询

要求:采用二进制文件方式存储数据,系统以菜单方式工作

题目五:西文下拉菜单的设计 主要功能:

1、完成一个类似TC集成系统菜单的西文下拉菜单的设计 2、不要求实现各子菜单的功能

要求:可以通过光标键的移动来选择不同的菜单项,被选择的菜单项反相显示,当选定某个菜单项后,按回车键可以实现一个简单的动作。

题目六:学生信息管理系统设计

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作

2、学生信息录入功能(学生信息用文件保存)--输入 3、学生信息浏览功能--输出 4、学生信息查询功能--算法 按学号查询 按姓名查询

5、学生信息的删除与修改(可选项)

题目七:学生成绩管理系统设计

学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:

(1) 能按学期、按班级完成对学生成绩的录入、修改

(2) 能按学期_班级_科目查看学生的成绩,求学生的总分及平均分。 (3) 能查询学生成绩,不及格科目及学生名单 (4) 能按班级输出学生的成绩单

要求:使用二进制文件方式存储数据,系统以菜单方式工作

题目八:学生选修课程系统设计

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

2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息浏览功能--输出 4、课程信息查询功能--算法 查询方式 按学分查询 按课程性质查询 5、学生选修课程

题目九: 学生成绩记录簿设计

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息链表并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的成绩; (3)按学号或姓名查询成绩; (4)添加成绩记录;

(5)修改指定姓名或学号的学生的成绩并可存盘;

(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。

题目十:学生籍贯信息记录簿设计

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能: (1)创建信息链表并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的籍贯信息; (3)按学号或姓名查询其籍贯;

(4)按籍贯查询并输出该籍贯的所有学生; (5)能添加、删除和修改学生的籍贯信息

题目十一:学生通讯录管理系统设计

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。 1.主要功能:

(1) 能建立、修改和增删学生通讯录 (2) 能够按多种方式进行查询

2.要求:界面友好,易于操作,采用二进制文件存储数据。

题目十二:职工工作量统计系统设计

编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。要求程序用有序链表存储数据信息。

题目十三:销售管理系统设计

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。 试设计一个便条管理系统,使之能提供以下功能: 1、系统以菜单方式工作

2、便条信息录入功能(便条信息用文件保存)--输入 3、收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)

3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

题目十四:成绩管理系统设计 现有学生成绩信息,内容如下

姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47

?. .. .. .. ?

请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面: (一)功能要求: (1)信息维护:

要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息 (2)信息查询:

要求:查询时可实现按姓名查询、按学号查询 (3)成绩统计:

要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。 (二)其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2)至少采用文本菜单界面(如果能采用图形菜单界面更好) (3)学生可自动增加新功能模块(视情况可另外加分) (4)写出课程设计报告,具体要求见相关说明文档

题目十五:通信录管理系统设计

用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 功能要求

(1)查看功能:选择此功能时,列出下列三类选择。

A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓名和电话号码)

(2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如

杨春 13589664454 商务类 chuny@126.com

当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。

(3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改

(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

(二)其它要求:

(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 建议使用结构和链表等数据结构

(4) 学生可自动增加新功能模块(视情况可另外加分) (5)写出课程设计报告,具体要求见相关说明文档

题目十六:学生管理系统设计

使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。 学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成

学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 ? ? ? ? ? ? 学生成绩基本信息文件(B.TXT)及其内容:

学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分

01 A01 大学物

理 3 66 78 82 02 B03 高等数

学 4 78 -1 90 01 B03 高等数

学 4 45 -1 88

02 C01 VF 3 65 76 66

? ? ? ? ? ? ? ? ? ?

(一)功能要求及说明:

(1)数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。综合成绩、学分由程序根据条件自动运算。

综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%。

实得学分的计算:采用等级学分制。

综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80%

综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60%

综合成绩在60以下 ,应得学分=学分*0%

(2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询:

A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。 A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。 B:成绩查询:

B1:输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ? ? ? ? ? ? ? ? ?

共修:xx科,实得总学分为: xxx

(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。 (4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。 (二)其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2)至少采用文本菜单界面(如果能采用图形菜单界面更好) (3)学生可自动增加新功能模块(视情况可另外加分) (4)写出课程设计报告,具体要求见相关说明文档

题目十七:单项选择题标准化考试系统设计 一、功能要求:

1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案) 2、试题录入:可随时增加试题到试题库中

3、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入) 4、答题:用户可实现输入自己的答案

5、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。 二、其它要求:

1、只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面(如果能采用图形菜单界面更好) 3、学生可自动增加新功能模块(视情况可另外加分)

4、写出课程设计报告,具体要求见相关说明文档

题目十八:学生成绩统计管理 1、 输入一个班级的学生的基本信息(包括学号,姓名,性别,5门课程成绩)。 2、 按姓名或者学号查找、修改、删除和保存各个学生的信息。 3、 计算每个学生各门功课总分和平均分,按学号或总分排序输出每个学生的基本信息

及总分、平均分和名次。

4、 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓

名,性别,科目,成绩。

5、 显示每门科目中,成绩在90分以上的学生信息,以及每门科目中不及格的学生信息。 6、 用菜单进行管理 7、 只有正确输入用户名密码才能使用此系统。 8、 所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

题目十九:物业费管理系统 1、 新住户信息的添加。(户主姓名、性别、身份证号、联系电话、楼号、单元号、房

号、平米数、每平米物业价格、应缴纳物业费,备注信息)

2、 修改住户信息的功能。 3、 删除住户信息的功能。 4、 应缴物业费自动生成。每月1号,自动生成本月份的物业费。如果该住户之前的物

业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。

5、 缴费功能。根据用户缴纳金额,修改“应缴纳物业费”。 6、 统计功能。

1) 能够按楼号分类统计所有未交清物业费的记录。

2) 能够按拖欠款项多少,对所有用户信息进行从大到小排序。 7、 用菜单进行管理 8、 只有正确输入用户名密码才能使用此系统。 9、 所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

题目二十:会员卡计费系统 设计一个会员卡计费管理系统。 1、 新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。) 2、 会员信息修改。 3、 会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。

此时可以进行续费,续费后,提示成功,并显示更新后的信息。)

4、 会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结

算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。

5、 会员退卡。(收回会员卡,并将余额退还,删除该会员信息。) 6、 会员卡挂失。(为该会员补办新卡,并将旧卡余额转至新卡。) 7、 用菜单进行管理 8、 统计功能。

1) 能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总

额,以及消费总额。

2) 能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及

消费总额。

9、 只有正确输入用户名密码才能使用此系统。

10、 所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

题目二十一:车票管理系统(限最多2人完成)

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3?n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数 1 8:00 郫县 广汉 2 45 30 2 6:30 郫县 成都 0.5 40 40 3 7:00 郫县 成都 0.5 40 20 4 10:00 郫县 成都 0.5 40 2 ?

(一)功能要求:用c/c++设计一系统,能提供下列服务:

(1)录入班次信息(信息用文件保存),可不定时地增加班次数据

(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

(3)查询路线:可按班次号查询 ,可按终点站查询 (4)售票和退票功能 A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数

B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数 (二)其它要求:

(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分) (4)写出课程设计报告,具体要求见相关说明文档

(4)写出课程设计报告,具体要求见相关说明文档 题目二十二:年历显示

功能要求:

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

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

(3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目二十三:小学生测验

面向小学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”。 题目二十四:排班系统

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

钱:星期一、星期六 赵:星期二、星期四 孙:星期三、星期日 李:星期五

周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日 运行结果: Solution: 1

赵 钱 孙 李 周 吴 陈

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

Solution: 2

赵 钱 孙 李 周 吴 陈

============================================================= 星期四 星期一 星期日 星期五 星期六 星期二 星期三 Solution: 3

赵 钱 孙 李 周 吴 陈

============================================================= 星期四 星期六 星期三 星期五 星期一 星期二 星期日 Solution: 4

赵 钱 孙 李 周 吴 陈

============================================================= 星期四 星期六 星期日 星期五 星期一 星期二 星期三 题目二十五:机房机位预定系统(限2人)

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

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

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

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

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

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

题目二十六:工资纳税系统

个人所得税每月交一次,底线是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 题目二十七:歌手比赛系统

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

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

由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。

提示:用库函数random()产生一个随机数。 如:Int z;z= random(9999); 题目三十:计算24游戏

要求:输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。 题目三十一:五子棋游戏

设计实现基于命令行的五子棋小游戏

1、 实现五子棋的人人对局功能。2、实现五子棋的人机对局功能。3、实现两机对局。

要求:具体的图形化展示整个游戏。

题目三十二:学生搭配问题

一班有m个女生,有n个男生(m不等于n),现要开一个舞会男女生分别编号坐在舞池的两边的椅子上每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴。请设计一系统模拟动态地显示出上述过程。要求如下:

1) 输出每曲配对情况2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况至少求出K的两个值3) 尽量设计出多种算法及程序,可视情况适当加分4)采用文件、Windows图形化输入界面等操作来实现该过程。提示用队列来解决比较方便。 题目三十三:数值解方程组

数值求解第一边界条件下的泊松方程数值解。

河南理工大学 计算机科学与技术学院

课程设计报告

200 8 — 200 9 学年第 一 学期

课程名称 C语言课程设计 设计题目 《小学算术运算测试》 学生姓名 马坤明 学 号 310709010216 专业班级 计算机07-2班 指导教师 刘小燕

2008 年 9 月12日

目录

1. 设计任务书?????????????????????2

1.1 题目与要求……………………………………………2 1.2 本程序涉及的知识点…………………………………2 2.功能设计…………………………………………………2 2.1算法设计………………………………………………2 2.2部分模块流程图………………………………………2 3. 程序代码设计…………………………………………4 3.1输入函数………………………………………………4 3.2输出函数………………………………………………5 4. C程序设计总结????????????????6 5.致谢………………………………………………………6 参考文献……………………………………………………6

1、 设计任务书

1.1、 题目与要求

我计划编写小学算术运算测试程序。要求完成10以内的加减运算。能根据用户输入的想要练习的题目数自行出题。用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。做完一次测试后用户可决定是否继续进行下一次测试。 1.2、 本程序涉及的知识点

变量的定义、输入和输出函数、产生随机数函数、if语句、goto语句、转意字符的使用等等。

2、 功能设计

2.1、算法设计

1、本程序实现的功能要求:利用if语句完成所示的主菜单。

根据提示选择是否开始

根据提示计算的题目数

进行答题

统计结果给出正确答案 用goto语句实现是否循环

2、进入第一步出现如下信息:

开始测试?(输入y开始,输入n推出) 选择y后,进入第二步。

用户输入要练习的题数。 第三步:输出算术式子

用户输入结果进行测试。 第四步:输出测试结果

屏幕显示出本次测试的基本情况。 2.2、部分模块流程图

开始 unsigned time time=0 Srand(time) a=rand() b=rand() 成立 a

3、 程序代码设计 3.1、输入函数

1)函数原形:scanf(“%d”,&*)

2) 功 能: scanf()函数利用取地址符号&完成对程序中某个变量的赋

值,进而程序中判断循环的功能。 3)变量及类型:

int a,b,m: 整型形参变量,接收main()传过来的随机数字。 int i,num:循环控制变量。

int c,d,f,n,num,j,s,t: 整型形参变量。其中j 具有自加功能;

d,f,num,t:需要用户赋值;c,n,s:系统自动赋值。 4)说 明:输入字符后需要按回车键,待系统做出判断后往下执行。 5)模块代码及其相关注释:

loop:printf(\开始测试?输入1开始,输入其他键退出:\scanf(\输入整型数据,把它存储在变量d的地址内*/ if(d==1)

{

printf(\请输入练习的题目数:\

scanf(\输入要练习的题数*/ for(i=0;i

{ srand((unsigned)time(NULL));

m=rand() % 2; /*接收程序随机产生的数字1或0*/ Loop:a=rand() % 10; b=rand() % 10; if(a+b>10) goto Loop;

3.2、输出函数

1)函数原形:printf(“**********”,*) 2)功 能:输出相关提示信息及最后结果。 3)相关变量: int n:输出正确结果。

int j,c,s :输出计算正确,错误的题数及所得分数。 4)说 明:输出时要把要输出的信息用双引号括起来,输出数字时要在

其代表变量前加逗号。 5)模块代码及其相关注释: {

} c=num-j;

printf(\输出算式a+b*/ n=a+b;

scanf(\if(t!=a+b)

printf(\错误,正确答案为:%d。\\n\\a\\a\ /*输出计算结果*/ else{ }

printf(\正确\\n\}

s=100*j/num;

printf(\做对题数:%d,做错题数:%d,得分:%d\\n\

/*输出测试相关结果*/

printf(\再来一次?\

printf(\再来,其他键退出:\提示用户输入信息*/ scanf(\if(f==2) goto loop;

else printf(\结束\} }

4、 C程序设计总结

本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾经出现过不能运行、不能产生十以内随机数字、不能随机出现加减、不会正确输出结果、不能进行循环练习等等问题。经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。现在它能对出错的题目发出报警声,并且给出正确答案。最后还能分别输出对错的题数及所得分数。

在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。

5、 致谢

能够完成这次课程设计必须感谢C语言课程老师张黎娜(是她教会了我C语言这门课程)、王攀同学(她帮我修改了几处重要错误,同时启发我完善了该程序的功能)。

参考文献

[1] 贾宗璞、许合利,C语言程序设计,江苏:中国矿业大学出版社,2007.6 [2] 谭浩强,C程序设计(第二版),北京:清华大学出版社,2001.1 [3] http://www.http://m.wodefanwen.com/

C程序 课程设计报告

201— 201 学年第 学期

课程名称 C语言课程设计 设计题目 《排班系统》 学生姓名 学 号 专业班级

指导教师

201 年 月 日

目录

一、设计任务书??????????????????…??…3

1、题目与要求…………………………………………………3 2、本程序涉及的知识点………………………………………3

二、程序流程图??????????????????????4 三、程序代码设计?????????????????????5 四、程序调试过程?????????????????????6 五、程序运行过程?????????????????????6 六、程序有待改进的地方??????????????????9 七、程序设计总结?????????????????????9 八、致谢?????????????????????????9 参考文献?????????????????????????9 附录?????????????????????????? 10

一、设计任务书

1、题目与要求

赵:星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在一星期中可以休息一天。每名保安可以自行选择自己想要的休息日,而对于休息日的选择既可以是某一天,也可以是某几天中的其中一天。当7名保安依次输入自己想要的休息日后,系统将会给出可能的值班安排。若系统给出的值班安排是0种,证明系统对7名保安的选择无法作出排班,需要重新输入。

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

钱:星期一、星期六 孙:星期三、星期日 李:星期五

周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日

2、本程序涉及的知识点

输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等

二、程序流程图

开始 输出显示欢迎使用排班系统 循环录入每个保安选择的休息日 判断输入的休息日 是否合理 输出满足条件的值班安排 结束

三、程序代码设计

输入函数和输出函数、变量的定义、for语句和switch-case语句、ss字符串的使用等。

输入函数:

1)函数原形:自定义swap(int *a, int *b)函数

2) 功 能:swap()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断交换的功能。

3)函数原形:get char()

4)功 能:向计算机输入一个字符。 5)变量及类型:

int a,b,m,k: 整型形参变量,接收main()传过来的随机数字。 int i:循环控制变量,其中i 具有自加功能。 int j: 整型形参变量,其中j 具有自加功能。

6)说 明:输入字符后需要输入-1,待系统做出判断后往下执行。 选择判断结构

switch-case语句:从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case;假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。

假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。

for语句:for(语句1 ; 语句2 ; 语句3 ) {循环体}

执行时,先执行一次语句1(注意只执行一次) 之后判断语句2是否成立 1).如果成立执行循环体,之后执行语句3。再返回语句2判断条件是否成立?成立执行循环体后再执行语句3,如此直到循环体不成立则跳出循环 2)如果语句2不成立,则不执行循环体也不执行语句3直接跳出循环。 输出函数:

1)函数原形:printf(“======”,*)

2)功 能:输出相关提示信息及最后结果。

3)相关变量: int n:输出正确结果。

int i,j:输出计算正确,计算排班情况。

4)说 明:输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量

前加逗号。

四、程序调试过程

由于对C语言知识储备有限,且时间精力有限,我们在设计程序程序的过程中遇到了不少问题。

首先遇到的问题是:使用何种数组以及如何使输出变得简洁易懂,易操作。在思考讨论之后,我们决定尽量“使输入数字化,输出结果文字化”的做法,也就是再输入星期几的时候直接用数字代替,在输出的时候,为了更加直观,就需要把原先的数字输出为星期几这种文字的形式;在单个对象输出结束之后,我们选择了 -1这个不会与其他日期混淆的数字,以此表示可以对下一个对象进行输出。这就需要重新定义一个二维数组,数组中存放“星期一,星期二”等文字形式的定义,这样我们可以通过前面输入的数字来引用对应的文字。

解决了最基本的问题之后,我们遇到的问题是:程序使用过程还是不够直观,不能让使用者直接观察到每个保安可能选择的休息日,在无法自行解决的情况下我们向老师求助。在解释程序、说明目的之后,我们重新进行了一次讨论,最后老师建议我们重新定义一个新的数组。为此我们找了很多相关资料,不断地进行调试,修改,却始终无法完全达到我们的预想;在老师的指导下,再次经历了数组选择以及一系列的调试与修改之后,我们重新定义了 ss字符串,采用了 char ss数组。

在选择了char ss数组之后遇到的问题就是输出语句繁琐,每次都会显示“请输入下列人选择休息的可能时间”,后来我们对“printf(\请输入下列人选选择休息的可能时间:\\n\”这个语句进行修改与位置的调整,使得其变得简洁。

调试的过程比较繁琐,除了跟版本有一定的关系外,有时候就因为一个小错误,程序调试了好久也出不来想要的结果,最后通过我们组员的一起讨论、利用课本、网上的资源和老师的帮助,这些问题都被我们逐一解决了。

五、程序运行过程

1、输出多种结果

2、输出0种结果(说明输入有误,需要重新输入)

3、只输出一种结果(如题目要求)

六、程序有待改进的地方

本程序是根据保安可能选择的休息日,给出满足条件的值班安排这一功能,系统功能相对单一,不够人性化。在对C语言有更深的了解后,可以考虑对程序进行修改,增加系统功能,例如:

1、增设特殊情况显示以及分析,根据况进行人性化排班,例如:看病>办证>旅游 2、在系统无法排班时,判断周几没有值班人员; 3、当有某个保安请假一周,也就是剩下的6名保安有一个人一周要值两天时如何排班; 4、增设投票功能:当有多种值班安排时,通过投票随机决定使用哪一种值班安排; 5、可增设当天值班保安的工号、电话、地址等信息的显示;

七、程序设计总结

在完成本次课程设计的过程中,一方面让我们在实际运用中更加深刻地理解了课堂学到的知识;另一方面,通过查询资料、咨询老师,培养了我们在有限时间内搜集资料以及写论文的能力;与此同时,在编写程序时,也让我们体会到想要学好一个程序,不仅要上课认真听老师讲,还要在课外多阅读一些相关的资料和书籍。

同时,相关的资料和老师的指导对我们完成程序的编写提供很大的帮助。除此之外,我们还认识到编写程序时必须要耐心仔细,真可谓,细节决定成败;一个标点和字符或是中英文等输入细节都要注意,否则就可能导致整个程序运行错误,这极大地培养了我们务实求真,发现问题的科学素养。

此外,思考、讨论、查找资料以及调试、修改的过程是非常繁琐的,但是我们要尽量做到尽善尽美,只有这样,才能设计出简洁的、比较人性化的程序。

八、致谢

本次课程设计的完成,除了感谢百度文库提供的资料以及网友的不吝赐教之外,还要特别感谢C语言课程李老师的耐心指导,让我们在繁琐的调试中寻找到乐趣以及不断改进的动力。

参考文献

[1]谭浩强,C程序设计(第四版),北京:清华大学出版社,2010.6 [2] 豆丁网-http://www.docin.com/p-475334925.html

[3]- C语言论坛 - 编程论坛http://bbs.bccn.net/thread-329752-1-1.html [4]-3亿文库-http://3y.uu456.com/bp-cs1ss01dff00bedsbqf31dd0-1.html

[5]http://wenku.http://www.wodefanwen.com//link?url=z0auYk8U_fl7zeJMFCDv8DyzKyuRbtdM2mhL7G3RDZgml12wE78M88yCTPnoH5aeBqyQEGKAjuKGf81vAU4Llu3Yxhwg-WKpKmfo5dZbdrG

附录

源程序:

#include

int n = 0;

int rest[7][7];

void swap(int *a, int *b) {

int m; m = *a; *a = *b; *b = m; }

void perm(int list[], int k, int m) {

int i; int j;

if(k > m) {

for (i=0; i<7; i++) {

for (j=0; j<7; j++) {

if (rest[i][j] == -1) return;

if (rest[i][j] != list[i]) continue;

if (rest[i][j] == list[i]) break; } }

n++;

printf(\

printf(\赵 钱 孙 李 周 吴 陈\\n\

printf(\ for(i = 0; i <= m; i++)

{

switch (list[i]) {

case 1: printf(\星期一 \ break;

case 2: printf(\星期二 \ break;

case 3: printf(\星期三 \ break;

case 4: printf(\星期四 \ break;

case 5: printf(\星期五 \ break;

case 6: printf(\星期六 \ break;

case 7: printf(\星期日 \ break; default: break; } }

printf(\ } else {

for(i = k; i <= m; i++) {

swap(&list[k], &list[i]); perm(list, k + 1, m); swap(&list[k], &list[i]); } } }

int main() {

int list[] = {1, 2, 3, 4, 5, 6, 7}; int i, j;

char ss[7][20]={\赵\钱\孙\李\周\吴\陈\ printf(\欢迎使===================================\\n\

printf(\请输入下列人选选择休息的可能时间:\\n\ for(i = 0; i < 7; i++) {

用排班系统

printf(\:\ for(j = 0; j < 7; j++) {

scanf(\ if(rest[i][j] == -1) break; } }

printf(\ perm(list, 0, 6);

printf(\ getchar(); getchar(); return 0; }

本文来源:https://www.bwwdw.com/article/71cf.html

Top