C语言程序设计课程设计.docx
- 文档编号:17653026
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:16
- 大小:104.78KB
C语言程序设计课程设计.docx
《C语言程序设计课程设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序设计课程设计
通信录管理系统
―――《C语言程序设计课程设计》
学院名称:
贵州航天职业技术学院
学生姓名:
郑平
专业班级:
08计网
指导老师:
陈美成
完成时间:
2010年1月11日
设计题目:
通信录管理系统
课程设计摘要:
C语言是一种计算机程序设计的一种语言,它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
也正因为这样,C语言得到飞速的发展,也成为最受欢迎的程序设计语言之一。
通过对C语言的学习,并将运用所学的知识与现实的生活联系起来,通过对通信录管理系统的开发来更深刻地理解C语言强大的功能。
关键词:
输入记录,显示记录,删除记录,保存记录。
一.引言
对于现代社会而言,人与人的交往越来越多,通信录就是方便个人或企业联系时的一种简单的、实用的记事载体。
而现在而言,对于以往的纸质的通信录使用起来,在查找信息,管理各个方面,都远远不能满足需求了。
因此,需要去开发新的类型的通信录,如电子通信录、手机通信录和网络通信录。
而电子通信录可以利用C语言来编写。
通过对C语言的学习,这样就有必要与现实生活联系起来,设计一个通信录管理系统,对通信录进行必要的管理,为实现快速查询、插入、排序等功能提供方便。
二.实现原理
1.算法分析:
对于主函数main()来说,使用了一个do····while循环语句,用来在屏幕上显示主菜单,这里提供了用户输入数字选择要做的操作,这样做能达到简单方便的效果。
Enter()这个函数是用来初始记录的输入的,输入的记录按照一行一条的格式输入,每个数据之间用空格键隔开,较为清晰,且能反应数据之间的关系.本来在这里可以使用for语句来循环n次,但我却直接使用输入·输出函数来实现,这样也有一点好处,可以对输入的记录数不受限制,可以无限地地输下去。
Del()函数是用来删除记录的,这里需要调用现示函display(),还要调用search()函数来对查询显示出的记录进行删除,接着就会显示确认删除的选择,Y表示“是”,N表示“否”。
如果输入Y,则确认删除这条记录。
删除数组中的某一条记录,实际所做的操作是将其后的记录依次前移一条,所以删除第j条记录,即从第j+1开始,依次将每个字段拷贝到前一条记录的相应的字段,即覆盖了前一条记录,达到迁移的目的,知道最后一条记录。
这里只要使用一个for循环控制语句就行了。
Save()函数是用来对输入的数据进行保存的,先定义一个指向文件的指针,提示用户输入一个文本文件名及路径,按照“wb”写的方式打开该文件。
文件名可以自己定义的。
如果文件不存在的话,系统会自动创建该文件。
然后确定文件的打开方式,如果文件不能正常打开,则退出程序。
Modify()函数是用来对记录进行修改的,首先要打开记录所保存的文件,这里主要就是使用if的判断语句,并嵌套一个while循环语句来实现对文件打开与保存。
2.实现这个算法的技术的难点:
主函数的设计主要是用来实现主菜单的界面,在菜单中选择各种选项,首先要使用输出函数printf来输出菜单上的各种选项,再使用的是switch····case来控制菜单选项的具体功能。
刚开始的时候,总是会造成死循环。
到后来慢慢地调试,把这种情况解决了,当使用for(;;)这样是无限循环下去。
3.流程图:
主菜单的流程图:
输入模块:
修改模块:
删除模块:
保存模块:
4.数据字典:
首先要定义一个结构体变量,如下:
structcontacks
{charname[20];
charmobile[15];
charunits[30];
charEmail[20];
charstreet[20];
}con[105];
这些是用在整个程序之中的,用来对通信录里的详细信息的保存,这个结构体变量是整个程序数据的核心,也是该程序的生命。
没有这个,整个程序都无法运行。
定义几个全局变量intm,k=0;longoffset;和字符数组charnamekey[8];并定义FILE*fp;,指针来对文件的打开以及保存。
在主函数main()中,定义局部变量a来对输入项进行选择,来选择菜单上的项目,
在enter()函数中,定义字符数组charch[20]判断信息的输入以及确定最终的输入。
5.开发环境:
作为中国人的我们,当然是使用win-TC了,这样使用起来方便多了,检查错误的时候也知道是什么错误啊。
三.小结:
把每一个函数模块连接起来,组装起来,对函数各项功能的运行情况进行测试,观察运行结果是否正确。
最终做成了这个简单的通信录管理系统,实现了最基本的输入,显示,删除,修改及保存等功能。
通过这个系统的开发过程,对C语言有了更深的了解,也对C语言的强大功能进一步的了解,实现了学习的C语言与生活实际相结合的理念。
是一次非常有意义的过程。
对于这个系统存在的问题需要改善,考虑一下几个方面:
1.本系统现在暂时只能在dos环境下运行,要把它转换成windows环境下会显得更加一目了然,更加简便,但由于现在水平有限,暂时还转换不过来。
2.本系统对输入的记录数也是有一定的限度,如果要增加输入记录数,要有一点的改进,如果要设计对记录数没有限制,仅受存储容量的限制,应该如何改进,主要考虑记录的存储方式。
3.目前每条记录的存储信息比较少,如何改进,增加更多的存储信息。
4.目前一条记录只能存储一个人的一个电话,如何解决可以存储一个人的多种联系方式。
5.用户界面现在还不够完美,如何对这个系统的界面进行美化。
经过一个多星期的精心策划,收集资料,最终完成了这个简易的通信录管理系统的开发,虽然结果往往不是十分令人满意,但过程确实十分艰辛的,也是十分有意义的,我也为自己的付出感到无比的欣慰,任何一科的学习,经过实际的运用,就会觉得学有所用,这样的学习才是充满意义的。
通过这次的课程设计,对C语言的一些基本知识,一些最基本的函数,对整个系统的开发过程都有了更深刻的理解,并学会了一个系统的开发需要划分若干个模块,并且能多人合作完成一个项目的开发,最终组合起来进行整体测试。
在开发过程中也得到多个同学以及老师的精心帮助,才可以完成这个艰巨的任务。
在此也对他们表示衷心的感谢!
如今终于告别这个艰巨而又有意义的过程,觉得此时非常的轻松,同时也意味着一个学期结束了,学校的生活暂时告一段落,但学习并未停止,在以后的日子中还有更多的学习任务等着我们。
希望大家都不要放弃,继续努力,以图更大的发展。
最后,预祝老师和同学们能过一个愉快的寒假!
三.参考文献:
书名作者出版社期刊号
C语言程序设计教程徐士良人民邮电出版社9787115200051
C语言程序设计教程(第3版)张建勋,纪纲清华大学出版社730216813X
四.源程序清单:
#include
#include
#include
#include
structcontacks
{charname[20];
charmobile[15];
charunits[30];
charEmail[20];
charstreet[20];
}con[105];
intm,k=0;
longoffset;
charnamekey[8];
structcontacksone;
charfilename[20]=":
\\book.txt";
FILE*fp;
voidenter();
voiddisplay();
voiddel();
voidsave();
voidmodify();
voidmain()
{
inta;
do
{
printf("\n\n------------------------------------------------------------------\n");
printf("-");printf("\t\ttongxinluguanlixitong");printf("\t\t-");
printf("\n-----------------------------------------------------------------\n");
printf("-");printf("\t1.Accessinformation");printf("\t\t\t\t\t-\n");
printf("-");printf("\t2.displayinformation");printf("\t\t\t\t-\n");
printf("-");printf("\t3.modifyinformation");printf("\t\t\t\t\t-\n");
printf("-");printf("\t4.Deleteinformation");printf("\t\t\t\t\t-\n");
printf("-");printf("\t5.Savetheinformation");printf("\t\t\t\t-\n");
printf("-");printf("\t5.exit");printf("\t\t\t\t\t-\n");
printf("------------------------------------------------------------------\n");
printf("Enteryouchoice:
");
scanf("%d",&a);
switch(a)
{
case1:
printf("\n");enter();break;
case2:
printf("\n");display();break;
case3:
printf("\n");modify();break;
case4:
printf("\n");del();break;
case5:
printf("\n");save();break;
case6:
printf("\n");exit(0);break;
default:
printf("\nThechoiceisbetween1to6.\n");
}
}while(a!
=0);
}
voidenter()
{
charch[20];
printf("\nenterinformation:
\n");
do
{printf("\nname:
");
scanf("%s",con[k].name);
printf("mobile:
");
scanf("%s",con[k].mobile);
printf("\nunits:
");
scanf("%s",con[k].units);
printf("\nEmail:
");
scanf("%s",con[k].Email);
printf("\nstreet:
");
scanf("%s",con[k].street);
k++;
printf("\nifwantcontinueinputstudentinformation(y/n):
");
scanf("%s",ch);
}while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);
display();
}
voiddisplay()
{inti;intm;
printf("theinformationis:
\n");
printf("\r-------------------------------------------------------------------------------\n\r");
printf("\namemobileunitsEmailstreet\n");
for(i=0;i {printf("%10s%15s%15s%14s%14s",con[i].name,con[i].mobile,con[i].units,con[i].Email,con[i].street); printf("\n");} } voidmodify() { intm,k=0; longoffset; charnamekey[8]; structcontacksone; printf("\npleaseinputname\n"); scanf("%s",namekey); if((fp=fopen("book.txt","r+"))==NULL) { printf("\ncannotopen\n"); } while(! feof(fp)) { offset=ftell(fp); fscanf(fp,"%s%s%s\n",one.name,one.mobile,one.units,one.Email,one.street); if(! strcmp(namekey,one.name)) { k=1; break; } } if(k) { printf("\ntheinformationis\n"); printf("\n%-10s%-18s%-15s%-15s%-50s",one.name,one.mobile,one.units,one.Email,one.street); printf("\npleaseinputinformation: "); scanf("%s%s%s%s%s",one.name,one.mobile,one.units,one.Email,one.street); fseek(fp,offset,SEEK_SET); printf("%ld",ftell(fp)); fprintf(fp,"%-10s%-20s%-15s%-15s%-50s\n",one.name,one.mobile,one.units,one.Email,one.street); } else printf("\thereisnotthisperson\n"); fclose(fp); } voiddel() { inti,j; charc[20]; printf("\nenteryouwantdeletename: \n"); printf("name: "); scanf("%s",&c); for(i=0;i if(strcmp(c,con[i].name)==0)break; for(j=i;j<=2;j++) con[j]=con[j+1]; printf("\t\t\tyouhaddelete%s\n",c); k--; display(); } voidsave() {FILE*fp;inti; if((fp=fopen("book.txt","w"))==NULL) {printf("cannotwritethefile.\n"); exit(0);} for(i=0;strlen(con[i].name)! =0;i++) printf("\namemobileunitsEmailstreet\n"); fprintf(fp,"%s%s%s%s%s\n",con[i].name,con[i].mobile,con[i].units,con[i].Email,con[i].street); fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程设计