欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新c通信录程序设计-课程设计报告.docx

    • 资源ID:34720912       资源大小:169.87KB        全文页数:23页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新c通信录程序设计-课程设计报告.docx

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec通信录程序设计-课程设计报告c通信录程序设计-课程设计报告学号2016-2016学年 第二学期1608220203高级语言程序设计课程设计报告题目:通信录程序设计专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:程庆成绩:计算机学院2017年4月25日目录1.设计内容及要求11.1、课程设计的内容11.2、课程设计的要求与数据12.概要设计13.设计过程或程序代码23.1 问题描述23.2 功能要求23.3 算法提示23.4 测试数据23.4课题的主要功能模块划分33.5主要功能的实现34.设计结果与分析154.1 程序调试154.2 程序实现154.3 总结165.参考文献17-1.设计内容及要求 1.1、课程设计的内容编写学生通信录程序,包括以下功能模块:1、通信录的每一条信息包括姓名、地址、邮政编码、电话号码。2、输入功能:可以一次完成若干条信息的输入。3、显示功能:完成全部通信录信息的显示。4、查找功能:完成按姓名查找通信信息,并显示。5、增加功能:增加通信信息。6、删除功能:完成按姓名删除通信信息。7、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 1.2、课程设计的要求与数据 1、要求利用结构化程序设计方法以及C的编程思想来完成系统的设计。 2、要求有菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可。 3、系统具有增加,查询,删除等基本功能; 4、模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。 5、完成设计任务并编写课程设计说明书。2.概要设计设计与开发一个通讯录管理系统,对通讯录中的姓名、单位、电话、QQ 、mail等基本信息进行管理、主要功能如下: 1)输入记录; 2)显示记录; 3)按姓名查找显示记录; 4)删除记录; 5)插入记录; 6)记录保存为文件; 7)从文件中读记录; 8)按姓名排序; 9)显示单条记录;3.设计过程或程序代码 3.1 问题描述 制作一个通讯录,要求该系统对通讯录的姓名,单位,电话,进行输入,显示 ,查找,删除,插入,保存等操作的管理。 3.2 功能要求1,本系统采用一个结构体数组,每个数据的结构应包括;姓名,单位,电话名称。 2, 本系统显示这样的菜单 请选择系统功能项 a 输入记录;b 显示全部纪录; c 查找记录; d 删除记录; e 插入记录; f 保存文件 ; g 读文件:(1)按序号显示记录;(2)按姓名排序;(3)快速查找记录;(4)复制文件。 3.3 算法提示1 数据结构;结构体类型数组。2 数据库结构;下表构成该系统的基本数据库。姓 名电 话学号3.4 测试数据姓名电话学号Zhang152························3.4课题的主要功能模块划分 3.5主要功能的实现3.5.1源程序#include <stdio.h>#include <conio.h> #include <string.h> #include <stdlib.h> #define N 100 int M=3; struct student char num10;char name10;char tel10; void myprint() system("cls"); printf(" |-|n"); printf(" | :-)请输入选项编号(0-7): |n"); printf(" |-|n"); printf(" |-1-创建通讯录-|n"); printf(" |-2-显示通讯录-|n"); printf(" |-3-查询通讯录-|n"); printf(" |-4-修改通讯录-|n"); printf(" |-5-添加通讯录-|n"); printf(" |-6-删除通讯录-|n"); printf(" |-7-排序通讯录-|n"); printf(" |-0-退出-|n"); printf(" |-|n"); void mycreat(struct student *p,int n) struct student *q=p; FILE *fp=NULL; fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=q;p-q<n;p+) printf("n"); printf("第%d条记录:n",p-q+1); printf("学号:"); do gets(p->num); while(strcmp(p->num,"")=0); printf("姓名:"); gets(p->name); printf("电话:"); gets(p->tel); fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); void mydisplay(struct student *p,int n) FILE *fp=NULL; fp=fopen("d:jilu.dat","r"); if(fp=NULL)printf("error"); return; system("cls"); printf(" 学号 姓名 电话n"); while(n>0) fscanf(fp,"%23s%15s%15s",p->num,p->name,p->tel); printf("%23s%15s%15sn",p->num,p->name,p->tel); p+;n-; void mysearch(struct student *p,int n) struct student *q=p; int flag=0; char c='0',nm10="",nam10="" printf("n按照学号查询(h)或姓名查询(m):n"); c=getche(); if(c='h'|c='H') printf("请输入要查询记录的学号:");gets(nm); for(p=q;p-q<n;p+) if(strcmp(nm,p->num)=0) printf(" 学号 姓名 电话n"); printf("%23s%15s%15sn",p->num,p->name,p->tel); flag=1; if(flag=0) printf("wrong.n"); else if(c='m'|c='M') printf("请输入要查询记录的姓名:");gets(nam); for(p=q;p-q<n;p+) if(strcmp(nam,p->name)=0) printf(" 学号 姓名 电话n"); printf("%23s%15s%15sn",p->num,p->name,p->tel); flag=1; if(flag=0) printf("wrong.n"); else printf("wrong.n"); void mymodify(struct student *p,int n) struct student *q=p; FILE *fp=NULL; char nam10="" mydisplay(p,n); printf("请输入您想要修改记录的姓名:n");gets(nam); for(p=q;p-q<n;p+) if(strcmp(nam,p->name)=0) break; if(p-q=n) printf("wrong."); else printf("请输入正确的学号:"); do gets(p->num); while(strcmp(p->num,"")=0); printf("请输入正确的姓名:"); gets(p->name); printf("请输入正确的电话:"); gets(p->tel); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); exit(0); for(p=q;p-q<n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); void myadd(struct student *p,int n) FILE *fp=NULL; struct student *q=p; char c='n',tempnum10="",tempname10="",temptel10="" printf("n"); while(strcmp(p->num,"")!=0) printf("%23s%15s%15sn",p->num,p->name,p->tel); p+; n=p-q; do printf("请输入新纪录的学号:"); do gets(tempnum); while(strcmp(tempnum,"")=0); printf("请输入新纪录的姓名:"); gets(tempname); printf("请输入新纪录的电话:"); gets(temptel); for(p=q;p-q<n;p+) if(strcmp(tempnum,p->num)=0|strcmp(temptel,p->tel)=0) printf("学号或电话号码需要重新输入吗(Y/N)?"); c=getche(); putchar('n'); break; if(p-q=n) strcpy(p->num,tempnum); strcpy(p->name,tempname); strcpy(p->tel,temptel); break; while(c='y'|c='Y'); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=q;p-q<=n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); M+; void mydelete(struct student *p,int n) FILE *fp=NULL; struct student *q=p; char c10="",tempnum10="",tempname10="",temptel10="",choose='0' mydisplay(p,n); printf("选择删除记录的方式:学号(h)姓名(m)"); choose=getche(); printf("n"); if(choose='m'|choose='M') printf("删除的记录:"); gets(c); for(;p-q<n;p+) if(strcmp(c,p->name)=0) break; if(p-q<n) for(;p-q<n-1;p+) strcpy(p->num,(p+1)->num); strcpy(p->name,(p+1)->name); strcpy(p->tel,(p+1)->tel); else printf("non"); else if(choose='h'|choose='H') printf("删除的记录:"); gets(c); for(;p-q<n;p+) if(strcmp(c,p->num)=0) break; if(p-q<n) for(;p-q<n-1;p+) strcpy(p->num,(p+1)->num); strcpy(p->name,(p+1)->name); strcpy(p->tel,(p+1)->tel); else printf("no"); else printf("wrongn"); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=q;p-q<n-1;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); M-; void mysort(struct student *p,int n) FILE *fp=NULL; struct student *q=p,*w=p,*a=p; char temp10="",c1='0',c2='0' mydisplay(p,n); printf("选择按照学号(h)或姓名(m)排序:n"); c1=getche(); if(c1='h'|c1='H') printf("升序(s)或者降序(j)排列:"); c2=getche(); if(c2='s'|c2='S') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->num,q->num)>0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else if(c2='j'|c2='J') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->num,q->num)<0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else printf("555wrong.n"); else if(c1='m'|c1='M') printf("升序(s)或者降序(j)排列:"); c2=getche(); if(c2='s'|c2='S') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->name,q->name)>0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else if(c2='j'|c2='J') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->name,q->name)<0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else printf("555wrong.n"); else printf("555wrong.n"); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=a;p-a<=n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); main() char choose='0',yes_no='0' struct student recordN=0; do myprint(); printf(" :-)请选择(0-7):"); choose=getche(); switch(choose) case '1':mycreat(record,M);break; case '2':mydisplay(record,M);break; case '3':mysearch(record,M);break; case '4':mymodify(record,M);break; case '5':myadd(record,M);break; case '6':mydelete(record,M);break; case '7':mysort(record,M);break; case '0':exit(0); default :printf("nerror.n"); printf("n :-)继续选择吗(y/n)?n"); do yes_no=getch(); while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); while(yes_no='Y'|yes_no='y'); 4.设计结果与分析 4.1 程序调试 先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点:应当采用结构化程序方法编程,以增加可读性;尽可能多加注释,以帮助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。二、在人工检查无误后,再上机调试。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。4.2 程序实现(1)功能通讯录的每一条信息包括学号、姓名、电话(字符数组)。1. 输入功能:可以一次完成若干条信息的输入。2. 显示功能:完成全部通讯录信息的显示。3. 查找功能:可以用学号或姓名分别完成按姓名查找每一个通讯信息,并显示新的通讯信息。4. 增加功能:可以无限增加学生数量。5. 删除功能:完成按姓名删除通讯信息 并显示新的通讯信息。6. 将通讯录信息存在文件d:jilu.dat中。7. 将通讯录信息保存到新的文件中。(2) 需要改进:不知道如何改变DOS界面的颜色,使界面更加完美;字体颜色也不知道如何改变。4.3 总结通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前。5.参考文献1 谭浩强著. C程序设计(第三版). 北京:清华大学出版社,20052 谭浩强著. C程序设计题解与上机指导. 北京:清华大学出版社,2005

    注意事项

    本文(最新c通信录程序设计-课程设计报告.docx)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开