C语言程序设计实践任务书正式版.docx
- 文档编号:8279984
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:21
- 大小:43.90KB
C语言程序设计实践任务书正式版.docx
《C语言程序设计实践任务书正式版.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实践任务书正式版.docx(21页珍藏版)》请在冰豆网上搜索。
C语言程序设计实践任务书正式版
“C语言程序设计实践”任务书
信息科学与工程学院电气与自动化实验室
2012年5月
“C语言程序设计实践”任务书
一、指导老师安排
电气信息类1119班:
唐朝晖、李志民电气信息类1120班:
唐朝晖、李志民
电气信息类1124班:
叶华文、李志民电气信息类1125班:
叶华文、李志民
电气信息类1127班:
袁艳、李志民
二、课程设计要求
本次“C语言程序设计实践”课程设计,是基于“C语言程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。
本次课程设计时间为2周,要求每位同学在为期两周的时间段内,独立完成相关设计题所规定的任务(上机时数为20学时)。
进度安排建议如下:
1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设计(1天)。
2、在TurboC(或VisualC++6.0)环境下,用结构化程序设计思想进行C语言程序设计、功能模块调试(7-9天)。
3、进行课程设计报告编写与整理(2天)。
4、课程设计结束时,要求进行设计成果演示(由指导老师验收相关程序运行成果并打分);每人须对相关电子文档进行整理上交(包括:
程序文件、帮助说明文档);交课程设计报告(纸质)一份(手工书写稿)。
课程设计报告基本内容及格式参考P4页上内容。
三、结构化程序设计方法
结构化技术是软件工程中最成熟的技术之一,它包括结构化分析方法(StructuredAnalysis)、结构化设计方法(Structureddesign)和结构化程序设计方法( StructuredProgramming),简称为SA-SD-SP方法。
它的总的指导思想是自顶向下、逐步求精、单入口/单出口,基本原则是抽象和功能的分解。
对于较为复杂问题的大型程序开发,应采取“自顶向下、逐步细化和模块化”的设计方法,模块化程序设计是结构化程序设计方法在开发大型程序中的应用。
1、自顶向下、逐步细化、逐步求精
所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。
每个子任务如果仍很复杂,还可以再分解为若干个子任务。
如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
2、菜单技术
当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。
为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:
程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。
四、相关管理系统设计题的基本功能要求
1、数据文件管理功能:
创建新文件、管理老文件(包括:
Open、New…)。
2、输入/添加/插入记录:
能够完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。
3、显示、查询记录:
能够打开已存在的数据表文件,根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。
4、修改记录:
能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
5、删除记录:
能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。
6、统计功能:
能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:
总数、平均值、分段信息),例如:
按课程得分为100、90~99、80~89、70~79、60~69和不及格学生的人数,以及所占百分比。
7、排序:
对记录进行排序。
例如:
按某门课程的成绩排序,或按成绩总分进行排序等。
在正确、合理的软件功能规划的基础上,进行各功能模块的设计。
建议用文件包含或工程文件形式,进行逐个模块的功能调试与功能实现。
切忌将多个功能模块混合一起进行调试。
有关C语言程序设计参考,见附录1。
五、成绩评定要素
成绩分为优、良、中、及格、不及格五档,考核标准如下:
1、验收程序的可用性,实用性,通用性,可扩充性(程序设计源代码)(50%)
2、学生的动手能力,创新精神(10%)
3. 程序设计说明书(30%)
4. 平时成绩(10%)
六、课程设计报告基本内容要求
一、封面(封面格式见附录2)
二、目录
三、本次课题的基本内容和要求
四、软件设计整体规划及方案
五、程序功能简介
六、主体内容(简要说明总体情况,详细介绍本人任务部分):
1、设计分析
2、程序结构(画总体模块图、本人设计部分的程序N-S或ANSI流程图)
3、各模块的功能及程序说明
4、相关模块源程序
5、操作方法(流程)
6、试验结果(包括输入数据和输出结果)
7、设计体会
8、参考文献
八、设计题(共13题)
1-12题为信息管理类型题目,13题为控制类型题目。
每个题目有人数的限制,每位学生可以根据自己的情况独立选择一题作为设计任务,鼓励几个同学搭档分组,分工合作完成。
以下题目的基本功能要求仅供参考,建议同学根据实际应用状况及要求,进行合理规划。
选题1:
销售信息管理系统(建议2-3人)
调研、选择一个典型销售案例,实现按月进行销售员销售业绩信息管理。
其中,每个
销售员记录,包括编号,姓名,产品1销售额,产品2销售额,。
。
。
产品N销售额,总销售额等信息。
具体功能要求参见P3。
选题2:
职工工资信息管理系统:
(建议2-3人)
调研、选择一个典型职工信息管理案例,实现按月保存职工的工资数据。
其中,每位职工记录,包括编号、姓名、职务基本工资、岗位津贴、其他补贴、应发工资、实发工资;扣除项目包括:
所得税、住房公基金、养老金、医疗保险、失业保险、职务、基本工资、奖金,工资总额。
具体功能要求参见P3。
选题3:
图书信息管理系统:
(建议2-3人)
调研、选择一个典型图书信息管理案例,实现图书库存、借阅信息管理。
每本图书的记录信息包括:
书号、书名、作者,单价、库存数量、出版时间、出版单位、价格等。
具体功能要求参见P3。
选题4:
材料管理系统:
(建议2-3人)
调研、选择一个典型仓库材料信息管理案例,实现材料库存、领用信息信息管理。
每种材料的记录信息,包括:
编号、名称、单价、入库数量、库存数量、出库数量、保管人、进货时间、出货时间和备注等。
具体功能要求参见P3。
选题5:
学生成绩管理系统:
(建议2-3人)
调研、选择一个典型学生学籍(成绩)信息管理案例,实现以班为单位的学生成绩信息管理。
学生成绩的基本信息包括:
学号、姓名、五门以上课程成绩、成绩总分、平均成绩等。
具体功能要求参见P3。
选题6:
设备管理系统:
(建议2-3人)
调研、选择一个典型设备信息管理案例,实现各基层单位的设备资产信息管理。
每个设备的记录信息,包括设备编号(8位数)、仪器名称、型号规格、单价、购入日期、领用人、使用状况和备注(50字)。
具体功能要求参见P3。
选题7:
通信录(建议1-2人)
以班为单位进行通讯录信息管理。
每个记录包括:
序号、姓名、性别、年龄、电话,籍贯、现工作单位、家庭住址、通信地址及邮编等。
具体功能要求参见P3。
选题8:
人事信息管理系统(建议2-3人)
调研、选择一个典型人事基本信息管理案例,实现某基层单位的人事基本信息管理。
人事基本信息包括:
职工号(职工号不重复)、姓名、性别、年龄、学历、职称、基本工资、岗位津贴、工资总额、在岗状况等。
具体功能要求参见P3。
选题9:
人员基本信息管理系统(建议2-3人)
调研、选择一个典型人员基本信息管理案例(例如:
流动人口管理、小区楼栋居民管理等),实现分片或楼栋为数据库的人员基本信息管理。
信息包括:
序号,姓名,年龄,性别,出生年月,籍贯,电话,E-mail等。
具体功能要求参见P3。
选题10:
学生选修课程信息管理系统(建议2-3人)
调研、选择一个典型学生选课基本信息管理案例,实现对多门课程的选课信息管理。
每门课程的基本信息,包括:
课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。
具体功能要求参见P3。
选题11:
小学算术运算测试(建议1-2人)
实现不同年级程度的算术运算能力测试(加、差、乘、除)。
要求每套试卷共十题,能够
根据练习水平和进度随机产生数据和不同运算要求,并建议制答题时间。
能判断结果正确性,
给出综合评分(包括:
答题时间、正确率、总分、累记平均分等),并保存文件/打开文件。
选题12:
宿舍信息管理系统(建议2-3人)
调研、选择一个典型学生宿舍楼的住房基本信息管理案例,实现学生区各个宿舍楼的宿舍信息管理。
每个宿舍基本信息包括:
楼层号、房间号、面积、可住宿人数、实际住宿人数、修缮状况(良好/待维修)、备注(记录入住人员姓名、性别、年龄、单位等)。
具体功能要求参见P3。
选题13:
基于C语言的模拟电梯系统程序设计(建议每组5-6人)
根据“模拟电梯控制任务说明书”的规定,设计实现一个模拟电梯控制的仿真软件,方便进行相关控制策略验证和分析。
这一任务可由包含5-6名同学的小组集体完成。
通过该作业,希望同学们能够复习巩固结构化程序设计知识,培养良好的程序设计风格与习惯,了解软件开发的整个过程,学习书写简单文档,练习多人合作开发软件。
“设计任务说明书”详见附录3。
备注
电气与自动化专业实验室
2012年5月22日
附录1:
《C语言程序设计实践》课程设计
参考及指导
设计参考题目:
通信录管理系统
一、程序组织方法
在TurboC或VC++6.0中新建一个工程,再按下述方法创建各源程序文件。
1.将所有包含文件、符号常量定义、数据类型定义存放在头文件"task1a.h"中,此文件基本不用改动。
将所有函数声明存放在头文件"task1b.h"中,每当定义一个新的函数时,就在此文件中增加一行此函数的声明,并在注释中标明定义此函数的文件。
这样在每个源程序文件开头只需有2条包含命令:
#include"task1a.h"
#include"task1b.h"
2.将main()函数单独存放在一个源程序文件"task1000.c"中。
3.将main()函数主菜单中直接调用的函数的定义存放在源程序文件"task1100.c"、"task1200.c"、"task1300.c"、…中。
4.将一些公用的函数的定义存放在源程序文件"task1900.c"中。
5.将"task1100.c"中调用的函数的定义存放在源程序文件"task1110.c"、"task1120.c"、"task1130.c"、…中。
将"task1120.c"中调用的函数的定义存放在源程序文件"task1121.c"、"task1122.c"、"task1123.c"、…中。
6.每增加一个模块,调通测试后,将所有源文件复制到一个文件夹保存。
文件夹命名的规则和顺序可如下:
v0.00,v0.01,v0.02,v0.03,…全部完成后最终保存所有源文件的文件夹命名为v1.00。
初始版本v0.00由老师提供。
二、部分参考程序
1.头文件"task1a.h"的格式和内容:
/*prj1:
headfile"prj1a.h"*/
#ifndefPRJ1A_SOFTW05/*Startofheadfile"prj1a.h"*/
#definePRJ1A_SOFTW05
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
#defineNODEstructcomm_info/*定义结点类型*/
#defineLENsizeof(structcomm_info)/*定义结点长度*/
#defineTRUE1/*符号常量定义*/
#defineFALSE0/*符号常量定义*/
#defineMAXLINE1000/*符号常量定义*/
#defineLIMIT100000/*符号常量定义*/
/*全局变量的定义在prj1030.c文件中*/
externlongcount;/*全局变量声明*/
externNODE*head;/*全局变量声明*/
externNODE*tail;/*全局变量声明*/
externNODE*np[LIMIT];/*全局变量声明*/
structcomm_info{/*定义通信信息结构体类型*/
longnum;/*编号*/
chargroup[16];/*分组*/
charname[16];/*姓名*/
charhphone[16];/*固话home_phone*/
charmphone[16];/*手机号mobile_phone*/
charqq[16];/*QQ号码*/
charemail[20];/*e-mail地址*/
charcode[10];/*邮政编码*/
intlen;/*家庭住址或通信地址长度*/
char*addr;/*家庭住址或通信地址*/
structcomm_info*prev;/*前向链表指针*/
structcomm_info*next;/*后向链表指针*/
};
#endif/*Endofheadfile"prj1a.h"
*/
2.头文件"task1b.h"的格式和部分内容(可添加更多函数声明):
/*prj1:
headfile"prj1b.h"
containsonlyfunctiondeclarations*/
#ifndefPRJ1B_SOFTW05/*Startofheadfile"prj1b.h"*/
#definePRJ1B_SOFTW05
/*所有自定义函数都应在下面加以声明:
*/
voidshow_version(void);/*在prj1010.cpp文件中定义*/
voidlogin(void);/*在prj1020.cpp文件中定义*/
voidset_list(void);/*在prj1030.cpp文件中定义*/
voiddisplay(void);/*在prj1100.cpp文件中定义*/
voidadd_record(void);/*在prj1200.cpp文件中定义*/
voiddel_record(void);/*在prj1300.cpp文件中定义*/
voidfind(void);/*在prj1400.cpp文件中定义*/
voidmodify(void);/*在prj1500.cpp文件中定义*/
voidsort(void);/*在prj1600.cpp文件中定义*/
voidhelp(void);/*在prj1700.cpp文件中定义*/
voidwarn_exit(void);/*在prj1700.cpp文件中定义*/
voidsave(void);/*在prj1800.cpp文件中定义*/
intmenu(void);/*在prj1001.cpp文件中定义*/
voidnew_data(void);/*在prj1031.cpp文件中定义*/
voidold_data(void);/*在prj1032.cpp文件中定义*/
voidptrcopy(void);/*在prj1033.cpp文件中定义*/
intexist(longnum);/*在prj1034.cpp文件中定义*/
voidins_node(NODE*p);/*在prj1035.cpp文件中定义*/
voidpause(void);/*在prj1900.cpp文件中定义*/
voidclrscr(void);/*在prj1900.cpp文件中定义*/
intYesOrNo(void);/*在prj1900.cpp文件中定义*/
voidnewline(intn);/*在prj1900.cpp文件中定义*/
#endif/*Endofheadfile"prj1b.h"*/
3.源程序文件"task1000.c"的内容:
/*prj1:
sourcefile"prj1000.cpp"
containsmain()
*/
#include"prj1a.h"
#include"prj1b.h"
/*
通信录管理系统主函数。
*/
main(intargc,char*argv[])
{
intoption;
show_version();
login();
set_list();
if(argc==1)
option=menu();
elseif(argc==2&&(*++argv)[0]=='-')
switch(*++argv[0]){
case'd':
option=1;break;
case'a':
option=2;break;
case'r':
option=3;break;
case'f':
option=4;break;
case'm':
option=5;break;
case's':
option=6;break;
case'h':
option=7;break;
case'x':
option=8;break;
case'q':
option=0;break;
default:
help();
option=menu();break;
}
else{
help();
option=menu();
}
while
(1){
switch(option){
case1:
display();
break;
case2:
add_record();
break;
case3:
del_record();
break;
case4:
find();
break;
case5:
modify();
break;
case6:
sort();
break;
case7:
help();
break;
case8:
save();
break;
case0:
warn_exit();
}
option=menu();
}
return0;
}
4.源程序文件"task1900.c"的内容:
/*prj1:
sourcefile"task1900.cpp"
containsfunctionsincommonuse
*/
#include"prj1a.h"
#include"prj1b.h"
/*waiting*/
voidpause(void)
{
printf("\nPressanykeytocontinue");
getch();
}
/*clearscreen*/
voidclrscr(void)
{
system("cls");
}
/*Getaresponse:
return0forNo,1forYes*/
intYesOrNo(void)
{
charr;
do{
r=getch();
}while(r!
='Y'&&r!
='y'&&r!
='N'&&r!
='n');
if(r=='Y'||r=='y')
return1;
else
return0;
}
5.源程序文件"task1100.c"的初始内容(为学生提供的初始模板):
/*prj1:
sourcefile"prj1100.cpp"
containsdisplay()
*/
#include"prj1a.h"
#include"prj1b.h"
/*
displayrecordsinthelist.
*/
voiddisplay(void)
{
clrscr();
/*
Addrealfunctionshere
学生在此填入适当内容,从而实现函数的正常功能。
*/
printf("\nIamdisplay()\n");/*willbedeleted*/
pause();
}
三、main函数流程图(程序框架)
结束
附录3:
模拟电梯控制设计任务说明书
根据下面的功能描述,编程、调试模拟电梯控制软件。
一、电梯配置
★共有1个电梯
★共有maxfloor层楼层,这里maxfloor暂时取做9。
范围是5-9层
★中间层每层有上下两个按钮,最下层只有上行按钮,最上层只有上行按钮。
每层都有相应的指示灯,灯亮表示该按钮已经被按下,如果该层的上行或者下行请求已经被响应,则指示灯灭
★电梯内共有maxfloor个目标按钮,表示有乘客在该层下电梯。
有指示灯指示按钮是否被按下。
乘客按按钮导致按钮指示灯亮,如果电梯已经在该层停靠则该按钮指示灯灭
★另有一启动按钮(GO)。
当电梯停在某一楼层后,接受到GO信息就继续运行。
如果得不到GO信息,等待一段时间也自动继续运行。
★电梯内设有方向指示灯表示当前电梯运行方向。
二、电梯的运行控制要求
★电梯的初始状态是电梯位于第一层处,所有按钮都没有按下。
★乘客可以在任意时刻按任何一个目标钮和呼叫钮。
呼叫和目标对应的楼层可能不是电梯当前运行方向可达的楼层。
★如果电梯正在向I层驶来,并且位于I层与相邻层(向上运行时是I-1层或者向下运行时是I+1层)之间,则因为安全考虑不响应此时出现的I层目标或者请求。
如果电梯正好经过了I楼层,运行在I楼层和下一楼层之间,则为了直接响应此时出现的I层目标或者请求,必须至少到达运行方向上的下一楼层然后才能掉头到达I楼层(假设掉头无须其它额外时间),如果I楼层不是刚刚经过的楼层则可以在任意位置掉头,此时掉头后经过的第一个楼层不可停。
★电梯系统依照某种预先定义好的策略对随机出现的呼叫和目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实践 任务书 正式版