C语言课程设计Word下载.docx
《C语言课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
![C语言课程设计Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/5001741d-7343-4f17-a420-c0104d63bb4e/5001741d-7343-4f17-a420-c0104d63bb4e1.gif)
C语言是一种被广泛学习,普遍使用的计算机程序设计语言。
它的高级语言形式,低级语言功能具有特殊的魅力;
C语言功能丰富,表达能力强,使用灵活,应用面广,目标程序效率高,可移植性好,特别适合编写系统语言;
通过课程学习,理解掌握基本编程技巧。
初步培养学生运用c语言的基本编程技巧能独立编写程序,并为进一步学习其他软件知识打下相应基础。
通过课程学习,理解基本概念,熟读典型示例,勤于上机实践,然后编写自己的程序,为学生将来在工作方面打下扎实的编程基础。
2.掌握C语言编程和程序调试的基本技能
培养良好的编程习惯。
国内教材上的例题大多缩进格式不规范、注释语句稀少、变量声明过分随意,这样的程序可读性非常差,所以几乎每个示例程序都被我改造过。
编程环境,我要求学生的程序前半学期在TurboC环境下调试,熟练掌握这个最标准的开发工具我们要掌握好C语言编程和程序调试的基本技能为学生将来在工作方面打下扎实的编程和程序调试的技能。
3.利用C语言进行基本的软件设计。
一般说来,最适用于初学者的C开发工具非“TurboC2.0”莫属!
该软件轻巧、简单且功能强大。
TurboC2.0是DOS时代优秀的C语言编程工具,老前辈们用它编出了很多优秀程序。
经典的C语言编程开发工具,小巧实用,学习C语言课程必备的工具。
Borland公司在1981年推出C语言程序设计集成开发环境“TurboC2.0”,由于其实用稳定的性能,一直长期工作应用在社会不同领域,得到社会各界的广泛认同。
4.掌握书写程序设计说明文档的能力
听已经参加了工作的学长学姐们说,书写程序设计说明文档还是很重要的,他们有的人进了公司之后,被老板避着写软件程序设计说明书,可惜在学校的时候没有重视,这个时候就不得不到处求人,不仅欠了很多人情,自己面子上也挂不住了。
看来,掌握书写程序设计说明文档的能力是我们都要重视起来的事。
5.提高运用C语言解决实际问题的能力。
在专业领域,C语言仍是今天应用最为广泛的语言。
几乎没有什么东西是C语言不能编写的。
日常用户所能常见的C语言程序主要是各种硬件驱动程序、嵌入式程序(例如一些车载导航系统、微型手持设备等)还有大部分操作系统也主要是由C语言写成的。
只学会原理是没有任何用处的,只有将原理应用于实践,才能将知识的价值发挥出来。
6.选择建立通讯录这个课题具有重要的实际意义。
21世纪是科技进步的世纪,科技的发展在我们身边无处不在,也给我们的生活带来了巨大的影响。
整个地球成了一个交流无处不在的地球村,人们之间的联系也越来越紧密。
中国人崇尚“以和为贵”,“家和万事兴”,从古到今,成大事者,无不是得道多助,无不应了中国的古话———“天时不如地利,地利不如人和”。
这里的“人和”,强调的是一个和谐的人际关系氛围。
在每一个远东地区,尤其是在儒家孔子思想传统的中国大陆和港澳台地区工作的从事商业活动的人都清楚:
没有良好的人际关系,他所从事的商业活动是不太可能取得成功的。
关系是中国社会中成人进行日常生活管理的知识的一部分。
人们常说认识什么样的人比自己懂得多少知识要重要的多,不正说明了“文凭比需要,知识供参考,关系最重要”吗?
建立关系是社会资源流动的一种文化性的战略方法。
而通讯录正是保证良好人际关系的一种重要途径。
四、设计流程
程序设计过程
结构化程序设计方法,从程序的实现角度看就是模块化程序设计,就是将程序模块化。
一个程序由若干模块组成,函数是C语言中模块的实现工具,较大的模块可用一个程序文件实现。
模块组装在一起达到整个程序的预期目的。
一个模块只做一个事情,模块的功能充分独立。
模块内部的联系要紧密,模块之间的联系要少。
模块之间通过接口(形参或外部变量)通讯,模块内部的实现细节在模块外部要尽可能不可见。
采用模块化程序设计可减少程序的复杂性,提高程序的可靠性,增加程序的可读性,方便程序的调试维护。
建立通讯录是一个较为复杂的程序,因此将其分成若干子模块:
英文菜单、保存与退出、创建、添加、查询、修改、删除、显示等。
一:
主函数main()
根据选单的选项调用各函数,并完成相应的功能。
在主函数中调用函数<
stdio.h>
、<
string.h>
,接下来定义了结构体persons姓名、地址、电话号码等,后面是列出英文菜单,以及利用switch(ch)函数解决输入不同数字时运行不同的子模块。
#include<
#definemaxlen100
structpersons
{charname[10];
charaddr[20];
charphnum[10];
}persons[maxlen];
;
typedefstructlnode{
charname[10];
charphnum[10];
structlnode*next;
}listnode,*linklist;
;
linklisthead=NULL,r=NULL;
listnode*s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7;
inti;
charname1[10],ch;
charstr1[20];
FILE*fp;
;
voidmain()
{creat();
ch=getche();
switch(ch)
{case'
1'
:
List();
break;
case'
2'
Delete();
3'
Find();
4'
Input();
5'
Alter();
7'
Save();
break;
6'
creat();
fclose(fp);
exit(0);
default:
printf("
\n\t********************************************\n"
);
\n\tThenumshould1-4!
!
\n"
}
}while
(1);
二:
Menu()
显示英文提示选单。
主要是使用printf输出函数,显示必要的英文说明字幕。
也在其中注意了转义字符的使用,例如换行等。
do
{printf("
\n\t***********************************************\n"
\n\n\tWELCOMETOUSEYUJIANTONG'
sAddressbook\n"
\n\t**********************************************\n"
\n\n\t\tPleasemakeachoicebelow:
"
\n\t\t1.Listallthemeg"
\n\t\t2.Deleteapieceofmeg"
\n\t\t3.Findapieceofmeg"
\n\t\t4.Addapieceofmeg"
\n\t\t5.Alterapieceofmeg"
\n\t\t6.SaveandQuit"
\n\t\t7.Createanaddressbook"
\n\n\n"
\tInputYourChoice:
三:
SaveandQuit
退出选单。
利用链表以及结构体完成通讯录的保存和退出,在其中使用了strcpy、fwrite等函数,结合所学知识完成此模块。
voidSave()
{intj;
fp=fopen("
people.txt"
"
w"
for(p2=head,j=0;
p2!
=NULL;
j++,p2=p2->
next)
{strcpy(persons[j].name,p2->
name);
strcpy(persons[j].addr,p2->
addr);
strcpy(persons[j].phnum,p2->
phnum);
fwrite(&
persons[j],sizeof(structpersons),1,fp);
}
四:
Create()
创建新的通讯录。
其中包含复杂的链表程序,为了完成这些内容,翻了好多遍的书,最终只能弄出这个结果,虽然有些不尽人意,但已经努力了啊
voidcreat()
longk;
r+t"
if(fp!
=NULL)
{for(i=1;
i<
maxlen;
i++)
{j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(structpersons),0);
fread(&
persons[i],sizeof(structpersons),1,fp);
s=(linklist)malloc(sizeof(listnode));
strcpy(s->
name,persons[i].name);
addr,persons[i].addr);
phnum,persons[i].phnum);
if(head==NULL)
head=s;
else
r->
next=s;
r=s;
{fp=fopen("
i=1;
五:
Input()
在通讯录的末尾,写入新的信息,并返回选单。
输入的内容包括姓名、地址和电话号码,用于建立新的通讯信息,与之前的创建新的通讯录功能不同。
voidInput()
{s=(linklist)malloc(sizeof(listnode));
\n\n\tpleaseinputthesb'
smeg:
\n\n\t\tname:
scanf("
%s"
s->
\n\n\t\tAddr:
\n\n\t\tphnum:
六:
Find()
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
其中依然显示英文提示。
voidFind()
{printf("
\n\n\tpleaseinputthename:
p0=head;
gets(name1);
while(strcmp(name1,p0->
name)!
=0&
&
p0!
p0=p0->
next;
if(p0==NULL)
\n\n\tItisnotexitintheaddr-book!
{printf("
\n\n\tname:
%s\n"
p0->
\n\n\taddr:
\n\n\tphnum:
七:
Alter()
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
voidAlter()
{
intj;
\n\n\tPleaseinputthename:
p3=head;
while(strcmp(name1,p3->
p3!
p3=p3->
if(p3==NULL)
\n\n\tpleaseinputthenewmeg!
name1);
strcpy(p3->
name,name1);
addr,name1);
phnum,name1);
八:
Delete()
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
voidDelete()
p4=head;
if(strcmp(p4->
name,name1)==0)
{p4=p4->
head=p4;
{while(strcmp(p4->
next->
name,name1)!
=0)
p4=p4->
p5=p4->
p4->
next=p5->
free(p5);
九:
List()
显示通讯录中的所有记录。
将输入的所有通讯信息显示出来,并使用了循环语句,使所有输入的信息都显示出来。
voidList()
{p1=head;
while(p1!
p1->
p1=p1->
设计结果说明
程序运行时,首先显示的是:
***********************************************
WELCOMETOUSEYUJIANTONG'
sAddressbook
Pleasemakeachoicebelow:
1.Listallthemeg
2.Deleteapieceofmeg
3.Findapieceofmeg
4.Addapieceofmeg
5.Alterapieceofmeg
6.SaveandQuit
7.Createanaddressbook
InputYourChoice:
根据提示,输入你所需的数字代号。
若初次使用此通讯录,应输入4,建立新信息。
则出现在字幕上的为:
pleaseinputthesb'
name:
输入姓名后回车,则显示:
Addr:
输入地址后回车,则显示:
phnum:
回车后再次显示英文主单,进入下一次操作。
根据需要选择数字:
若需列出所有信息,则输入数字1
如需要删除某条信息,则输入数字2
若需查询某条信息,则输入数字3
若需增加一条信息,则输入数字4
若需要修改一条信息,则输入数字5
若需要保存和离开,则输入数字6
若需要创建新的通讯录,则输入数字7
存在缺陷:
1.通讯录中纪录的只有姓名。
地址和电话号码,没有其他一些比较符合现代的通讯方式,显得过于粗糙。
2.程序设计较为复杂,没有考虑到调试时可能会出现的困难。
课程设计总结
我对C语言的敬仰已久,C语言在我的世界里占有的地位无所能及,就像一位多年的老朋友,纵然是有那么多的课程,那么多的纷扰,他始终在我左右。
我手里捧着它,感到它是如此有分量,于是我自己暗暗吃惊,难道说在时间无涯的荒野里,于尘世间滚滚红尘中,缘分把我和C语言联系在了一起?
那么时间流逝了,世界变老了,我们还会在一起吗?
答案在风中飘散,当你必须要失去,唯一可以做的就是不要忘记!
当哪次在课堂上见到老师,我们的老师,我觉得他以拾起我多年熄灭的火焰,想当年,我费尽心思要自学,结果是很不成功,老师的讲解很透,很直接,我心里的门窗一扇一扇打开了。
后来我想:
能不能有那么一次机会能让我们尽力发挥,独立的,创新的,解决C语言的实际问题。
那么,投入到C语言课程设计中去吧,那就是前途。
我的题目是通讯录的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?
怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?
怎样让自己的业余更近专业?
怎样让自己的计划更具有序性,而不会忙无一用?
机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。
经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能力,养成程序编辑的好习惯。
我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。
我们自己能做到的仅此而已,因为人力也有所不能及。
我首先觉得,用到的程序段不必太高级,因为天下事有高低之分,决定优劣的不是集体中某部分的强弱,起决定作用的是组合内各元素的和谐,要能在一个集体中各能尽其用,每个人都能发挥长处,避免自己的短处,那么这个集体的实际组合能量是最优的。
选择什么等级的语言就是关键,最后我决定运用文件,以及指针,去实现自己的构想。
文章设计有几个要求:
要能录入新的文档,要能删除不需要的文档,要能按照关键字查找已有的文档,要能按照要求的顺序进行排序。
我的理解是:
必须建立一个文件,它既能够保存新的录入文档,又能在提示语言的要求下读出文档。
然而,这只是万里长征的第一步。
后面的路还很长,困难还很多,可是我能成功的编译一个程序,能够在思路卡壳的情况下,继续前进,我在此很想感谢那些给予我耐心解答的老师和同学,是他们为我小程序的成功起到了关键性的作用,那么多个日夜,如此多的困难,同学们勤恳塌实,从开始到结束,没有显出一点倦意,始终热情高涨,我感谢这种氛围,感谢学校提供的良好条件。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?
在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。
没有了柳暗花明的一天,那么我怎么能说经受住了考验?
谢谢老师的那句话,她说:
人力有所不能及,然而,人的精神是不会败倒的。
我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。
不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。
谢谢给我指点迷津的老师。
我们的课程设计结束了,但是它留给我的印象是不可磨灭的。
无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我