




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2014级本科C语言程序设计综合实训任务书-指导书编制部门:计算机系 编制人:申时全 编制日期:2014年12月6日项目编号C09项目名称综合应用实训训练对象14软件工程本科(3)(4)学时48课程名称C语言程序设计教 材C语言程序设计项目化教程刘军 主编 实训目标1、掌握选择结构、循环结构程序设计方法;2、掌握一维数组、二维数组应用程序设计方法3、掌握结构体、链表应用。完成一个链表应用程序设计和调试。4、掌握用函数进行模块化程序设计。5、掌握文件读写(二进制格式或文本格式化文件)操作。主要监测点1、基本实训任务:共7个项目。2、扩展实训任务:包括3个题目,从给定内容至少选做1题。实施条件个人计算机, Windows XP或windows7, 安装VC6.0编译开发环境实训内容一、 基本内容:1、 用结构体表示日期,输入一个日期(年、月、日),计算从输入年的1月1日到输入的日期的总天数days并输出。2、 从键盘输入n(2),计算斐波那契数列的前n项并按每行10个数据输出。3、 编写程序,生成并输出杨辉三角形(10行)。4、 从键盘输入两个double类型数据啊,a,b,通过调用函数max_ab实现求a与b的最大值输出,并定义函数max_ab。5、 编写程序从键盘输入10个float类型数存入一维数组a中,求这10个数的平均值,然后用函数aver实现平均值计算,输出这10个数以及平均值,要求数组和元素个数作为参数传递。6、 编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出。要求用函数sort()进行排序,用函数input()输入数据,用函数output()输出数据。7、 基于数组存储和函数的一卡通系统设计与实现。8、 基于结构体和文件存储的一卡通系统设计与实现。二、 扩展实训内容(可任选1道完成):1、 基于链表的一卡通系统程序设计。2、 五子棋游戏程序3、 打印日历程序实施步骤与技术要点. 一、基本内容: 1、用结构体表示日期,输入一个日期(年、月、日),计算从输入年的1月1日到输入的日期的总天数days并输出。技术要点:(1) 用结构体存储输入日期,定义结构体和日期变量如下:typedef struct date int yeay; int month; int day;DATE;DATE date;(2) scanf( )函数输入年号date.year,月号date.month,日期date.day,输入语句如下:scanf(%d%d%d,&date.year,&date.month,&date.day);(3) 用下述条件确定是否闰年: year % 4=0 & year %100 !=0 | year % 400=0 由此确定2月份天数days是28天还是29天。(4) 用一维数组m_day12存每月天数:int m_day12=31,28,31,30,31,30,31,31,30,31,30,31;(5) 用for循环计算到输入月份上月底的天数 for (mm=1,days=0;mm2) if (date.year % 400=0 |date.year%4=0 &date%100 !=0) days+; 实施步骤:(1) 运行VC6.0或Visual studio 2012集成环境(2) 建立一个控制台应用项目projection1,建立源文件date.c(3) 根据前述要点编写和输入程序(4) 调试和运行程序,保存结果截图。2、从键盘输入n(2),计算斐波那契数列的前n项并按每行10个数据输出。技术要点:(1) 用变量fib0表示当前计算项的前2项,fib1表示前1项,初始fib0=1,fib=1,用迭代法计算当前项: fib=fib0+fib1; fib0=fib1; fib1=fib;(2) 用for循环输出从第3项开始的项。 实施步骤:(1)运行VC6.0或Visual studio 2012集成环境(2)建立一个控制台应用项目projection2,建立源文件fibo.c(3)根据前述要点编写和输入程序(3) 调试和运行程序,保存结果截图3、 编写程序,生成并输出杨辉三角形(10行)。 技术要点:(1) 用一维数组yh存储一行数据,生成一行就打印一行。(2) 通过已输出的行计算当前要输出的行,计算从行号开始向0移动 for(col=row;col0;col-) yhcol=yhcol+yhcol-1;(3) 核心代码 int yhN=1; for(row=0;row0;col-) yhcol=yhcol+yhcol-1; for(col=0;coly?x:y条件表达式求两个数最大值并返回。double max_ab(double x,double y)return xy?x:y; 实施步骤:(1)运行VC6.0或Visual studio 2012集成环境(2)建立一个控制台应用项目projection4,建立源文件以后maxab.c(3)根据前述要点编写和输入程序(5) 调试和运行程序,保存结果截图5、编写程序从键盘输入10个float类型数存入一维数组a中,求这10个数的平均值,然后用函数aver实现平均值计算,输出这10个数以及平均值,要求数组和元素个数作为参数传递。技术要点:(1) 定义一维数组aN,这里N定义为10(2) 声明函数avar:float aver(float a, int n);(3) 主函数输入10个数据,用for循环语句输入: for (i=0;i=0) dispone(cnum,pname,cmoney,cbalance,k); /显示卡信息 pflagk=1; printf(t销卡成功!n);else printf(t查无此卡或为无效卡,销卡失败!n);l 卡信息修改模块定义/* * 卡信息修改模块:本模块修改卡信息,分为修改姓名、修改卡充值、修改余额 * * 修改前先输入卡号,并查找卡位置,若卡号正确有效则进入修改信息菜单选择 * * 修改,若查找失败,显示“无此卡号” * */void modify(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num) /在下面加上此功能代码 l 消费模块定义void readcard(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num) /在下面加上此功能代码l 充值模块定义void savemoney(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num)/在下面加上此功能代码l 查询卡信息模块定义void inquiry(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num)l 退出模块定义int exitout( )for(; ; ) char ch; printf(确定要退出吗?(Y/N);fflush(stdin); ch=getchar();if (ch=Y | ch=y | ch=N | ch=n) break; if (ch =Y | ch=y) return 7; /返回系统循环结束标志return 0; /返回0,表示不退出系统 l 查找卡函数定义/* 查找卡模块:该函数供有关模块调用,返回给定卡号的存储位置。* 参数:待查卡号cardnumbe,卡号数组cnum,卡有效标志数组pflag * */int findcard( int cardnumber,int *cnum,int *pflag,int num) l 显示给定位置卡信息模块定义/* 显示给定位置卡信息模块函数 */void dispone(int * cnum,char *pname,float *cmoney,float *cbalance,int index) l 显示初始欢迎界面模块定义void disp_init( ) l 显示菜单并输入功能选择模块定义int select_menu( ) 实施步骤:(1) 运行VC6.0或Visual studio 2012(2) 新建控制台应用项目projection7,新建源程序文件yktsys.c(3) 编写并输入一个用于模块调试的主函数#include #include #include #define MAXNUM 100void disp_init();int select_menu();void addnew(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num);int main(int args,char *argv) char *nameMAXNUM; /持卡人姓名 float cmoneyMAXNUM=0; /存储每个卡的每次充值金额 float cbalanceMAXNUM=0; /存储每张卡余额 int cnumMAXNUM; /存储每个卡的卡号,从1号开始编号 int flagMAXNUM=0; /存储每张卡有效条件的值,0-有效,1-无效 int num=0; /当前卡数 char choose; disp_init();choose=select_menu(); /调用模块的语句,若调用非建新卡,则要给些初始数据 /调试建新卡功能 addnew(cnum,flag,name,cmoney,cbalance,&num);(4) 新建源程文件pubfun.c,将公用函数dispone()和findcard()部分代码输入此文件,需要增加头文件。#include #include #include void disp_init( ) system(CLS); printf(tn); printf(t n ); printf(t 欢迎使用校园一卡通系统V1.1版 n ); printf(t n ); printf(t n ); printf(t n ); printf(t n ); printf(t n ); printf(t n ); printf(t n ); printf(t 由广东科技学院计算机系XXX开发 n ); printf(t n ); printf(t 2014年10月11日 版权所有 n ); printf(t n ); printf(tn); getch(); /等按任意键继续 /显示菜单并输入功能选择模块定义int select_menu( ) int choose; system(CLS); printf(tn); printf(t n); printf(t GK-I校园一卡通系统 n); printf(t n); printf(tn); printf(t n); printf(t 1.开 新 卡 n); printf(t n); printf(t 2 .销 卡 n); printf(t n); printf(t 3. 卡信息修改 n); printf(t n); printf(t 4.卡 消 费 n); printf(t n); printf(t 5.卡 充 值 n); printf(t n); printf(t 6. 卡信息查询 n); printf(t n); printf(t 7.退 出 系 统 n); printf(t n); printf(tn); while(printf(tt请输入功能选择(1-7):),scanf(%d,&choose), choose7) printf(tt输入错误,请重新输入!n); return choose;/* 显示给定位置卡信息模块函数 */void dispone(int * cnum,char *pname,float *cmoney,float *cbalance,int index) printf(t+=+n); printf(t| 卡号 | 姓名 | 充值金额 | 余 额 |n); printf(t+-+-+-+-|n); printf(t| %4d |%-10s| %8.2f | %8.2f |n, cnumindex,pnameindex,cmoneyindex,cbalanceindex); printf(t+=+n);/* 查找卡模块:该函数供有关模块调用,返回给定卡号的存储位置。* 参数:待查卡号cardnumbe,卡号数组cnum,卡有效标志数组pflag * */int findcard( int cardnumber,int *cnum,int *pflag,int num) int i; for (i=0;inum;i+) if (cnumi=cardnumber & pflagi =0) return i; /返回卡存储位置 return -1; /若查找失败返回-1(5) 分模块调试各模块,没个模块可建一个文件,并将此文件纳入项目中,例如调试addnew模,建立源程序文件 addnew.c,输入该模块程序,用上述调试用主函数调用进行调试。需要在前面加上需要的头文件和函数声明。#include #include #include void dispone(int * cnum,char *pname,float *cmoney,float *cbalance,int index);/* 新建卡模块:通过参数传递卡信息数组和卡数num * 本功能模块间建立一个卡,如果有可用卡就是用该卡号,否则 * 将产生一个新的卡号,并申请一个卡主姓名空间,输入卡信息 */void addnew(int * cnum,int *pflag,char *pname,float *cmoney,float *cbalance,int *num) int i,cardnumber; float charge,balance; for (i=0;i*num;i+) if (pflagi=1) break; /找到一个未使用卡,退出循环 if (i=*num) pnamei=(char *)malloc(20); /为新卡的姓名动态申请20字节空间 i=*num; *num+; /卡数加1 cardnumber=i; /获取卡号位置printf(请输入持卡人姓名:);fflush(stdin); gets(pnamecardnumber); printf(nt请输入要充值到卡内的金额:); scanf(%f,&charge); cnumcardnumber=cardnumber+1; /卡号是卡存储位置加1 cmoneycardnumber=charge; /存储卡的充值金额 cbalancecardnumber=charge; /存储卡的余额,是充值额 pflagcardnumber=0; dispone(cnum,pname,cmoney,cbalance,cardnumber); /显示卡信息 printf(开卡成功!n);getch();(6) 将所有经调试的模块组装为一个系统。完整主函数文件: #include #include #include #define MAXNUM 100int main(int args,char *argv)int cnumMAXNUM; /存储每个卡的卡号,从1号开始编号 int flagMAXNUM=0; /存储每张卡有效条件的值,0-有效,1-无效 char *nameMAXNUM; /持卡人姓名 float cmoneyMAXNUM=0; /存储每个卡的每次充值金额 float cbalanceMAXNUM=0; /存储每张卡余额 int num=0; /当前卡数 int choose; /功能选择 disp_init(); /显示系统初始欢迎界面 while (choose !=7) choose=select_menu( ); /显示菜单并输入功能选择 switch(choose) case 1: addnew(cnum,flag,name,cmoney,cbalance,&num); break; /新建卡功能 case 2: logout(cnum,flag,name,cmoney,cbalance,&num); break; /注销卡功能 case 3: modify(cnum,flag,name,cmoney,cbalance,&num); break; /卡信息修改功能 case 4: readcard(cnum,flag,name,cmoney,cbalance,&num); break; /消费功能 case 5: savemoney(cnum,flag,name,cmoney,cbalance,&num );break;/充值功能 case 6: inquiry(cnum,flag,name,cmoney,cbalance,&num); break; /卡信息查询功能 case 7: choose=exitout( ); break; /退出功能 default: printf(功能选择输入错误!n); system(pause); return 0;(7)运行系统执行各功能,保存各功能运行结果截屏。 (8)编辑实训报告。 8、基于结构体数组和文件存储结构的一卡通系统设计与实现。 技术要点:本项目可在项目7基础上修改实现,主要技术要点:(1) 定义结构体类型 typedef struct int cnum; char name20; float cmoney; /存储卡的每次充值金额 float cbalance; /存储卡余额 int flag; /存储卡有效条件的值,0-有效,1-无效CARD;(2) 定义卡信息数组,用结构体数组实现,在主函数内定义,各模块调用时通过参数传递。CARD cardMAXNUM;(3) 给出功能模块定义: void disp_init(); /显示初始画面模块 int select_menu( ); /显示菜单并输入功能选择void addnew(CARD *card,int *); /建新卡模块void logout(CARD *card,int ); /注销模块void modify(CARD *card,int); /卡信息修改模块void readcard(CARD *card,int); /消费模块void savemoney(CARD *card,int ); /充值模块void inquiry(CARD *card,int ); /查询卡信息模块int exitout( ); /退出模块int findcard(CARD *card,int num,int cardnumber); /查询卡号void displayone (CARD *card,int); /显示卡信息(4)写出主函数程序结构,写出主函数结构如下:int main( ) CARD cardMAXNUM; int choose=0; int num=0; num= readfile(card); /从卡信息文件读取卡信息到数组card disp_init( ); /显示系统初始欢迎界面 while (choose !=7) choose=select_menu( ); /显示菜单并输入功能选择 switch(choose) case 1: addnew(card,&num); break; /新建卡功能 case 2: logout(card,num); break; /注销卡功能 case 3: modify(card,num ); break; /卡信息修改功能 case 4: readcard( card,num); break; /消费功能 case 5: savemoney( card,num );break; /充值功能 case 6: inquiry(card,num ); break; /卡信息查询功能 cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学科学教育专业题库- 科学教育的综合实践教学
- 2025年大学科学教育专业题库- 科学教育的实施与评价
- 2025年资产评估师职业资格考试真题模拟卷:资产评估行业政策动态与案例分析试题
- 2025年健身教练健身教练运动生理学知识与实践试题
- 2025年大学人文教育专业题库- 大学人文教育的价值认同和实践探索
- 2025年大学国内安全保卫专业题库- 国内安全保卫专业学科特色
- 2025年大学科学教育专业题库- 科学教育素质评价与反馈
- 2025年乡村医生农村急救技能操作及常见疾病处理试题
- 2025年大学工会学专业题库- 工会与劳动力供应链管理
- 2025年医保知识考试题库:信息化建设应用案例分析试题型
- 中通规章管理制度
- 茶山管理协议书
- 代办土地证协议书
- 创意美术课程教学大纲
- 2025年生物性污染对人体健康的危害与生物安全防控措施
- 现代文献检索与利用3-文献检索技术
- GB/T 45542-2025工业锅炉综合能效评价技术规范
- DB11 396-2006 地理标志产品 平谷大桃
- 2025年小学数学新教材培训
- 2025胃癌诊疗规范
- 2025届江苏省苏锡常镇四市高三下学期教学情况调(一)(一模)英语+答案
评论
0/150
提交评论