C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
┊┊
课程设计
服务课程名称:
C语言
系:
电气工程系
专业:
电气工程及其自动化
班级:
发电本072班
学号:
01姓名:
李苗叶
指导教师:
姚大鹏
课程设计周次:
19周
起始日期:
2008.07.07至2008.07.11
目录
1.C语言课程设计成绩评定表…………………….I页
2.C语言课程设计任务书………………………….II页
3.程序基本框架结构图…………………………….1页
4.程序设计说明书………………………………….2页
5.源代码清单……………………………………….4页
6.课程设计总结…………………………………….10页
课程设计成绩评定表
班级
发电本072班
学号
01
姓名
李苗叶
项目组
第六组
项目组长
刘伟伟
项目组组员
李苗叶、高鸣、陈哲、尚开宇、杨照成
本人工作简介:
在这次设计中,我的主要任务是制作删除和排序功能函数,这部分是主函数的调用部分,其中引用标准输入输出函数、字符串拷贝函数、字符串比较函数,调用输出函数,运用冒泡排序法对其排序,还用到if语句、for循环语句。
组长评语:
李苗叶同学在课程设计设期间表现非常活跃,积极的投入到编程、调试、运行的各个环节当中,积极查阅资料,参与小组讨论,准时地完成了安排的任务。
而且课程设计期间李苗叶同学严格要求自己,积极配合我的工作,还主动帮助其他同学答疑解惑,得到小组同学的认可。
成绩评定标准
A
B
C
D
E
报告完成情况
很好
好
比较好
一般
不好
纪律表现
很好
好
比较好
一般
不好
程序功能性
强
较强
一般
较弱
弱
界面美观性
很好
好
一般
较差
不好
程序可操作性
很好
好
一般
较差
不好
答辩表现
很好
好
一般
较差
不好
所起作用程度
80%以上
60%以上
60%以下
最后成绩
优秀
A>=5
C<=0
良好
A>=3
C<=0
中等
B>=2
C>=4
及格
A=0
B=0
C>=3
不及格
A=0
B=0
C<=2
E>=1
负责指导教师:
(签名)
指导教师:
(签名)
发电本072班C语言课程设计任务书
一、设计目的
通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
二、设计要求
1、认真查阅参考书、资料2、遵守课程设计时间安排
3、按时上机,认真调试程序4、认真完成课程设计报告
三、课设报告装订内容及顺序
1、课程设计封皮2、目录
3、课程设计成绩评定表4、课程设计任务书
5、程序基本框架图6、程序设计说明书
7、源代码清单8、课设总结与心得
四、设计题目
●班级通讯录数据库管理系统
五、时间安排(一周:
从7月7日到7月11日)
1、查阅资料及程序设计(1天)2、程序编制及调试(3天)
3、成绩评定(0.5天)3、打印报告(0.5天)
六、参考文献
1、《C语言程序设计》李淑华/李贞编大连理工大学出版社
2、《C语言程序设计》孙连科/姚大鹏编辽海出版社
3、《C++时尚编程百例》网冠科技编.机械工业出版社
4、《TURBOC实用大全》徐金梧等编.机械工业出版社
程序基本框架结构图
班级通讯录数据库管理系统
输入数据
输出数据
查询数据
删除数据
插入数据
排列数据
按姓名查找
返回主程序
程序设计说明书
问题分析:
总体结构
班级通讯录数据库管理系统是方便查找班级同学联系方式并进行操作。
在系统中能够知道同学的姓名、地址以及联系电话,如果单凭记忆很难记住那么多同学的联系方式,设计一个功能完善的班级通讯录数据库管理系统把同学的数据存储起来。
通讯录系统包括:
姓名、班级或地址、电话号码等信息,尽管系统的内容比较庞大但是在运行过程中可以比较简单的完成。
我组选择的C程序设计为班级通讯录数据库管理系统,在此程序中总共包含了七项功能,即输入数据、输出数据、查询数据、删除数据、插入数据、排列数据以及退出系统。
该程序最终可通过输入学生姓名来查看学生的单位和电话。
在此次的程序设计中我编辑的是删除数据和对数据的排序两个模块,分别引用了标准输入输出函数,字符串拷贝函数,字符串比较函数等,并且调用我组同学编写的输出函数来显示记录信息。
针对整个程序,首先,将程序内容用流程图表示出来,让自己有一个清晰的思路。
主函数是每个程序必不可少的,因此,从主函数开始着手去做,选择的方法是:
用switch语句做一个可供选择的主菜单,返回值作开关语句的条件,再用case语句分别负责输入记录、显示全部记录、查找记录、删除记录、插入记录、按姓名排序和退出系统。
菜单函数,函数返回值为整数,代表所选的菜单项。
然后用主函数去调用各个被调函数,从而实现把各个功能连接起来的!
其中,主函数包括:
输入数据、输出数据、查找数据、删除数据、插入数据、排列数据和退出系统这七项功能。
他们都是通过输入的数字调用函数,实现功能。
各个程序功能:
输入记录实现数据的录入功能,其中形参为结构体数组,函数值返回类型为整型,表示记录长度。
首先输出提示信息,然后根据提示信息输入记录数,接着输入联系人的信息,函数提供返回值记录条数。
显示记录实现显示所有联系人信息的功能,其中参数为记录数组和记录条数。
按姓名查找显示记录实现数据查找并显示的功能。
首先定义字符数组用来保存待查找的姓名字符串,再定义一个整型变量用来保存查找到的结点的序号。
输入待查找的姓名,调用find函数,得到一个整数,然后用if语句判断是否找到,如果找到调用显示函数显示单条记录。
其中用到的显示单条记录函数实现了显示单条记录的功能。
查找函数实现了查找所需数据的功能。
形参为记录数组、记录条数以及姓名。
该函数通过判断调用函数输入的姓名与记录中的姓名是否相等来提供返回值。
插入函数实现插入新数据的功能形参为结构体数组和记录数。
定义一个字符数组用来确定插入在哪个记录之前。
首先输入新数据,然后输入插入位置的数据,通过调用find函数,确定插入位置。
然后利用for循环从最后一个结点开始向后移动一条,然后利用结构体数组将新插入的数据拷贝到第i个位置,然后提供返回值。
以上是整个程序的基本思路,针对我负责的两个功能函数主要简介如下:
对删除数据功能函数,首先定义整个函数需要的变量,严格遵循对变量“先定义后使用”的原则,然后输出提示信息:
“输入需要删除的姓名”,调用find函数,用if语句显示查找的结果,通过输入“1”或“0”来进一步确认是否删除,删除以后用字符串拷贝函数实现后续记录前移,记录数运用自减运算,最后返回删除以后的记录数。
数据排序函数采用较为常见的冒泡算法思路,将比较字符串函数作为if语句的条件,运用for循环语句及字符串拷贝函数实现数据交换,完成排序以后输出提示信息,显示排序成功。
综上所述,便是本组在编程序时的主要思想、程序流程、以及程序的基本功能运用。
源代码清单
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"ctype.h"
#defineM50
typedefstruct
{
charname[20];
charunits[30];
chartele[10];
}ADDRESS;
intenter(ADDRESSt[]);
voidlist(ADDRESSt[],intn);
voidsearch(ADDRESSt[],intn);
intdelete(ADDRESSt[],intn);
intadd(ADDRESSt[],intn);
voidsort(ADDRESSt[],intn);
voidprint(ADDRESStemp);
intfind(ADDRESSt[],intn,char*s);
intmenu_select();
main()
{
inti;
ADDRESSadr[M];
intlength;
clrscr();
for(;;)
{
switch(menu_select())
{
case0:
length=enter(adr);break;
case1:
list(adr,length);break;
case2:
search(adr,length);break;
case3:
length=delete(adr,length);break;
case4:
length=add(adr,length);break;
case5:
sort(adr,length);break;
case6:
exit(0);
}
}
}
menu_select()
{
chars[80];
intc;
gotoxy(26,25);
printf("pressanykeyentermenu......\n");
getch();
clrscr();
gotoxy(19,7);
printf("******************menu******************\n\n");
printf("0.Enterrecord\n");
printf("1.Listthefile\n");
printf("2.Searchrecordonname\n");
printf("3.Deletearecord\n");
printf("4.Addrecord\n");
printf("5.Sorttomakenewfile\n");
printf("6.Quit\n");
printf("******************************************\n");
do{
printf("\nEnteryouchoice(0~6):
");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>6);
returnc;
}
intenter(ADDRESSt[])
{
inti,n;
char*s;
clrscr();
printf("\npleaseinputnum\n");
scanf("%d",&n);
printf("nameunittelephone\n");
printf("-----------------------------------------------------\n");
for(i=0;i{
scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);
printf("-------------------------------------------------------\n");
}
returnn;
}
voidlist(ADDRESSt[],intn)
{inti;
clrscr();
printf("\n\n********************ADDERSS***********************\n");
printf("nameunittelephone\n");
printf("-----------------------------------------------------\n");
for(i=0;iprintf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);
printf("************************END****************************");
}
voidsearch(ADDRESSt[],intn)
{chars[20];
inti;
clrscr();
printf("pleasesearchname\n");
scanf("%s",s);
i=find(t,n,s);
if(i>n-1)
printf("notfind\n");
else
print(t[i]);
}
voidprint(ADDRESStemp)
{
clrscr();
printf("\n\n*****************************************************\n");
printf("nameuntitelephone\n");
printf("-----------------------------------------------------\n");
printf("%-20s%-20s%-10s\n",temp.name,temp.units,temp.tele);
printf("*******************end*******************************\n");
}
intfind(ADDRESSt[],intn,char*s)
{inti;
for(i=0;i<=n;i++)
{
if(strcmp(s,t[i].name)==0)
returni;
}
returni;
}
intdelete(ADDRESSt[],intn)
{
chars[20];
intch=0;
inti,j;
printf("pleasedeletedname\n");
scanf("%s",s);
i=find(t,n,s);
if(i>n-1)
printf("nofoundnotdeleted\n");
else
{
print(t[i]);
printf("Areyousuredeleteit(1/0)\n");
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j{
strcpy(t[j-1].name,t[j].name);
strcpy(t[j-1].units,t[j].units);
strcpy(t[j-1].tele,t[j].tele);
}
n--;
}
}
returnn;
}
intadd(ADDRESSt[],intn)
{ADDRESStemp;
inti,j;
chars[20];
printf("pleaseinputrecord\n");
printf("*************************************************\n");
printf("nameunittelephone\n");
printf("-----------------------------------------------\n");
scanf("%s%s%s",temp.name,temp.units,temp.tele);
printf("-------------------------------------------------\n");
printf("pleaseinputlocatename\n");
scanf("%s",s);
i=find(t,n,s);
for(j=n-1;j>=i;j--)
{
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].units,t[j].units);
strcpy(t[j+1].tele,t[j].tele);
}
strcpy(t[i].name,temp.name);
strcpy(t[i].units,temp.units);
strcpy(t[i].tele,temp.tele);
n++;
returnn;
}
voidsort(ADDRESSt[],intn)
{
inti,j;
ADDRESStemp;
for(i=0;i{
for(j=0;jif((strcmp(t[j].name,t[j+1].name))>0)
{
strcpy(temp.name,t[j].name);
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
}
}
printf("sortsucess!
!
!
\n");
}
课程设计总结
曾几何时,我还固执的认为C语言是一门很抽象的学科,在实际生活中的用处根本看不到,也根本不知道那些无尽的英文字母究竟是要怎么发挥他们的作用,但经过一周紧张的C语言课程设计,使我对这门学科有了一个全新的认识,更加清楚的看到了C语言知识在我们的日常生活中的重要性,激励我更加努力地学习本门课程,同时也让我更加坚定信念掌握学科知识,并将之更好的运用到实际生活之中。
在课程设计刚开始的时候,看到眼花缭乱的题目,我对未来五天的设计是一片茫然。
尽管是这样,在组长刘伟伟同学的带领下,最终我们选择了“班级通讯录数据库管理系统”这个课题。
在整个设计过程中,C语言的复杂度以及灵活性是我远所不能预见的,其中遇到的种种问题,使我深刻意识到自己所掌握C语言的知识是知之甚少。
尤其是程序的调试阶段,面对那么多的错误,加之天气炎热,心情极度烦躁,多次想到放弃。
但正如一句诗所说“山重水复疑无路,柳暗花明又一村”,在同学的热情鼓励下,小组成员的密切配合下,“三个臭皮匠赛过诸葛亮”,一个个疑团迎刃而解,一路的坎坷被我们踩在脚下,这样我也渐渐地恢复了平静,保持清醒的头脑,全身心地投入到课程设计的工作中去。
本次课程设计的时间是第十九周,面临着参加期末考试的巨大压力,本应该是紧张的备考阶段,但是通过这几天的设计,让我收获的更多,这五天的收获比以往所学的知识都多,好像一下子就对C语言产生了浓厚的兴趣,针对每一个细节都想把它弄得清清楚楚,明明白白,不愿留下一点遗憾,尽量使自己的程序做到更加完美。
一周以来不仅让我进一步的了解了C语言在我们日常生活中的广泛应用还使我学到更多平时上C语言理论课时所学不到的的知识以及所得不到的感受,并且还从多方面锻炼了我的思维能力和操作能力;让我更加透彻体会到了古语:
一份耕耘,一份收获的古训含义!
更是令我对做事还有学习的耐心和细心得到了很大的提高!
“众人拾柴火焰高,十指抱拳力千斤”,此次设计也加强了同学和同学以及老师和学生之间的沟通与交流。
同学们热心的帮助,老师耐心的指导,进一步让我看到了同窗情、师生情是如此深厚的感情。
尤其是在这样炎热的天气里,不论是在白天还是晚上,老师始终与我们呆在一起,随时解决同学遇到的问题。
不仅如此,课程设计也增强了班级的凝聚力和向心力,使整个班级紧紧的团结在一起,折射出巨大的暴发力。
另外本次设计也增进了班级和班级同学之间的友谊,很好地开阔了我们的思路,集思广益得到了很好的体现。
由于忙于紧张的设计,一周的时间很快地过去了,但学习着实使我收益匪浅,让我发现了自己的更多问题,也让我有勇气去学习计算机的各门功课,让我深刻领会团队协作的优势,尤其对我即将参加的国家计算机二级考试——C语言,有很大的帮助。
在此也衷心地感谢老师及同学们的亲切教导和热心帮助,希望自己的课程设计成果能让老师和同学感到满意,同时我也会一如既往地继续努力,不辜负所有关心我的人对我的殷切期望,尽量做到让自己满意,让大家满意,因为我深信“大家好才是真的好”。
综上所述,这就是我参加课程设计得到的一点点心灵上感受和对未来的憧憬。