第一篇:《C程序设计实践》课程设计指导
《C程序设计实践》课程设计指导
一、课程设计目的1、通过课程设计,熟练掌握Visual C++ 6.0 开发环境的使用,提高程序调试能力;
2、通过课程设计,提高学生分析问题、解决问题的能力;
3、通过课程设计,复习巩固C语言的循环结构、指针、数组、结构体、文件等方面的知识,并在实践中加以运用。
4、通过课程设计,提高学生查阅资料、吸收和运用新知识的能力。
二、课程设计要求
每个学生在下列课题中至少选一题,并独立完成。
1、学生成绩管理系统
2、学生档案管理系统
3、同学通信录管理系统
4、职工档案管理系统
5、职工工资信息管理系统
6、小型图书信息管理系统
7、超市商品信息管理系统
8、实验室设备信息管理系统
9、试题(选择题)信息管理系统
10、列车时刻表信息管理系统
每课题均须具有以下功能:
1、信息录入,包括记录的追加和插入;
2、信息删除;
3、信息修改;
4、信息排序和查询;
5、信息的保存和装载;
6、简单的帮助。
三、设计方法及过程
1、问题分析
包括系统所要完成的功能、数据结构分析,如问题处理过程中使用的结构体及包含的成员等,文件的类型、存储的内容等,输入/输出的格式等。
2、系统功能设计及模块(函数)划分
根据分析结果,画出系统结构图,确定系统的功能模块,包括模块的名字、接口(即函数的参数、返回值)及功能,模块间的调用关系。
3、模块的算法设计
设计每个功能模块的算法,可以用伪代码或流程图表示。
4、编码
代码的编写要符合规范,程序中对各个模块的功能、模块主要实现部分都需要加上注释,以增加程序的可读性,便于软件维护。
5、调试
四、设计报告
课程设计完成后,每位同学要写出《程序设计及C语言》课程设计报告,打印并上交(同时上交源代码),作为成绩的评定依据之一。报告的内容包括:问题分析、系统功能设计及模块(函数)划分、模块的算法设计、源代码及设计总结五个部分。
第二篇:C语言程序设计教程课程设计
《C语言程序设计教程课程设计》计划 类别:课程设计
适用于三年制专科计算机应用专业 学分:1 周数:1
一、设计目的与要求
《高级语言程序设计课程设计》是《高级语言程序设计》课程的实践环节,其教学目的是通过一些中小规模程序的编程,使学生对c语言程序设计的基本规则与方法有比较全面的理解和认识,熟练掌握高级语言程序设计技术,为以后学习更高层次的程序设计和软件开发奠定坚实基础。
通过本课程设计,应达到下列基本要求: 能够结合c语言来理解程序设计的基本概念;
掌握用c语言解决问题的基本方法和步骤,能够熟练地使用c语言编写中小型应用程序; 熟练掌握c语言编程规则,掌握函数的应用方法和编写; 熟练掌握面向过程程序设计方法; 掌握结构化程序设计思想和方法; 培养和提高学生的程序调试能力;
培养学生查阅手册、图表和文献资料的能力; 培养学生撰写报告文档的能力。
二、课程设计题目
每个题目的限选人数根据班级总人数平均后确定,但要求同一题目的学生独立完成设计题目,以下10个题目任选其一。1。职工信息管理系统设计 1.1问题描述
试设计一职工信息管理系统,职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)1.2基本要求
1.系统以菜单方式工作(2.职工信息录入功能(3.职工信息浏览功能(4.查询和排序功能:(至少一种查询方式)--算法(((1)按工资查询((2)按学历查询等
5.职工信息删除、修改功能(任选项)(2.图书信息管理系统设计 1.1问题描述
试设计一图书信息管理系统,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。1.2基本要求
1.系统以菜单方式工作(2..图书信息录入功能(3..图书信息浏览功能(4..查询和排序功能:(至少一种查询方式)--算法(((1)按书名查询((2)按作者名查询
5..图书信息的删除与修改(3。学生信息管理系统设计 3.1问题描述
试设计一学生信息管理系统,学生信息包括:学号、姓名、年龄、性别、出生年月、地址、电话、E-mail等。3.2基本要求
1..系统以菜单方式工作 2..学生信息录入功能 3..学生信息浏览功能 4..查询、排序功能(1)按学号查询(2)按姓名查询
5..学生信息的删除与修改 4。学生选修课程系统设计 4.1问题描述
试设计一选修课程系统,假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。4.2基本要求
1.系统以菜单方式工作(2.课程信息录入功能(3.课程信息浏览功能(4.查询功能:(至少一种查询方式)--算法((1)按学分查询((2)按课程性质查询(5.学生选修课程(可选项)(5。销售管理系统 5.1问题描述
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:(1)销售员的代号,(2)产品的代号。(3)这种产品的当天的销售额。每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,5.2基本要求
编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1.计算上个月每个人每种产品的销售额。
2.按销售额对销售员进行排序,输出排序结果(销售员代号)
3.统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4.输出统计报表
销售统计报表能反映出:销售员代号 产品代号 销售之和 每种产品之和 总和 6.学生成绩管理 6.1问题描述 对学生成绩进行管理,学生信息如下: 现有学生成绩信息,内容如下 姓名学号语文数学英语
张明明
01
李成友
02
张辉灿
03
王露
04
陈东明
05
„.......… 6.2基本要求
实现学生信息管理,软件的入口界面应包括如下几个方面: 1.系统以菜单方式工作
2.学生信息数据能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息
3.查询时可实现按姓名查询、按学号查询
4.成绩统计:输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
5.能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)6.学生可自动增加新功能模块(视情况可另外加分)7.学生成绩管理 7.1问题描述
学生成绩进行管理,学生信息包括:学号、姓名、班级、课程
1、课程
2、课程
3、课程
4、学期。
7.2基本要求
1.系统以菜单方式工作
2.能按学期、按班级完成对学生成绩的录入、修改
3.能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 4.能查询学生成绩,不及格科目及学生名单
5.统计每门课100~85分、84~70、69~60分以上不及格的人数
6.从键盘上输入一个姓名或学号,能够查找是否是该班成员,若是,要求输出该生的全部信息
7.可以对任一学生的成绩、学号进行修改
8.可增添和删除任一学号学生的信息,增添和删除后仍能按学号排序 9.能按班级输出学生的成绩单 8.通讯录管理 8.1问题描述
设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串 地址字符串 邮政编码字符串 电话号码字符串 8.2基本要求 1.主要功能:
(1)能建立、查询、修改和增删学生通讯录(2)能够按多种方式进行查询 2.要求:界面友好,易于操作 9.图书管理系统 9.1问题描述
图书信息管理系统设计,图书信息包括:登录号、书名、作者名、存在状态、分类号、出版单位、出版时间、价格、借书人姓名、性别、学号等。信息描述: 9.2基本要求
1.系统以菜单方式工作 2.新进图书基本信息 3.图书信息浏览功能
4.图书基本信息的查询和排序功能:(至少一种查询方式)--算法 按书名查、按作者名查询
5.对撤消图书信息的删除删除与修改(可选项)(6. 为借书人办理注册
7.办理借书手续(非注册会员不能借书)8.办理还书手续
10.设计一个简单计算器 10.1问题描述
模拟windows操作系统中的计算器,能进行加减乘除等计算。10.2基本要求
1.显示计算器界面
2.当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止 3.可以多次响应用户的计算请求 11..图书借还管理系统 11.1问题描述
对借还图书进行管理,图书被借阅,应记录借阅信息,同时图书的存库数量相应减少。还书时,应将图书数量相应增加,同时删除图书借阅信息。图书基本信息应包括:图书名称、图书编号、单价、作者、存库数量。借书人信息应包括姓名、性别、学号等。11.2基本要求
1.新进图书基本信息的输入 2.图书基本信息的查询 3.对撤消图书信息的删除 4.为借书人办理注册
5.办理借书手续(非注册会员不能借书)6.办理还书手续
12.用户登录程序设计 12.1问题描述
做一个密码验证程序,密码验证只有三次机会。12.2基本要求 1.有登录界面,用户输入密码时以*代替输出,用户登录成功后可以修改密码。2.可以有多个用户登录。
3.初次登录的密码有管理员设置。13.车票管理程序设计 13.1问题描述
一车站每天有n个发车班次,每个班次都有一班次号(1、2、3„n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次发车时间起点站终点站行车时间额定载量已定票人数
8:00
郫县广汉
2
6:30
郫县成都
0.5
„
13.2基本要求
1.录入班次信息,可不定时地增加班次数据。
2.浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
3.查询路线:可按班次号查询 ,可按终点站查询。4.售票和退票功能。
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。5.至少采用文本菜单界面(如果能采用图形菜单界面更好)。
三、进度安排
第1天:分析所选题目,查阅相关资料,写出需求分析,确定系统功能,划分模块;设计算法、数据结构;
第2-3天:编制代码并调试; 第4天:检查学生程序;
第5天:提交源程序清单和课程设计报告,进行答辩。
四、设计方式
1.对于每个题目,应完成算法设计和简单的应用程序设计。
a)算法设计包括解题思路,模块划分和模块代码实现方法。附传统的流程图或N-S图。b)应用程序设计包括:编辑录入源程序;反复调试、排错、运行;借用软件工程的一些方法和技巧对程序进行测试。
2.编程量以满足基本要求即可,但必须调试通过,运行结果准确。3.设计完成后,需要写成一份课程设计报告(A4纸打印出来),体现课程设计所做工作。4.结果形式:提交调试无误的源程序代码,课程设计报告一份。
五、成绩评定标准
学生成绩以优、良、中、及格和不及格5个等级评定。1.学生编写的实际软件和运行结果,占总成绩40% 2.设计报告,占总成绩40% 3.教师提问,占总成绩10% 4.出勤,占总成绩10%
六、课程设计报告要求
按照软件工程及应用程序系统设计步骤详细叙述课程设计题目的完成过程。课程设计报告的格式要求: 封面
洛阳理工学院C语言课程设计报告 题目 院系 班级 姓名 指导老师 年月日
2.课程设计内容:
(1)问题描述:描述要求编程解决的问题。(本课题具有哪些功能,做了哪些工作、用了哪些方法技巧,实现结果如何)
(2)基本要求:给出程序要达到的具体的要求
(3)所设计的应用程序运行所需要的软件、硬件支持环境。(4)算法分析(设计思路),描述解决相应问题算法的设计思想。
(5)功能模块划分,每个模块对应的函数、每个函数功能及参数设计情况说明。(6)系统流程图
(7)实现步骤(要求有详细的文字表述):
如安装 VC;熟悉课题;查找资料;需求分析;设计框图;录入程序;
语法排错;逻辑排错;程序测试;程序运行;数据记录;写课题设计报告等。(8)源程序完整代码以及原始数据、测试数据、输入数据及其运行结果记录。(9)简要总结及自我评价。
(10)源程序:给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参数的含义和函数返回值的含义。(11)参考文献 参考文献书写模板:
[1] ***.C程序设计(第三版).北京:清华大学出版社,2005 [2] ***.C程序设计题解与上机指导(第三版).北京:清华大学出版社,2005 [3] ***主编.C语言程序设计实验与实训指导及题解.北京: 高等教育出版社,2005 [4] ***.C语言程序设计.北京:清华大学出版社,2008 [5] 王静, 武春岭编著.C语言程序设计基础习题集.北京:中国水利水电出版社,2008 [6] 黄维通,马力妮等编著.C语言程序设计习题解析与应用案例分析.北京: 清华大学出版社,2004
七、实习时间、地点及班级人数
时间:从2010年6月21日至6月25日,共五天时间。地点:洛阳理工学院西区实验楼B计算机房 人数:Z090551一个班40人
第三篇:C语言程序设计课程设计指导书
课程设计指导书
课程名称: C语言程序设计
班次: 自动化2016-01,02,03班
设计任务:
整个课程设计一共提供了10个题目,编号为1~10。按学号尾数进行选题设计。
课程设计目的
1、进一步掌握利用C语言进行程序设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图表示算法;
5、学习撰写课程设计报告;
第一部分:课题描述(一共10个课题)
课题1:图书管理系统
在磁盘上创建3个txt文件,命名book.txt,borrow.txt和reader.txt,分别存储图书、借阅和读者的信息,每本图书的基本信息有编号、书名、作者、出版日期、金额、类别、在馆数量等。借阅基本信息有:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。读者信息包括借书证号、姓名、班级、学号、类别等。创建图书管理系统,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟借阅图书的管理过程。
系统功能包括以下方面: A、图书信息管理
图书按类别进行管理,常见类别有书籍、期刊、报刊等,在该模块中又包含添加、删除、修改、查询等操作,操作结果打印在控制台中。
字段包含:书名,编号,类别,存放地点,入库时间
B、借阅信息管理
图书借阅模拟操作,包括以下功能:借出,归还和续借等操作,对超期图书进行罚款金额显示。另外可以设置罚金数额和最大借阅数量和时间等参数。
字段包含:书名,编号,借阅者,借出时间,归还时间,借阅状态,超期时间,最大借阅数
C、读者信息管理
读者分为教师和学生两大类等级:教师和学生的最大图书借阅数量和时间有所不同,并可对添加、挂失和查询读者信息。
字段包含:读者姓名,读者类别,可借阅时间,可借阅数量,系统操作过程中能够正确读取和更新文件,并进行正常的图书、借阅和读者管理操作。
课题2:个人通讯录管理系统
在磁盘上建立1个communication.txt文件,作为读取和存储的通讯录,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟通讯录的操作过程。
系统功能包括以下方面:
A、通讯录的每位联系人信息有姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
B、输入、查找、删除、修改联系人信息功能。
C、显示功能:能够显示所有联系人信息(大于10条的分屏显示),或按分类进行显示。D、分类操作:可以按分类信息进行同一类的联系人操作,比如显示、删除和查找操作。E、(选作)可以加载联系人头像并进行显示,可用字符拼图或读取已有的黑白图片文件。系统操作过程中能够正确读取和更新文件,并进行正常的通讯录联系人操作。
课题3:职工工资管理系统
在计算机中建立相应的数据结构,利用程序实现工资的输入、查询、增、删、改、统计、输出等操作。
1、设计一个能够记录公司员工工资的数据结构(比如包括:员工号,姓名,基本工资,补贴金额,奖励金额,扣除金额、实发工资等)、文件(文件作为工资数据的保存介质)。注:,其中实发工资=基本工资+补贴金额+奖励金额-扣除金额
2、应用文件保存工资管理数据。
3、新增:能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。
4、查找:输入员工的员工号,并在文件中查找
若找到,则显示该员工的工资详情 否则提示未找到。 无论查找成功否,应还可选择继续查找或退出。
5、删除:输入员工的员工号,并在文件中查找
若找到,提示是否确定删除
若选择是,则删除文件中该员工信息 若选择否,则取消, 否则提示无此员工信息
无论查找成功否,应还可选择继续查找或退出。
6、修改:输入员工的员工号,并在文件中查找
若找到,显示该员工的所有信息,并可进行输入。完成后将现输入的内容覆盖原内容保存到文件中。
否则提示无此员工信息
无论查找成功否,应还可选择继续查找或退出。
7、统计:分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。如:
基本工资、补贴金额、奖励金额、扣除金额、实发工资
总和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人数: 10
8、退出:退出程序
课题4:自动售货机系统
某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。如果商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
自然,你的售货机用户希望尽可能地给用户找零,以免流失顾客。为了调查用户的喜好,希望得到三种商品的每日消费数据,由此来调整货柜中三种货物的存贮量。你的程序将实现以下功能:
库存查询:检索当前三种商品的储存量 商品上架:为三种商品增加或者减少储量
销售查询:分别统计今天每种商品的销售量和销售额 会计查询:打印当天的往来帐目以及剩余零钞数目
结算功能:取出今天所有的10元纸币,并且分别设置零钞的数目
销售界面:顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币 【题目要求】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(2)你的售货机用户不希望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。
(3)计算机安排的找零算法应该合理,不要出现某一种零钱找光的情况。同时顾客也不喜欢 明明有5元零钞,却被找给5个一元的零钞。尽量满足这两个要求。
(3)、要求以上功能分别用函数实现。并要求用C语言的文件操作语句将以上所有结果保存在文件goods.txt。
【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
课题5:销售管理系统
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(在磁盘上创建一个txt文件记录上个月的销售信息),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
销售统计报表
产品代号
销售之和 销售员号 1 2 3 4 5 每种产品之和 总和
5)可以按产品代号查询,也可以按销售员号查询。
课题6: 车票管理系统一车站每天有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语言设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
课题
7、单项选择题标准化考试系统
在磁盘上创建一个test.txt文件,使用记事本打开后先写入40道单选题和相应的选项和正确答案。再编写一个单项选择题标准化考试系统,该系统功能要求: 字段:题干,备选答案,标准答案
A、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)。B、试题录入、修改和删除。
C、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)。D、考生答题:用户抽取N道试题进行答题,键盘输入每道题的答案。
E、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
系统操作过程中能够正确读取和更新试题文件,并进行正常的试题管理、抽取、答题和判卷操作,该过程在控制台中显示,人机交互方便。
课题8:医院门诊候诊的队列管理程序
要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:
字段:挂号单号,患者姓名,年龄,性别,分诊室号,【实现提示】 1--挂号 2--叫号 3--分诊室
4--显示各诊室队列信息
5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6--结束程序
选1时,提示用户在一行内输入姓名及挂号单编号;
选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除 选3时,进行诊室分配
选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室 选5时,进行两种统计方法的选择,并进行必要的统计计算 选6时,退出程序的运行
要求1~5中每一个步骤完成后都能重新显示此选择菜单
课题9:成绩管理系统
现有学生成绩信息,内容如下
姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 „.......„
请用C语言编写一系统,实现学生信息管理,软件的功能要求如下:(1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果
课题10:停车场管理系统设计
1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现, 每个数组元素存放一个车牌号)每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项.其中停车时间按分钟计算
2.假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5.即先将这四辆车的信息存入文件”car.dat”中(数组的对应元素也要进行赋值)3.停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.dat”中, 并将在此之前的所有车的停车时间加5.4.收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元.(停车费用可设置一个变量进行保存), 同时从文件”car.dat”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.5.输出停车场中全部车辆的信息.6.退出系统.字段:车牌号,楼层号,车位号,入库时间,出库时间,停车时间,停车费用
第二部分:基础训练
若感觉直接完成所选课题很困难,可以尝试先完成基础训练。完成基础训练,有一定的编程基础后,在完成所选课题。
第一步: 定义一个结构体类型,用来表示学生的各种属性。定义一个学生结构体变量,从键盘输入各个分量的值,然后从屏幕输出该结构体变量的各个分量。学生结构体类型定义如下:
typedef struct _CStudent { char szName[20];/* 学生姓名 */ char nNumber[10] /* 学号 */ int nAge;/* 年龄 */ char cSex;/* 性别,约定 „m‟ 代表女,„f‟代表男 */ char szAddress[20];/* 家庭地址 */ double dDataStruct;/* 数据结构成绩 */ double dMath;/* 数学成绩 */ double dEnglish;/* 英语成绩 */ }CStudent;
第二步:
定义一个结构体类型,用来表示学生的各种属性。定义一个含3个元素的学生结构体变量数组,从键盘输入3个同学的信息,然后从屏幕输出该结构体变量数组各成员的值。
建议:定义两个函数,一个用于从键盘输入一个学生结构体变量的各个分量的值,另一个把一个学生结构体变量的值输出到屏幕。函数原型可以如下:
void input(CStudent* p)/* 从键盘输入 */ void output(CStudent* p)/* 向屏幕输出 */
第三步:
从键盘输入一个学生的信息,然后以文本方式写入文件。定义另一个学生结构体变量,用于从文件读出数据,然后把数据显示到屏幕。
第四步:
定义一个含3个元素的学生结构体数组,从键盘输入3个同学的信息,以文本方式把这些数据写入文件。
第五步:
将课题4写入文件的数据全部读出,输出到屏幕。
附录一:
本设计中需要清屏。说明如下:
格式:
system(“cls”)包含头文件: stdlib.h
附录二:控制台程序选择菜单的完成
#include
int main(){ int choice1 = 1, choice2;
do {
printf(“欢迎使用学生成绩管理系统n”);
printf(“请选择程序功能n”);
printf(“
1、数据录入n”);
printf(“
2、数据查询n”);
printf(“
3、输出所有同学信息n”);
printf(“
4、退出程序n”);
scanf(“%d”, &choice1);
switch(choice1)
{
case 1:
printf(“数据录入n”);
/*编写数据录入程序*/
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 2:
printf(“
1、按学号查询n”);
printf(“
2、按姓名查询n”);
scanf(“%d”, &choice2);
switch(choice2)
{
case 1:
printf(“按学号查询n”);
/*编写按学号查询程序*/
break;
case 2:
printf(“按姓名查询n”);
/*编写按姓名查询程序*/
break;
}
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 3:
printf(“输出所有同学信息n”);
/*编写输出所有同学信息程序*/
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 4:
break;
}
system(“cls”);}while(choice1!= 4);
printf(“程序结束n”);return 0;}
附录三:关于菜单的处理技术举例 #include
int menu_select();/*主菜单函数*/ /******主函数开始*******/ main(){ int i;Salary sal[M];/*定义结构体数组*/ int length;/*保存记录长度*/ clrscr();/*清屏*/ for(;;)/*无限循环*/ { switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/ { case 1:length=enter(sal);break;/*输入记录*/ case 2:list(sal);break;/*显示全部记录*/ case 3:search(sal,name);break;/*按姓名查找显示记录*/ case 4:length=delete(sal);break;/*删除记录*/ case 5:length=add(sal);break;/*插入记录*/ case 6:save(sal);break;/*保存文件*/ case 7:length=load(sal);break;/*读文件*/ case 8:display(sal);break;/*按序号查找显示记录*/ case 9:sort(sal);break;/*排序成新文件*/ case 10:copy(sal);break;/*数据备份*/ case 0:exit(0);/*如返回值为0则程序结束*/ } } } /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){ char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf(“press any key enter menu......n”);/*提示按任意键进入菜单选择*/ getch();/*读入任意字符*/ clrscr();/*清屏*/ gotoxy(1,1);printf(“********************MENU*********************nn”);printf(“ 1.Enter a recordn”);printf(“ 2.List the filen”);printf(“ 3.Search record on namen”);printf(“ 4.Delete a recordn”);printf(“ 5.Add record n”);printf(“ 6.Save the filen”);printf(“ 7.Load the filen”);printf(“ 8.Display record on ordern”);printf(“ 9.Sort to a new filen”);printf(“ 10.Copy to a new file n”);printf(“ 0.Quitn”);printf(“***********************************************n”);do{ printf(“n Enter you choice(0~10):”);/*提示输入选项*/ scanf(“%d”,&c);/*输入选择项*/ }while((c>10)||(c<0));/*选择项不在0~11之间重输*/ return c;/*返回选择项,主程序根据该数调用相应的函数*/ }
附录四:关于头文件的使用
/******头文件(.h)***********/ #include “stdio.h” /*I/O函数*/ #include “stdlib.h” /*标准库函数*/ #include “string.h”/*字符串函数*/ #include “ctype.h” /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ { char name[20];/*姓名*/ char no[10];/*员工编号*/ char units[30];/*部门*/ char post[10];/*职称*/ „„ }Salary;/******以下是函数原型*******/ int enter(SALARY t[]);/*输入记录*/ void list(SALARY t[]);/*显示全部记录*/ void search(SALARY t[],char name[]);/*按姓名查找显示记录*/ int delete(SALARY t[]);/*删除记录*/ int add(SALARY t[],int n);/*插入记录*/ void save(SALARY t[]);/*记录保存为文件*/ int load(SALARY t[]);/*从文件中读记录*/ void display(SALARY t[]);/*按序号查找显示记录*/ void sort(SALARY t[]);/*排序成新文件*/ void copy(SALARY t[]);/*数据备份*/ int menu_select();/*主菜单函数*/
附录五:关于文件的使用
要将信息永久保存,可采用磁盘文件的形式来存储数据。C语言提供了丰富的文件操作函数。从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:00110101 00110110 00110111 00111000
↓
↓
↓
↓
十进制码: 5 共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。在C语言中,文件操作都是由库函数来完成的。
文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式)其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp;fp=(“file a”,“r”);其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。
又如:FILE *fphzk;fphzk=(“c:hzk16',”rb“)其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。
文件使用方式
意 义
“rt”
只读打开一个文本文件,只允许读数据 “wt”
只写打开或建立一个文本文件,只允许写数据 “at”
追加打开一个文本文件,并在文件末尾写数据 “rb”
只读打开一个二进制文件,只允许读数据 “wb”
只写打开或建立一个二进制文件,只允许写数据 “ab”
追加打开一个二进制文件,并在文件末尾写数据 “rt+”
读写打开一个文本文件,允许读和写 “wt+”
读写打开或建立一个文本文件,允许读写
“at+”
读写打开一个文本文件,允许读,或在文件末追加数据 “rb+”
读写打开一个二进制文件,允许读和写 “wb+”
读写打开或建立一个二进制文件,允许读和写
“ab+”
读写打开一个二进制文件,允许读,或在文件末追加数据
fclose函数
调用的一般形式是: fclose(文件指针); 例如:fclose(fp);正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。文件的读写对文件的读和写是最常用的文件操作。
读字符串函数fgets函数
fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志' '。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。
对fgets函数有两点说明:一是,在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。二是,fgets函数也有返回值,其返回值是字符数组的首地址。
写字符串函数fputs fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针)其中字符串可以是字符串常量,也可以是字符数组名,或指针 变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。
数据块读写函数fread和fwrite C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp);写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp);其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。
例如:fread(fa,4,5,fp);其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。
从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。#include
本例程序定义了一个结构stu,说明了两个结构数组boya和 boyb以及两个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以读写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中,然后把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。
getch();exit(1);}
printf(”ninput datan“);for(i=0;i<2;i++,pp++)scanf(”%s%d%d%s“,pp->name,&pp->num,&pp->age,pp->addr);pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);rewind(fp);
fread(qq,sizeof(struct stu),2,fp);printf(”nnnametnumber age addrn“);for(i=0;i<2;i++,qq++)
printf(”%st%5d%7d%sn“,qq->name,qq->num,qq->age,qq->addr);
fclose(fp);}
格式化读写函数fscanf和fprintf fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,”%d%s“,&i,s);fprintf(fp,”%d%c",j,ch);
文件的随机读写
前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据。但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位移动文件内部位置指针的函数主要有两个,即 rewind 函数和fseek函数。
rewind函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。
fseek函数。
fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。
起始点
表示符号
数字表示
────────────────────────── 文件首
SEEK—SET
0 当前位置
SEEK—CUR
文件末尾
SEEK—END
例如:fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。文件的随机读写在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。
文件检测函数
文件结束检测函数feof函数调用格式: feof(文件指针);功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
读写文件出错检测函数ferror函数调用格式: ferror(文件指针); 功能:检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示未出错,否则表示有错。
文件出错标志和文件结束标志置0函数clearerr函数调用格式: clearerr(文件指针);功能:本函数用于清除出错标志和文件结束标志,使它们为0值。
第四篇:C语言程序设计课程设计任务书
C语言程序设计课程设计任务书
项目4:
高校工资管理系统一、课程设计项目:
高校工资管理系统
二、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(3)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
三、设计方法和基本原理:
1、功能要求
问题的描述(功能要求):
现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息: 每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师: 基本工资+课时费;
实验员: 基本工资+实验室补助;
行政人员: 基本工资+行政补贴;
教师兼职实验员: 基本工资+课时费+实验室补助;
行政人员兼职教师:基本工资+行政补贴+课时费;(其中:
1.课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
2.基本工资:教师800元,实验员650元,行政人员750元。
3.行政补贴:250元。4.实验室补助:150元。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤: a)写出需求分析(该程序要实现什么什么样的功能)b)分析系统中的各个实体之间的关系及其属性和行为; c)根据问题描述,设计系统的类层次;
d)完成类层次中各个类的描述(包括属性和方法); e)完成类中各个成员函数的定义; f)用户界面的设计
g)分析系统功能模块(系统流程图)h)代码编写 i)功能调试;
j)完成系统总结报告以及系统使用说明书。
四、程序设计和调试:
五、答辩与评分标准:
1、完成基本功能:60分;
2、设计报告及使用说明书:10分;
3、设置错误或者按照要求改变结果:15分;
4、回答问题:15分。
六、报告:
包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等。
第五篇:C语言程序设计基础课程设计报告
程序设计基础课程设计报告
课程名称: 课程设计题目: 程序设计基础课程设计 学生信息管理系统
姓
名:
系: 专
业: 年
级: 学
号: 指导教师: 职
称:
计算机科学技术系 计算机网络技术
讲师
2012年1月1日
一、设计题目及要求。
1、题目:学生信息管理系统
2、要求:
1)建立学生信息的结构体
2)学生信息的初始化(可以从文件获取)3)学生信息的添加、修改、查找 4)学生信息的输出 5)对学生信息按学号排序 6)计算一门课的平均分和总分 7)将学生信息保存为文件
二、设计算法设计分析。
1、主要功能模块:添加模块、查找模块、修改模块、排序模块 添加模块:
(1)从键盘中输入添加学生的人数n.(2)从键盘中输入学生的学号和各科成绩,分别存入一维数组sum和二维数组score中。
(3)计算各科的总分和平均分,分别存入一维数组sum和aver中。
(4)判断各个学生的三科成绩是否都大于90,如果是则输出“Y”,表示该生能获得奖学金,否则输出“N”表示该生不能获得奖学金。
添加模块结果图
查找模块
(1)从键盘中输入要查找的学生的学号k..(2)编写程序使num[i]与k一一对比,直到num[i]==k,输出该生的学号及相应成绩。
查找模块结果图
修改模块:
(1)从键盘中输入要修改的学生的学号x..(2)编写程序使num[i]==x,输出该生的成绩,选择你要修改的科目并输入你修改后的新分数,重新计算该生的总分和平均分。
(3)重新判断该生的三门课成绩是否都大于
90,如果是则输出“Y”,表示该生能获得奖学金,否则输出“N”表示该生不能获得奖学金。
修改模块的结果图
三、程序编码实现。源代码与执行结果2部分
/*函数功能:添加一个或几个学生的成绩,查找某个学生的成绩,修改某个学生的成绩
函数参数:长整型数组num,存储每个学生的学号
整型数组score,存储每个学生的成绩
整型数组sum,存储每个学生的总分
实型数组aver,存储每个学生的平均分
字符型数组c,标志每个学生能否获得奖学金
整型数n,存储学生总数 函数返回值:无 */
void Find(long num[],int score[][3],int sum[],float aver[],char c[],int n){ long x,t,k;int i,j;
printf(“请选择您要实现的功能:1-添加,2-查找,3-修改n”);scanf(“%ld”,&t);if(t==1){ printf(“请输入你要添加的人数:”);scanf(“%d”,&A);printf(“Enter No and Score as: MT EN PHn”);for(i=n;i printf(“学号t数学t英语t物理t总分t平均成绩t>90n”); printf(“%4ldt”,num[i]); for(j=0;j<3;j++){ printf(“%4dt”,score[i][j]);} printf(“%5dt%6.1ftt%cn”,sum[i],aver[i],c[i]);} } } if(t==3){ printf(“请输入学号:”);scanf(“%ld”,&x);for(i=0;i printf(“请输入你要修改的选项所对应的数字:0-MT,1-EN,2-PHn”); scanf(“%d”,&j); printf(“你将修改为:”); scanf(“%d”,&score[i][j]); sum[i]=0; for(j=0;j<3;j++) { sum[i]=sum[i]+score[i][j]; } aver[i]=(float)sum[i]/3; if((score[i][0]>=90)&&(score[i][1]>=90)&&(score[i][2]>=90)) { c[i]='Y'; } else { c[i]='N'; } } } } } /*函数功能:按学号对学生排序 函数参数:长整型数组num,存储每个学生的学号 整型数组score,存储每个学生的成绩 整型数组sum,存储每个学生的总分 实型数组aver,存储每个学生的平均分 字符型数组c,标志每个学生能否获得奖学金 整型数n,存储学生总数 函数返回值:无 */ void order(long num[],int score[][3],int sum[],float aver[],char c[],int n){ int i,j,t,x;long k;float g;char h;for(i=0;i x=score[i][j]; score[i][j]=score[t][j]; score[t][j]=x;} } } 执行结果(1): (2) 四、程序调试过程中出现的问题: 开始运用添加功能时,虽然添加了,但在输出结果中不显示。 解决办法:将最后的输出中的i 五、总结 在课程设计的这段日子里,我真正体会到什么叫失败是成功之母,因为在编写程序时会出现这样或那样的错误,有的是语法错误,有的是逻辑错误,还有的是由于自己粗心漏掉或多加了一些符号等等,但只要你能静下心来慢慢寻找原因,慢慢修改,最后终能成功。但如果你在编程时格外细心,你将会减少许多麻烦,同时也会节省很多时间。