第一篇:课程设计目的通过本课程设计巩固C语言程序设计课
课程设计目的:通过本课程设计巩固《C语言程序设计》课程教学成果,深入理解结构体、指针、链表、动态分配内存和文件操作等C程序设计中的中高级技术,熟练掌握C语言的调试方法,初步培养良好的编程习惯和编程风格,初步学习程序文档的撰写方法。
一、题目
1、实用的通讯录管理
2、单科课程成绩管理
3、多功能网址收藏管理
4、图书信息管理
二、调试环境
TurboC++3.0或者VC++6.0 所有同学必须提交实验报告电子版一份,内容包括: 1.课程设计说明书
2.源代码和注释、编译链接生成的目标文件、可执行文件(请将所有文件压缩成rar格式一并提交)
三、注意事项
(一)独立完成
任何人不得抄袭、拷贝。凡发现实验报告或源程序雷同,涉及的全部人员后果自负。
(二)一人一题
一人一题,要求独立完成,清考学生可以自选任意一题。
(二)课程设计说明书要求 课程设计说明书有以下内容:
题目一 实用的通讯录管理
题目简述
现代社会人们之间的交往越来越多,通信录的建立和管理显得尤为重要。本课题旨在建立一个通讯录系统,系统中保存着各人员的姓名、电话、Email以及与本人的关系(亲戚、同学、朋友、同事等)等信息,通过该系统的简单界面可以对通讯录进行新建、浏览、查找、更新、删除等操作。
具体要求
1、基本功能:(1)添加记录
先判断链表是否已经存在。若不存在,需首先自动新建一个链表,然后再添加一条或多条通讯记录。(2)显示记录 显示当前所有记录。(3)查询记录
按名字查找,并显示该记录。(4)通信录排序
按姓名的字母顺序排序,涉及到冒泡等排序算法。(5)删除记录
实现逐条删除和删除全部记录两种功能。(6)更新记录
修改已存在记录的信息(提示:需首先判断该记录是否存在)。(7)按关系显示记录
只显示与本人有指定关系(亲戚、朋友、同事、同学)的记录。(8)保存记录
存储所有记录到某个文件(.txt)或缺省文件(Phonebook.txt)。(9)读入记录
从某个文件(.txt)或缺省文件(Phonebook.txt)读入所有记录。首先判断当前是否有记录在进行操作,若有,进行存储或放弃存储,然后释放内存空间,之后才能从文件读入记录。(10)退出
结束通讯录软件操作,释放内存后退出。
2、数据录入提示(1)Name 联系人姓名。为了实现排序,可以输入英文或拼音的姓名,便于调用字符串比较等函数进行比较排序。(2)Tel 可以为固定电话号码或手机号。(3)Email 输入时要根据@判断一下是否是正确的email地址格式。Email地址首位不能是下划线’_’,斜杠‘’或‘/’,点号‘.’等(类似对输入数据的判断可作为扩展,不是必须实现的功能)。(4)Relation 可以为Relative, Friend, Workmate或Classmate中的一种,用于进行条件显示,即只显示与本人有某种关系的记录。
3、其他实现提示
对于每一项功能,应该对可能出现的异常操作进行处理,如提示重新输入或给出错误提示后成功返回主菜单界面,以免软件运行异常退出或挂起。
除了基本功能和异常处理,鼓励进行以下扩展或改进:
有创意的设计
采用改进程序性能的其他方法(如执行效率、访问速度、占内存量、灵活性、可移植性等) 友好的输入界面;
对输入数据的对错判断等; 功能扩展;
程序的简洁明了和可读性等。
主要数据结构
结构体Address: 包含Name, Tel, Email, Relation(与本人的关系)以及Address类型的指针(用于链表操作)等成员变量。
具体技术
1.指针、结构体的应用
2.单向链表的建立,插入,添加及删除等 3.文件的读写
4.简单算法:如排序算法等 测试要求
1、要求准备至少有10条记录的通信录文件(addrlist.txt),便于进行上机测试;
2、对空链表、没有记录或没有文件等情况进行处理的验证;文件操作是否正确的验证;对记录进行操作的相关测试等;
3、就某些功能实现情况及其实现细节进行现场解答。
4、编译环境可为Turbo C++ 3.0 或 VC++ 6.0。
题目二 单科课程成绩管理
2.1 题目背景
依照学校教务处的规定,各位每门课的成绩的给出要依据三方面的内容,平时成绩、期中成绩和期末成绩,期中和期末均为满分制,平时成绩则主要由平时作业组成,可能由4次到5次等,每次10分。这三项按照任课组老师指定的百分比计算总评分,例如可能总评分=平时成绩×20%+期中成绩×20%+期末成绩×60%。
现在我们希望大家给老师们做一个这样的单科课程成绩管理系统,要求能够实现上面所说的要求,具体的规范如下。2.2 程序功能
本程序利用单链表存储结构完成对学生成绩的动态管理,要求实现如下的基本功能。
2.2.1 菜单操作
在屏幕上显示菜单,通过输入0-X之间的数字调用相应的功能函数。2.2.2 创建链表
即输入学生成绩信息,按照提示信息输入学号、姓名、各个平时成绩、期中成绩和期末成绩。注意:申请内存空间,验证输入数据是否符合要求,设置输入结束标志。2.2.3 显示链表
显示当前链表中的所有记录。注意输出格式的直观。2.2.4 删除记录
删除指定学号的记录。注意删除记录要释放该记录占用的内存空间。2.2.5 查询记录
按姓名查找并显示该记录。(可扩展为按照姓名和学号两种方式查找)2.2.6 插入记录
插入记录需要输入插入位置和新记录信息。输入某个记录的学号,新结点将插入在这个指定记录之前。2.2.7 更新记录
修改已存在记录的分量信息。2.2.8 保存文件
将学生成绩信息保存到指定文件(wgrade.txt)中。2.2.9 读取记录
从指定的文件(rgrade.txt)中读入所有记录。2.2.10计算: 根据结点的平时成绩、期中成绩和期末成绩,来计算每个人的总评分和所有人的平均分(平时的成绩的次数可通过N的宏定义来进行,而每项所占的比例可以在计算的时候进行输入)2.2.11排序
根据总评分进行排序,由高到低的顺序排列 2.2.12统计:
统计各个分数段的人数,不及格的,60-69的等,并保存到文件total.txt中。2.2.13退出
结束软件操作,释放内存后退出。2.3 数据结构
将一个学生的信息当作一个结点,这个结点的类型为结构体,其中至少含有下列类型的信息:学号、姓名、平时成绩(可多次)、期中成绩、期末成绩、总评分、名次,以及指向后续结点的指针等。2.4 功能扩展
可扩展程序功能,例如可集中录入某次平时作业的成绩等。鼓励有创意和实用的扩展。
2.5 测试要求
1、要求准备分别至少有10条记录的课程成绩文件(score.txt),便于进行上机测试;
2、对空链表、没有记录或没有文件等情况进行处理的验证;文件操作是否正确的验证;对记录进行操作的相关测试等;
3、就某些功能实现情况及其实现细节进行现场解答。
4、编译环境可为Turbo C++ 3.0 或 VC++ 6.0。
题目三 多功能网址收藏管理
题目简述
信息社会我们离不开Internet,网址的保存和管理将变得十分必要。本课题旨在建立一个多功能网址管理系统,系统中保存着各网址的命名、网址、收藏日期以及类别(学习、体育、音乐、健康等)等信息,通过该系统的简单界面可以对通讯录进行新建、浏览、查找、更新、删除等操作。
具体要求
1、基本功能:(1)添加记录
先判断链表是否已经存在。若不存在,需首先自动新建一个链表,然后再添加一条或多条通讯记录。(2)显示记录 显示当前所有记录。(3)查询记录
按命名查找,并显示该记录。(4)网址的排序
按网址的字母顺序排序,涉及到冒泡等排序算法。(5)删除记录
实现逐条删除和删除全部记录两种功能。(6)更新记录
修改已存在记录的信息(提示:需首先判断该记录是否存在)。(7)按关系类别显示记录
只显示与网址有指定关系(学习、体育、音乐、健康)的记录。(8)保存记录
存储所有记录到某个文件(.txt)或缺省文件(favorite.txt)。(9)读入记录
从某个文件(.txt)或缺省文件(favorite.txt)读入所有记录。首先判断当前 7 是否有记录在进行操作,若有,进行存储或放弃存储,然后释放内存空间,之后才能从文件读入记录。(10)退出
结束通讯录软件操作,释放内存后退出。
2、数据录入提示(1)命名
自己对网址的命名。为了实现排序,可以输入英文或拼音的姓名,便于调用字符串比较等函数进行比较排序。(2)域名
可以为ftp或www。(3)收藏日期
输入时要判断一下是否是正确的日期格式。(类似对输入数据的判断可作为扩展,不是必须实现的功能)。(4)类别
可以为学习, 体育, 音乐或健康中的一种,用于进行条件显示,即只显示与网址有某种关系的记录。
3、其他实现提示
对于每一项功能,应该对可能出现的异常操作进行处理,如提示重新输入或给出错误提示后成功返回主菜单界面,以免软件运行异常退出或挂起。
除了基本功能和异常处理,鼓励进行以下扩展或改进:
有创意的设计
采用改进程序性能的其他方法(如执行效率、访问速度、占内存量、灵活性、可移植性等) 友好的输入界面;
对输入数据的对错判断等; 功能扩展;
程序的简洁明了和可读性等。
主要数据结构
结构体Address: 包含Name, Domain, Date, Sort(与网址的关系)以及Address类型的指针(用于链表操作)等成员变量。
具体技术
1.指针、结构体的应用
2.单向链表的建立,插入,添加及删除等 3.文件的读写
4.简单算法:如排序算法等 测试要求
1、要求准备至少有10条记录的通信录文件(favorite.txt),便于进行上机测试;
2、对空链表、没有记录或没有文件等情况进行处理的验证;文件操作是否正确的验证;对记录进行操作的相关测试等;
3、就某些功能实现情况及其实现细节进行现场解答。
4、编译环境可为Turbo C++ 3.0 或 VC++ 6.0。
题目四 图书管理系统
3.1 程序功能
3.1.1 必须实现的功能
图书信息录入功能,包括图书信息的插入、修改和删除。
借阅人员信息录入和修改功能,包括借阅人员信息的插入、修改和删除。 借书功能; 还书功能; 预约功能; 统计输出功能:
统计馆藏书籍总数、已借出图书总数、在馆书籍数等 统计过期书及其借阅者信息;
所有图书的列表输出、所有读者信息的列表输出功能。3.1.2扩展功能(加分) 借阅人违章罚款功能
图书的分类统计功能(如按出版社、中图分类号、出版年份分类等) 借阅权限设定,如:
对读者进行分类,设置不同的最大借阅数量; 有超期书籍禁止借阅等。 违章统计,如:
统计违章次数超过x次的所有读者
按违章次数对有违章情况的读者进行排序等。3.2 提示与实现要求 3.2.1基本数据信息
图书资料基本信息:图书编号、中图分类号、书名、作者、出版社、出版日期、ISBN、版次、定价等。
图书的扩展信息:借阅状态(空闲、借出和预约)、借阅人或预约人(借书证号),借阅时间。
读者的基本信息:借书证号、读者姓名、读者单位、读者类别(本科生、研究生、教师)
读者的扩展信息:已借图书的册数等。3.2.2 数据结构
用两个链表分别存储图书信息和读者信息,具体的链表结构由同学们自行设计,可以采用较简单的单链表,也可以采用较为复杂的链表结构,如对于图书,可以先建立中图分类号的链表,对于每种分类则可以再组织一个单独的链表;对于读者,则可以先建立读者单位链表,为每个单位建立一个单独的读者链表。注:中图分类号可以在网上搜到,为了简化设计,不要求同学们细化中图分类号,只考虑大类,如:TB 一般工业技术,TD 矿业工程,TE石油、天然气工业,TF 金工业,TG 金属学,TH 机械TJ 武器工业,TK 动力工业,TL 原子能技术,TM 电工技术,TN 无线电电子学、通信技术,TP 自动化技术、计算技术等。3.2.3 功能提示
1)、图书和读者信息的插入功能:参照在链表中插入一个节点的方法。2)、图书和读者信息的插入功能:参照在链表中插入一个节点的方法。3)、图书和读者信息的删除功能:参照链表的删除操作方法。4)、图书和读者信息的修改功能:在链表中寻找相应的记录并修改。
5)借书功能:图书状态由空闲变为借出,借书读者的借书册数等相关信息发生变化。(可选:有超期图书的读者不能借书,超过借阅权限数不能借书)。6)还书功能:图书状态发生变化,由借出状态变为空闲或预约状态。7)预约功能:图书借出时才能由其他读者使用预约功能,该图书归还后只有预约读者才能借出。
8)统计功能:“统计馆藏书籍总数、已借出图书总数、在馆书籍数、统计过期书及其借阅者信息”等功能都可以通过遍历整个链表的方式得到;所有图书的列表输出、所有读者信息的列表输出功能同样可以用遍历链表的方式得到,要求输出结果分别存在books.txt和reader.txt文件中。测试要求
1、要求准备分别至少有10条记录的图书信息文件(bookt.txt)和读者信息文件(reader.txt),便于进行上机测试;
2、对空链表、没有记录或没有文件等情况进行处理的验证;文件操作是否正确的验证;对记录进行操作的相关测试等;
3、就某些功能实现情况及其实现细节进行现场解答。
4、编译环境可为Turbo C++ 3.0 或 VC++ 6.0。
附录二: 编程规范
1、空行
每个函数定义结束之后都要加空行。
在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。
2、代码行
一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。
代码行最大长度宜控制在70至80个字符以内。
长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。
if、for、while、do等语句自占一行,执行语句(包括{})不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。
3、空格
关键字之后要留空格。
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格。
一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格。
4、对齐
程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
{ }之内的代码块在‘{’右边数格处左对齐。
5、注释
每个函数之前需要对该函数的功能和接口进行说明。
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。12 不再有用的注释要删除。注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。
6、标识符命名
标识符(包括变量名、函数名等)应与其实际含义有联系。程序中不要出现仅靠大小写区分的相似的标识符。尽量避免名字中出现数字编号,如Value1,Value2等。变量和参数用小写字母开头的单词组合而成。常量全用大写的字母,用下划线分割单词。
第二篇: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语言程序设计课程设计指导书
课程设计指导书
课程名称: 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语言程序设计教程课程设计》计划 类别:课程设计
适用于三年制专科计算机应用专业 学分: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语言程序设计基础课程设计报告
程序设计基础课程设计报告
课程名称: 课程设计题目: 程序设计基础课程设计 学生信息管理系统
姓
名:
系: 专
业: 年
级: 学
号: 指导教师: 职
称:
计算机科学技术系 计算机网络技术
讲师
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 五、总结 在课程设计的这段日子里,我真正体会到什么叫失败是成功之母,因为在编写程序时会出现这样或那样的错误,有的是语法错误,有的是逻辑错误,还有的是由于自己粗心漏掉或多加了一些符号等等,但只要你能静下心来慢慢寻找原因,慢慢修改,最后终能成功。但如果你在编程时格外细心,你将会减少许多麻烦,同时也会节省很多时间。