C语言编程课程设计心得_第1页
C语言编程课程设计心得_第2页
C语言编程课程设计心得_第3页
C语言编程课程设计心得_第4页
C语言编程课程设计心得_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

河南城建学院《C语言程序设计》课程设计报告适用专业工程管理专业课程名称C语言程序设计指导教师赵军民、魏新红、张芳芳设计人:051409112王田2010年6月一、设计目的和要求 1.通过课程设计全面掌握《C语言程序设计》关键知识点,掌握C语言中数组、指针、结构体、文件等方面的基本知识。

2.通过课程设计了解并掌握C语言程序设计的方法,熟悉C程序设计的开发环境及C程序的调试过程。

3.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。二、内容与设计思想1、系统功能描述(1)编译时,主菜单为如下:输入记录输入记录

显示记录

2、

按姓名查找

3、

按电话号码查找

4、

插入记录

5、

按姓名排序

6、

删除记录

7、

记录保存文件

8、Quit(2)各项功能:0、输入记录:将所要记录的人的信息输入。1、显示记录:将所输入的记录一一显示。2、按姓名查找:从所记录中输入姓名查找其信息。3、按电话号码查找:输入学生的号码查找其信息。4、插入记录:在所记录中插入需要记录的人的信息。5、按姓名排序:对已有的记录按姓名第一个字母的ASCII码大小排列,并一一显示。6、删除记录:从记录中删除某学生的信息。7、记录保存文件:对输入的学生的信息进行保存。8、退出程序。2、总体设计思想运用所学知识编写一个简单的学生通讯录管理系统的程序,使它具有以下的功能:输入学生的学号,姓名,班级,电话号码,地址,显示学生记录,增加学生记录,按照学生姓名进行排序,删除学生记录,查找学生记录,保存学生记录。其主要结构用如下图示表示:三、程序具体分析及操作时问题。1、程序具体分析。(1)文件名的使用:include称为文件包含命令,被包含的文件通常是由系统提供的,其扩展名为.h.stdio为standardinputoutput的缩写,意为“标准输入输出”.代码中只要有用到printf

scanf等函数,头文件就要写#include<stdio.h>这个在代码中必不可少的,因为编写代码就是为了输出结果

;用到像getch()这种键盘输入函数的话,就需要用到#include<conio.h>;用到系统标准输出函数的话,就用到#include<stdlib.h>;用到字符数组就要用#inciude<string.h>。(2)指针使用:如FILE*fp、定义1个文件型指针变量,指针变量名字分别叫fp,定义后fp是指向FILE类型结构体的指针。可以使他指向某个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。指针是地址变量:它的值有两种:其一是地址,其二是内容。不同的表达方式可以取不同的值。指针是可以运算的,它的运算法则与变量是一致的。(3)结构体:如structLinkList定义结构体为LinkList。当结构体成员为指针的时候,每当给这个成员赋值之前必须先为这个结构体成员分配一个内存空间。(4)字符数组的比较:如strcmp(student[i].name,name)==0,strcmp(student[i].phone,phone)==0,strcmp(student[i].phone,phone)==NULL都是用来比较输入的与原有的,当相等时即为0.(5)实现文件的打开和输入:除有scanf和printf以外还涉及到其他的,如fp=fopen("student.bin","wb"))==NULL用fopen()函数来实现打开文件;fwrite(&student[i],sizeof(structrecord),1,fp)!=1fwrite用于二进制的文件输入输出也用于读写记录这里的记录是指一串固定长度的字节。(6)C语言中的一些结构。如for(j=i;j<num-1;j++)对for语句正确分析,实现自增自减,并执行下一语句,实现变量的循环;switch(menu_select()){case0:adduser();break;case1:list();break;case2:search();break;case3:display();break;case4:add();break;case5:listbyname();break;case6:dele();break;case7:save();break;case8:exit(0);}用来实现多分支选择语句;if语句的嵌套及与else连用;do….while的使用如do{printf("\nEnteryouchoice(0~8):");scanf("%s",s);a=atoi(s);}while(a<0||a>8);returna;2.操作时问题分析编好后进行运行时,有一些遗漏问题,如大括号的使用是否对起;语句的使用是否错误;对一个变量是否定义;输出是否有遗漏;数据的使用是否符合规定,定义是否正确等。对于调试,要看程序是否运行且达到预期效果,按照思路能够正确的使用。开始时在姓名输入上出了问题,但是是小问题,修改一下便可实现姓名、学号、班级、电话号码、地址的正常输出。四、个人任务得到正确的程序后,并对其进行调试、测试成功后,进行分组任务,而我得到的任务如下程序及解释:list()/*显示记录中的信息*/{inti;/*定义整形变量i*/system("cls");/*清屏*/if(num!=0)/*如果信息记录不为0*/{printf("\n\t\t***************以下为通讯录所有信息************");for(i=0;i<num;i++)/*将记录中信息一一输出*/{printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t班级:%s",student[i].classnumber);printf("\n\t\t学号:%s",student[i].number);printf("\t\t");if(i+1<num){printf("\n\t\t__________________________");/*输出间隔符*/system("pause");/*从程序中调用pause命令*/}}printf("\n\t\t************************************************");}elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);/*返回0*/}search()/*寻找信息*/{intmark=0;inti;inta=0;printf("\n\t\t*****************按姓名查找*******************");charname[20];/*定义名字为20个字符*/printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<num;i++)/*数量实现自加*/{if(strcmp(student[i].name,name)==0)/*与记录中名字一一比较*/{printf("\n\t\t*************以下是您查找的用户信息***********");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t学号:%s",student[i].number);printf("\n\t\t************************************************");mark++;if((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)");if(getch()=='y')/*输入y*/{a=i;continue;/*终止此程序*/}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0)/*{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}else{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}五、心得体会这次的课程设计实验是对我们进入大学以来学习C语言结果的一次大考验。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。但是,我相信在今的学习中,一定能把它解决好。当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。我不仅巩固《C语言程序设计》课程学习的内容,掌握设计的基本方法,强化上机动手能力,还进一步掌握以下了知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等;通过课程设计,掌握了程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。当我选择学生通讯录管理系统时,首先系统分析主要思路及框架,与同学讨论,联系所学知识,尽管一些文件要同组帮助找,也还有一些循环语句要具体分析,了解其运行路线,尤其是for,while,if等的使用。我知道书上和老师讲的有限,故上网搜也是一种利用资源的表现。在编程中,特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。当读懂了C语言编程的基本过程和方法。经过一波三折,终于开始正式编程。团队精神不可少,分工合作也是必须的,身为组长就要以身作则,带领好小组,做好各项工作。在开始,对本组人员进行整理,分析其特点,再分配任务,然后进行综合应用,最后对所需资料及要编的程序进行整理得出最后程序。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,是生活也更加好。六、源代码为:#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#include"stdlib.h"#definenull0structrecord{charname[20];charphone[20];charadress[40];charclassnumber[10];charnumber[30];}student[500];structLinkList{structrecordUS;structLinkList*next;}a;structLinkList*head=null;intnum=0;FILE*fp;intmenu_select();intadduser();intlist();intsearch();intdisplay();intadd();intlistbyname();intdele();intsave();intexit();voidmain(){system("cls");for(;;){switch(menu_select()){case0:adduser();break;case1:list();break;case2:search();break;case3:display();break;case4:add();break;case5:listbyname();break;case6:dele();break;case7:save();break;case8:exit(0);}}}menu_select(){chars[80];inta;printf("*_*pressanykeyentermenu!*_*\n");getch();system("cls");printf("\t\t********************MENU*********************\n\n");printf("\t\t0.输入记录\n");printf("\t\t1.显示记录\n");printf("\t\t2.按姓名查找\n");printf("\t\t3.按电话号码查找\n");printf("\t\t4.插入记录\n");printf("\t\t5.按姓名排序\n");printf("\t\t6.删除记录\n");printf("\t\t7.记录保存文件\n");printf("\t\t8.Quit\n");printf("\t\t***********************************************\n");do{printf("\nEnteryouchoice(0~8):");scanf("%s",s);a=atoi(s);}while(a<0||a>8);returna;}adduser(){printf("\n\t\t****************请输入用户信息****************\n");printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入班级:");scanf("%s",&student[num].classnumber);printf("\n\t\t输入学号:");scanf("%s",&student[num].number);num++;printf("\n\t\t是否继续添加?(Y/N):");if(getch()=='y')adduser();return(0);}list(){inti;system("cls");if(num!=0){printf("\n\t\t***************以下为通讯录所有信息************");for(i=0;i<num;i++){printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t班级:%s",student[i].classnumber);printf("\n\t\t学号:%s",student[i].number);printf("\t\t");if(i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************");}elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);}search(){intmark=0;inti;inta=0;printf("\n\t\t*****************按姓名查找*******************");charname[20];printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<num;i++){if(strcmp(student[i].name,name)==0){printf("\n\t\t*************以下是您查找的用户信息***********");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t学号:%s",student[i].number);printf("\n\t\t************************************************");mark++;if((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)");if(getch()=='y'){a=i;continue;}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0){printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}else{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}display(){intmark=0;inti;inta=0;printf("\n\t\t******************按电话查找******************");charphone[10];printf("\n\t\t请输入电话号码:");scanf("%s",phone);for(i=0;i<num;i++){if(strcmp(student[i].phone,phone)==0){printf("\n\t\t**************以下是您查找的用户信息**********");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t学号:%s",student[i].number);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单:");mark++;getch();return(0);}}if(mark==0){printf("\n\t\t没有改用户的信息");printf("\n\t\t按任意键返回主菜单");getch();return(0);}return(0);}add(){inti;if((fp=fopen("student.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for(i=0;i<num;i++){if(fwrite(&student[i],sizeof(structrecord),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t****************请输入用户信息****************\n");printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入班级:");scanf("%s",&student[num].classnumber);printf("\n\t\t输入学号:");scanf("%s",&student[num].number);num++;printf("\n\t\t是否继续添加?(Y/N):");if(getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t");exit(0);return(0);}voiddeletebyphone(){inti,j;intdeletemark=0;charphone[20];printf("\n\t\t请输入要删除用户电话号码:");scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for(i=0;i<num;i++){if(strcmp(student[i].phone,phone)==NULL){printf("\n\t\t以下是您要删除的用户纪录:");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t学号:%s",student[i].number);printf("\n\t\t是否删除?(y/n)");if(getch()=='y'){for(j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if(getch()=='y')deletebyphone();return;}elsereturn;}continue;}if(deletemark==0){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if(getch()=='y')deletebyphone();return;}}voiddeletebyname(){inta=0;intfindmark=0;intj;intdeletemark=0;inti;charname[20];printf("\n\t\t请输入要删除用户姓名:");scanf("%s",name);for(i=a;i<num;i++){if(strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的用户纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t学号:%s",student[i].number);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(y/n)");if(getch()=='y'){for(j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的用户信息?(y/n)");if(

温馨提示

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

评论

0/150

提交评论