厦门理工学院C语言课程设计报告_第1页
厦门理工学院C语言课程设计报告_第2页
厦门理工学院C语言课程设计报告_第3页
厦门理工学院C语言课程设计报告_第4页
厦门理工学院C语言课程设计报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计课程设计报告(2012 2013学年 第 2 学期)专 业: 班 级: 姓名学号: 指导教师: 成 绩: 计算机科学与技术系2013年6月27日目 录一. 课程设计的目的与要求(含设计指标)31.实验目的32.设计要求33.课程设计报告(按C语言程序设计课程设计报告格式要求完成)34.检查标准4二. 方案实现与调试42.1 题目:掷骰子游戏:42.1.1算法描述及实验步骤42.1.2调试过程及实验结果62.2题目:计算存款本息之和:72.2.1算法描述及实验步骤72.2.2调试过程及实验结果82.3题目:肇事逃逸:92.3.1算法描述及实验步骤92.3.2调试过程及实验结果112

2、.4题目:汽车加油:112.4.1算法描述及实验步骤112.4.2调试过程及实验结果132.5题目:大优惠:132.5.1算法描述及实验步骤142.5.2调试过程及实验结果152.6题目:金币:152.6.1算法描述及实验步骤162.6.2调试过程及实验结果162.7提高题:毕业设计论文管理系统设计:172.7.1算法描述及实验步骤182.7.2调试过程及实验结果21三课程设计分析与总结22四. 源程序清单22掷骰子游戏:22计算存款本息之和24肇事逃逸25汽车加油26大优惠28金币29提高题:毕业设计论文管理系统设计29五. 设计日志与教师评价38(报告正文部分的格式):(要求:正文部分一律

3、用五号字,宋体,单倍行距。一级大标题靠左,四号,宋体,加粗。二级大标题靠左,小四,宋体,不加粗。)课程设计的内容如下:一. 课程设计的目的与要求(含设计指标)1.实验目的C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该C语言程序设计任务书,以在实训过程中给学生提供帮助。达到如下目的:1 在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2 让学生

4、扎实掌握C程序设计语言的相关知识;3 通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。2.设计要求根据实验内容的要求自由选定题目。编写程序要求遵循如下基本要求:l 模块化程序设计l 锯齿型书写格式l 必须上机调试通过3.课程设计报告(按C语言程序设计课程设计报告格式要求完成)1、设计目的2、总体设计(程序设计组成框图、流程图)3、详细设计、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。5、源程序清单和执行结果:源

5、程序中应有足够的注释。4.检查标准1、学生必须编写可运行的程序,对教师的提问能熟练地当面解释清楚,回答的问题和程序运行的结果作为评分的主要衡量标准;(课程设计当周的周三开始逐一检查)2、按照本文后要求须提交电子内容的清单提交相关内容。二. 方案实现与调试2.1 题目:掷骰子游戏:两人玩骰子,游戏规则如下:1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显

6、示双方分数并判定优胜者。2.1.1算法描述及实验步骤开始随机数输入num1,num2num1=num2?num1=num2=6?num1num2?sum1+=8sum1+=7sum1+=num2sum1+=sum1输出得分sum1结束是是是否否否开始随机数输入num3,num4num3=num4?num3=num4=6?num3num4?sum2+=8sum2+=7sum2+=num4sum2+=sum3输出得分sum2结束否否否是是是2.1.2调试过程及实验结果问题:需要手动输入骰子点数解决方法:引入#include 头文件,使用srand( (unsigned)time( NULL ) )

7、; num1=rand()%6+1;来实现随机数执行结果:2.2题目:计算存款本息之和: 以“存款利率”为关键字上网搜索目前我国整存整取不同期限我国的银行存款利率,只计算一年、三年和五年三种期限。 问题: 1) 要求输入存钱的本金和期限,求到期能从银行得到的利息与本金合计。 2)假设存款期限为三十年本金为10万,比较一年、三年和五年滚存三十年后的本息金额。2.2.1算法描述及实验步骤开始输入money,输入yearyear=1?money=money*1.0300money=money*1.04253money=money*1.04755year=3?输出money结束是是否2.2.2调试过程

8、及实验结果问题:滚利问题解决方法:上网查询后,了解每一个期限才能滚利一次。执行结果:2.3题目:肇事逃逸: 某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提供信息如下:1) 车牌号后两位相同; 2) 车牌号前两位相同; 3) 车牌号是一个整数的平方。请编程查出肇事逃逸车辆的车牌号。2.3.1算法描述及实验步骤开始输入i=34sumsum=i*inum/1000=num%1000/100&num%1000%100/10=num%1000%100%10?输出numi+i=100?结束否是否是2.3.2调试过程及实验结果问题:无。解决方法:无。运行结果:2.4题目:汽车加

9、油:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。输入:第一行有2 个正整数N和K(1 = N = 100,1 = KN?No Solution是j=0i=0否iN?j=j+1s=aii=i+1是否输出最少加油次数j结束2.4.2调试过程及实验结果问题:无。解决方法:无运行结果:2.5题目:大优惠:中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?输入的测试数据为一行,实例包括2个整数M, K(2 = K = M = 1000)。输出

10、一个整数,表示M元可以用的天数。2.5.1算法描述及实验步骤开始输入m,k2=k=m=0num=i2day=day-1i=i+1是num=num+day*(i-1)输入day结束2.6.2调试过程及实验结果遇到问题:无。解决方法:无。运行结果:2.7提高题:毕业设计论文管理系统设计:功能:实现我学院的学生毕业设计论文管理,论文的基本信息包括:年级、专业、班级、学生学号、学生姓名、论文题目、指导老师姓名、提交日期、论文简介(50字内)等。 基本要求: 1设计简单的菜单,能够进行系统功能选择。 2实现信息的录入功能。 3在已有信息的基础上添加新的记录。 4删除指定学号的记录。 5修改指定学号的记录

11、 6实现信息的浏览功能 7按学号查询功能 8按学生姓名查询9 按班级查询功能10 其他功能:根据题目,自行设计若干查询统计功能;2.7.1算法描述及实验步骤开始显示提示进入菜单录入显示增加查询修改删除退出学号姓名班级结束功能描述:录入功能:进入录入功能,首先进入输入学生人数输入窗口,输入人数后进入论文信息录入,输入完毕后按回车,如图(1)所示。图(1)增加:在原有的记录上添加学生论文信息,录入步骤与录入功能一致,但不会覆盖原有的信息。显示:,显示出目前所录入的所有学生的论文信息,如图(2)所示图(2)查询:A. 通过输入学号查找学生论文信息,显示结果如图(3)所示图(3)B. 通过输入学生姓名

12、查找相应学生的论文信息,步骤与A一致C. 通过输入班级来查找学生的论文信息,步骤与A一致修改:输入要修改学生的序号即可进入修改,如图(4)图(4)删除:输入要删除的学生的序号即可删除该同学的论文信息,如图(5),然后按y确认,按n取消。图(5)退出:退出程序。2.7.2调试过程及实验结果出现问题:在子模块删除中的确认输入y/n中,无法自动转换为小写字母。解决:使用toupper(getch()=Y转换运行结果:三课程设计分析与总结二十六个字母,十个阿拉伯数字,外加一些常用字符,简单得掉渣,地球人都懂,可一组合成C语言,强大而神秘,那些字符如毛毛虫般在屏幕上蠕动,还看着,老眼便昏花,恨不得拿出杀

13、虫剂,几下狂喷,看你行还是我强。只不过,这不是毛毛虫的一生,化蛹成蝶才是毛毛虫一生追求,生命最美丽的时刻。当程序运行出正确答案,当程序可以实现论文系统的时候,字符不在是字符,字符已经脱text成exe了。刚上机的第一天,恍若又回到了刚接触到C语言的时候,除了int除了char,其他基本是它认识我,我不认识它,甚至连头文#include都忘了怎么写,还要翻书才能忆起。五天的C语言课程设计,把已经遗忘百分之九十以上的基本操作又重新熟悉了一遍,上手很快,毕竟有学过,基础要求六题的训练把除了指针外的之前所教过的编程重新要回来了。提高题是瓶颈,看了课本,真正要做出来不劲要把薄弱的指针重新学习一遍,还得学

14、习新的知识,链表,文件等的课本剩余的章节。看了一会儿书,发现光靠看书,凭我的本事,看完余下的书是很容易,关键是要在这么短的时间内把这些内容理解并灵活运用,那是根本完成不了的任务。很显然,时间已经来不及了。果断放弃,用结构体,函数拼凑成相对较简单的方法来实现毕业论文系统的设计。一步一步来,竟发现自己敲了到目前为止最长的代码:三百多行的代码。敲的过程,每一步都小心翼翼的,有时候为了找一个bug,要花上好些时候,熬得自己头发都快变白了,但当解决了bug之后,那种说不出的愉快在心头涌起。总之,这次课程设计学到了两点:一是把C语言简单的编程在学一遍;二是,指针、链表等的章节必须课后要花时间再学,因为下个

15、学期还有数据结构。四. 源程序清单掷骰子游戏:#include#include#include /使用当前时钟做种子void main()int i;int num1,num2,num3,num4,sum1=0,sum2=0; srand( (unsigned)time( NULL ) ); for(i=1;inum2)sum1+=num2;else sum1+=num1;num3=rand()%6+1;num4=rand()%6+1;if(num3=num4)if(num3=6&num4=6)sum2+=8; else sum2+=7;elseif(num3num4)sum2+=num4;e

16、lse sum2+=num3;printf(A第%d次掷出点数为:%d %d A总得分:%dnB第%d次掷出点数为:%d %d B总得分:%dn,i,num1,num2,sum1,i,num3,num4,sum2);if(i=5&(float)(sum1-sum2)/sum2=0.3|(float)(sum2-sum1)/sum1=0.3)break;if(sum1sum2)printf(A获胜!n);else if(sum1sum2)printf(B获胜!n);elseprintf(平局!n);计算存款本息之和#include#includevoid main()int i,year,all

17、,j;float money;printf(请输入存款金额:);scanf(%f,&money); printf(请输入存款期限:);scanf(%d,&year);printf(请输入要存款的年限:);scanf(%d,&all);switch(year)case 1:money=money*1.0300;printf(%d年后本息金额为:%fn,year,money);break;case 3:money=money*pow(1.0425,3);printf(%d年后本息金额为:%fn,year,money);break;case 5:money=money*pow(1.0475,5);p

18、rintf(%d年后本息金额为:%fn,year,money);break;if(year=1)for(i=2;i=all;i+)money=money*1.0300;if(year=3)for(i=2;i=(all/3);i+)money=money*pow(1.0425,3);if(year=5)for(i=2;i=(all/5);i+)money=money*pow(1.0475,5);printf(%d年后本息金额为:%fn,all,money);肇事逃逸#includevoid main()int i,num;for(i=34;i100;i+)num=i*i;if(num/1000)

19、=(num%1000/100)&(num%1000%100/10)=(num%1000%100%10)printf(该车牌号为:闽DT%dn,num);汽车加油#include#include#define M 1000void main()int N,K,aM,i,e;int times(int b,int c,int dM);doprintf(请输入加满油后可行驶公里数和加油站数:);scanf(%d%d,&N,&K);if(K100|K100|N100|K100|N1);printf(请输入各加油站间的距离:);for(i=0;i=K;i+)scanf(%d,&ai);e=times(N

20、,K,a);if(e!=0)printf(最少加油次数为:%dn,e);int times(int b,int c,int dM)int i,s=0,j=0;for(i=0;ib)printf(No Solutionn); break;elsefor(i=0;ib)j+;s=di;return j;大优惠#includevoid main()int m,k,i,day=1;printf(请输入m,k (2=k=mm|k1000)printf(输入有误,请重新输入:);goto loop;elsewhile(m!=0)if(day%k=0)m+;m-;day+;day-;printf(可用天数为

21、:%dn,day);金币#include#includevoid main()int day,num;int sum(int day);printf(请输入工作天数:);scanf(%d,&day);num=sum(day);printf(共奖励金币:%dn,num);int sum(int day)int s=0,i;for(i=1;day=0;i+)s+=pow(i,2);day=day-i;s=s+day*(i-1);return s;提高题:毕业设计论文管理系统设计#include#include#include#include #define M 1000#define N 20/*

22、学生论文信息结构体*/typedef struct char num5;char gradeN;char disciplineN;char ClassN;char numberN;char studentNameN;char thesisName50;char teacherNameN;char dateN;char introduction100;Student;Student studM;int length;int menu();int enter(Student t);int add(Student t,int n);void list(Student t,int n);void fi

23、nd(Student t);void searchnumber(Student t,int n);void searchstudentName(Student t,int n);void searchClass(Student t,int n);void out(Student t,int c,int n);int searchNum(Student t,int n);void update(Student t,int n);int delete(Student t,int n);/*主函数*/void main()system(cls); /*清屏*/ for(;)/*无限循环*/ swit

24、ch(menu()case 1:length=enter(stud);break; /*录入学生论文信息*/case 2:length=add(stud,length);break; /*增加学生论文信息*/case 3:list(stud,length);break; /*显示全部学生论文信息*/ case 4:find(stud);break; /*查找学生论文信息*/case 5:update(stud,length);/*修改学生论文信息*/case 6:length=delete(stud,length);break; /*删除学生论文信息*/ case 7:exit(0); /*如

25、返回值为6则程序结束*/ /*菜单*/int menu()char s80;int c;printf(按任意键进入菜单.n);getchar(); system(cls); printf(*菜单*n);printf( 1.录入学生论文信息n);printf( 2.增加学生论文信息n);printf( 3.显示学生论文信息n);printf( 4.查找学生论文信息n);printf( 5.修改学生论文信息n);printf( 6.删除学生论文信息n);printf( 7.退出n);printf(*n);doprintf(n 输入你的选择(17):); scanf(%s,s); c=atoi(s)

26、; if(c7)printf(输入有误,请重新输入:);while(c7);return c;/*录入学生信息*/int enter(Student t)int i,n;system(cls); printf(n请输入学生人数n); scanf(%d,&n); system(cls); printf(请输入学生论文信息,录完一个按回车n);printf(-n);printf(序号 年级 专业 班级 学号 姓名 论文题目nnnn指导老师 日期 内容简介nnnn);printf(-n);for(i=0;in;i+)scanf(%s%s%s%s%s%s%s%s%s%s,ti.num,ti.grade

27、,ti.discipline,ti.Class,ti.number,ti.studentName,ti.thesisName,ti.teacherName,ti.date,roduction); getchar();return n; /*增加学生论文信息*/int add(Student t,int n)int i,j;system(cls); printf(n请输入要增加的学生人数n); scanf(%d,&j); system(cls); printf(请输入学生论文信息,录完一个按回车n);printf(-n);printf(序号 年级 专业 班级 学号 姓名 论文题目nn

28、nn指导老师 日期 内容简介nnnn);printf(-n);for(i=n;in+j;i+)scanf(%s%s%s%s%s%s%s%s%s%s,ti.num,ti.grade,ti.discipline,ti.Class,ti.number,ti.studentName,ti.thesisName,ti.teacherName,ti.date,roduction); getchar();return n+j; /*显示所有学生论文信息*/void list(Student t,int n)int i;system(cls); printf(nn*n);printf(序号 年级

29、专业 班级 学号 姓名 论文题目n);printf(-n);for(i=0;in;i+)printf(%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,ti.num,ti.grade,ti.discipline,ti.Class,ti.number,ti.studentName,ti.thesisName); printf(nn);printf(指导老师 日期 简介n);printf(-n);for(i=0;in;i+)printf(%-14s%-10s%-10sn,ti.teacherName,ti.date,roduction); printf(*n);

30、getchar();/*查找学生论文信息*/void find(Student t)int i;system(cls); printf(1.按学号查找n);printf(2.按姓名查找n);printf(3.按班级查找n);printf(4.返回n);scanf(%d,&i);switch(i)case 1:searchnumber(stud,length);break;case 2:searchstudentName(stud,length);break;case 3:searchClass(stud,length);break;case 4:break; /*按学号查找*/void sea

31、rchnumber(Student t,int n)char sN;int i,cM;system(cls); printf(请输入学号:);scanf(%s,s); for(i=0;in;i+)if(strcmp(s,ti.number)=0)ci=i;out(stud,c,n);/*按姓名查找*/void searchstudentName(Student t,int n)char sN;int i,cM;system(cls); printf(请输入姓名:);scanf(%s,s); for(i=0;in;i+)if(strcmp(s,ti.studentName)=0)ci=i;out

32、(stud,c,n);/*按班级查找*/void searchClass(Student t,int n)char sN;int i,cM;system(cls); printf(请输入班级:);scanf(%s,s); for(i=0;in;i+)if(strcmp(s,ti.Class)=0)ci=i;out(stud,c,n);/*信息输出*/void out(Student t,int c,int n)int i;printf(nn*n);printf(序号 年级 专业 班级 学号 姓名 论文题目n);printf(-n);for(i=0;in;i+)printf(%-10s%-10s

33、%-10s%-10s%-10s%-10s%-10sn,tci.num,tci.grade,tci.discipline,tci.Class,tci.number,tci.studentName,tci.thesisName); printf(n);printf(指导老师 日期 简介n);printf(-n);for(i=0;in;i+)printf(%-14s%-10s%-10sn,tci.teacherName,tci.date,roduction); printf(*n);getchar();/*序号查找*/int searchNum(Student t,int n)char

34、 sN;int c=-1,i;scanf(%s,s);for(i=0;in;i+)if(strcmp(s,ti.num)=0) c=i;return c; /*修改学生论文信息*/void update(Student t,int n)int i;system(cls);printf (请输入想要修改的序号:);i=searchNum(t,n);if(i=-1)printf(无记录!n);elseprintf (请输入新的资料n); printf(-n); printf(序号 年级 专业 班级 学号 姓名 论文题目nnnn指导老师 日期 内容简介nnnn); printf(-n);scanf(%s%s%s%s%s%s%s%s%s%s,ti.num,ti.grade,ti.discipline,ti.Class,ti.number,ti.studentName,ti.thesisName,ti.teacherName,ti.date,roduction); getchar();/*删除学生论文信息*/int delete(Student t,int n)char sN; int i,j;system(cls);printf(请输入删除序号n);i=searchNum(t,n); if(i=-1)printf(无记录!n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论