欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    程序设计语言课程设计-通讯录.doc

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

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

    程序设计语言课程设计-通讯录.doc

    课程设计文档课程名称: 程序设计语言课程设计 设计题目 : 通讯录 一、 文档的结构(1).课程设计目的和要求:通讯录1. 添加2. 查询3. 删除4. 修改5. 排序6. 输出全部信息7. 写入文件8. 读取文件0. 退出程序的主界面1. 设计要求:基本功能:a) 添加个人信息b) 查询个人信息c) 删除个人信息d) 修改个人信息e) 信息排序f) 输出全部信息 拓展功能: 采用文件形式对通讯录进行操作,包括:a) 写入文件b) 读取文件 创新(自拟)功能:程序实现的其它功能由个人自拟。2. 设计要求具体说明通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。输入信息时要检查数据项手机、邮编、E-mail的合法性,手机号码:11位数字;邮编:6位数字;E-mail:包含字符,且两边都非空。对通讯录应该包含有以下操作(包括基本功能和拓展功能):a) 向通讯录中添加信息;b) 在通讯录中按姓名或手机号查找个人信息;c) 删除通讯录中的个人信息;d) 修改通讯录中的个人信息,并保存入文件;e) 按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量没有限制。f) 将通讯录中的数据写入文件和从文件读入数据。程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容; 二为只将本次操作所修改的个人信息写入文件g) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示退出程序。(2).课程设计任务内容;本程序分成读取,排序,写入等十个部分。其中排序分为按姓名排序和按序号排序。其他模块如其名称所示,功能分别为:读取,排序,写入,插入,删除,查询,修改,保存,拷贝,退出。(程序结构功能如图1所示)数据项:姓名,家庭住址,手机号码,邮编,E-mail。对通讯录应该包含有以下操作(包括基本功能和拓展功能):h) 向通讯录中添加信息;i) 在通讯录中按姓名或手机号查找个人信息;j) 删除通讯录中的个人信息;k) 修改通讯录中的个人信息,并保存入文件;l) 按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量没有限制。m) 将通讯录中的数据写入文件和从文件读入数据。(3).详细设计说明;通讯录读取排序写入插入删除查询修改保存拷贝退出图1图1程序结构功能程序(标识符)设计说明 写入编号姓名性别电话生日邮编地址图21 写入模块:写入模块下包括编号,姓名等七个模块。由用户输入信息。(模块图如图2所示)Y写入输入编号,姓名,性别,电话,生日,邮编,地址是否继续退出N2 读取模块:输出由先前用户输入全部的信息。3排序模块:将先前用户所输入的信息进行排序,有按姓名进行排序和按序号进行排序两种选择。排序输入1.按姓名2.按序号3.返回按姓名进行排序按序号进行排序1.按姓名2.按序号3返回结束主菜单4插入模块:在已有的信息中插入新的信息。5删除模块:将已输入的信息进行删除。6查询模块:查找已输入信息。查询输入姓名是否存在输出结束是否7修改模块:将已有的信息进行修改并保存。修改输入修改学生序号输出新资料结束处理符合YN 8保存即读入模块:将用户所输入的信息进行保存。9拷贝模块:将用户所输入的信息进行有选择性的拷贝复制。10退出模块:即退出程序。 (4).软件使用说明;此软件有读取,排序,写入,插入,删除,查询,修改,保存,拷贝,退出时项功能。可以将用户输入的信息进行两种排序,并且可以进行修改,删除,拷贝等。而且根据姓名进行查找和删除。并将用户所输入的信息进行保存。(5).课程设计总结;经过这两个星期的课程设计让我对C语言有了一个更深的了解,虽然我现在不能够熟练的掌握无法在短时间内编成一个完美的程序,但是通过看资料,查询相关信息以及和同学们的讨论还是可以进一步的完善自己的知识,对C语言有个进一步的了解。这两个星期以来的学习,编程中遇到了不少问题,尤其是在排序这一块,遇到了不少问题,无法顺利进行。终于在和同学们一起努力以及问老师终于将问题解决了。两个星期的学习让我受益匪浅,这两星期让我过的很充实。附录1 参考文献参考文献1谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2005 2谭浩强. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 20053 Herbert Schildt. C语言大全(第四版). 北京:电子工业出版社, 20044Samuel P.Harbison ,Guy L.Steele. C语言参考手册(第5版). 北京:机械工业出版社,2003  5张建勋. C语言程序设计教程. 北京:清华大学出版社, 2008.26崔武子. C程序设计教程(第2版). 北京:清华大学出版社, 2007.6(第2版)1. 附录2 程序清单(有较详细的注释)/-#include "stdlib.h"#include "string.h"#include "conio.h" #include "stdio.h"#include "dos.h" /-FILE *fp;int i;struct address int inumber; /编码char postnum7; /邮编 char a40; /家庭地址;struct ffriend int num; /序号char name20; /姓名 char tmp50; char emil30; /邮箱 char telephone12; /电话号码 struct address address;struct record; friends50; /-void Load() int j;long k;fp=fopen("friend.txt","a+"); /打开文件friend.txt if(fp!=NULL) for(i=1;i<50;i+) j=fgetc(fp);if(j=EOF) /判断是否到了文件尾return;k=i-1;fseek(fp,k*sizeof(struct ffriend),SEEK_SET);fread(&friendsi,sizeof(struct ffriend),1,fp); /从文件中读取一条记录else fp=fopen("friend.txt","w");i=1;/-void Show(int j) /显示 / friendsj.num=i;printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); /-void Copy() /拷贝 int j,num1; char name120,telephone112,a140,postnum17,emil130; printf("输入拷贝的序号:");scanf("%d",&j); if(0<j&&j<=i)void Append(int j); num1=i+1;strcpy(name1,friendsj.name); strcpy(telephone1,friendsj.telephone); strcpy(postnum1,friendsj.address.postnum);strcpy(a1,friendsj.address.a);strcpy(emil1,friendsj.emil);printf("n已经拷贝编号为%d的通讯录n",num1);printf("n按回车键回到主菜单."); getchar(); getchar(); return ; elseprintf("输入序号不合适!"); /- void listbyname()/按姓名排序 int j;for (j=1;j<i;j+) if(strcmp(friendsj.name,friendsj+1.name)<0) printf("nt排序为:");printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); printf("nnt编号-Nnumber: %3d",friendsj+1.num);printf("nt姓名-Name:%-20s",friendsj+1.name);printf("nt手机号-Telephone:%-13s",friendsj+1.telephone);printf("nt邮编-Postnum:%-10s",friendsj+1.address.postnum);printf("nt通信地址-address:%-40s",friendsj+1.address.a);printf("nt邮件-emil:%-10s",friendsj+1.emil); else if(strcmp(friendsj.name,friendsj+1.name)=0)printf("nt排序为:");printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); printf("nnt编号-Nnumber: %3d",friendsj+1.num);printf("nt姓名-Name:%-20s",friendsj+1.name);printf("nt手机号-Telephone:%-13s",friendsj+1.telephone);printf("nt邮编-Postnum:%-10s",friendsj+1.address.postnum);printf("nt通信地址-address:%-40s",friendsj+1.address.a);printf("nt邮件-emil:%-10s",friendsj+1.emil); elseprintf("nt排序为:");printf("nnt编号-Nnumber: %3d",friendsj+1.num);printf("nt姓名-Name:%-20s",friendsj+1.name);printf("nt手机号-Telephone:%-13s",friendsj+1.telephone);printf("nt邮编-Postnum:%-10s",friendsj+1.address.postnum);printf("nt通信地址-address:%-40s",friendsj+1.address.a);printf("nt邮件-emil:%-10s",friendsj+1.emil);printf("nt排序为:n");printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); /-void listbyid()/按序号排序 int j; for (j=1;j<=i;j+) if(friendsj.num<friendsj+1.num) printf("nt排序为:");printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); printf("nnt编号-Nnumber: %3d",friendsj+1.num);printf("nt姓名-Name:%-20s",friendsj+1.name);printf("nt手机号-Telephone:%-13s",friendsj+1.telephone);printf("nt邮编-Postnum:%-10s",friendsj+1.address.postnum);printf("nt通信地址-address:%-40s",friendsj+1.address.a);printf("nt邮件-emil:%-10s",friendsj+1.emil); elseprintf("nt排序为:");printf("nnt编号-Nnumber: %3d",friendsj+1.num);printf("nt姓名-Name:%-20s",friendsj+1.name);printf("nt手机号-Telephone:%-13s",friendsj+1.telephone);printf("nt邮编-Postnum:%-10s",friendsj+1.address.postnum);printf("nt通信地址-address:%-40s",friendsj+1.address.a);printf("nt邮件-emil:%-10s",friendsj+1.emil);printf("排序为:n");printf("nnt编号-Nnumber: %3d",friendsj.num);printf("nt姓名-Name:%-20s",friendsj.name);printf("nt手机号-Telephone:%-13s",friendsj.telephone);printf("nt邮编-Postnum:%-10s",friendsj.address.postnum);printf("nt通信地址-address:%-40s",friendsj.address.a);printf("nt邮件-emil:%-10s",friendsj.emil); /-void Append(int j) int x,n=0; char *p,*q,*r;fflush(stdin); friendsj.num=j;printf("nttt序号-Number:%d",j);printf("nttt姓名-Name:"); scanf("%s",friendsj.name);fflush(stdin); printf("ttt联系电话-telephone:"); scanf("%s",friendsj.telephone);p=friendsj.telephone; for(x=0;x<11;x+) /*判断手机号是否均为数字且有11位*/ if(px>='0'&&px<='9') ; else printf("输入的手机号不合理,请重新输入:"); scanf("%s",friendsj.telephone); printf("ttt邮编-Postnumber:"); scanf("%d",friendsj.address.postnum);q=friendsj.address.postnum; for(x=0;x<6;x+) /*判断邮编是否均为数字且有6位*/ if(qx>='0'&&qx<='9') ; else printf("输入的邮编不合理,请重新输入:"); scanf("%s",friendsj.address.postnum); printf("ttt通信地址-Address:"); scanf("%s",friendsj.address.a);printf("ttt邮件-Emil:");scanf("%s",&friendsj.emil);r=friendsj.emil; for(x=0;rx!='0'x+) /*判断是否包含且两边非空*/ if(rx='') n+; if(n!=1) printf("输入的邮编不合理,请重新输入:"); scanf("%s",friendsj.emil);/-void Delete() /删除 int k;printf("ntDelete 序号-Number:"); /输出删除序号 scanf("%d",&k);if(k<=i)for(int j=k;j<i+1;j+) /插入位置后的元素顺序后移strcpy(friendsj.name,friendsj+1.name); /交换元素内容friendsj.telephone=friendsj+1.telephone;friendsj.address.postnum=friendsj+1.address.postnum;strcpy(friendsj.address.a,friendsj+1.address.a);strcpy(friendsj.emil,friendsj+1.emil);i-; elseprintf("输入的序号太大!"); /-void Modify(int j) Append(j);/-void Save() int j;fp=fopen("friend.txt","w");for(j=1;j<=i;j+) fwrite(&friendsj,sizeof(struct ffriend),1,fp);fclose(fp);/-void main()int j,num;char grade;char searchname10;Load();i-;do printf("tttt简易通讯录nn");printf("tt*n"); printf("tt* 功能选择(Function choose) *n");printf("tt* 1 1.读取(Read) *n");printf("tt* 2 2.排序(List) *n");printf("tt* 6 3.写入(Append) *n");printf("tt* 3 4.插入(Insert) *n");printf("tt* 4 5.删除(Delete) *n");printf("tt* 5 6.查询(Search) *n");printf("tt* 6 7.修改(Modify) *n");printf("tt* 2 8.保存(Save) *n");printf("tt* 3 9.拷贝(Copy) *n");printf("tt* 1 0.退出(Quit) *n");printf("tt*n"); printf("tt请选择(Choice)ntt注:输入09:");scanf("%s",&grade); switch(grade) case '1': j=1; /读取功能 while(getchar()!=0x1b&&j<=i) Show(j+);printf("n请按回车键继续!");if(j-1<1)printf("nt空文档,无任何记录-Empty Noten");printf("n请按回车键继续!");getchar();printf("nttttttt此次操作结束");printf("nt-ttn");break;case '2': /排序功能 char grade; if(i=0) printf("ntt对不起,文件中无任何纪录"); printf("ntt按任意键返回主菜单"); getchar(); system("cls"); printf("nt*"); printf("nt* 1.按序号排序 *");printf("nt* 2.按姓名排序 *");printf("nt* 3.返回主菜单 *"); printf("nt*"); printf("nt请选择(Choice)nt注:输入13:"); scanf("%s",&grade);switch(grade) case '1':listbyid();printf("nt-ttn");main();break; case '2':listbyname();printf("nt-ttn");main();break; case '3':main();break;default :printf("ntt输入有误,请输入正确的选择!");printf("nt-ttn");main(); case '3': /写入功能while(i<=50) i+;Append(i);printf("t是否继续增加?y/n:");getchar(); char a=getchar();if(a='n'|a='N')break; if(i=51)printf("nt文档已满,无法增加记录-note full");printf("nttttttt此次操作结束");printf("nt-ttn");getchar();break;case '4': /插入功能int k;printf("nt输入要插入的位置:"); scanf("%d",&k);j=i+1;friendsj.num=j;for(j;j>k;j-) strcpy(friendsj.name,friendsj-1.name); /数据后移friendsj.telephone=friendsj-1.telephone;friendsj.address.postnum=friendsj-1.address.postnum;strcpy(friendsj.address.a,friendsj-1.address.a);strcpy(friendsj.emil,friendsj-1.emil);Append(k);i+; printf("nttttttt此次操作结束");printf("nt-ttn");break; case '5': /删除功能 /增添随意删除多条记录的功能Delete();printf("tt已删除!"); if(i<1)printf("ntt没有记录-No recordsn");printf("ntt请按回车键继续!");getchar();getchar(); printf("nttttttt此次操作结束");printf("nt-ttn");break;case '6': /查询功能 printf("nt请输入要查询记录的相关姓名:"); /增添查询按列号的scanf("%s",searchname);for(j=1;j<=i;j+)if(strcmp(searchname,friendsj.name)=0) /比较字符串 Show(j); break;if(i<1) printf("n 没有您所查询的记录-No records");printf("n 请按回车键继续!");getchar();printf("nttttttt此次操作结束");printf("nt-ttn");getchar();break;case '7': /修改功能 /增添按序列号查询printf("nt请输入要修改记录的相关姓名:");gets(searchname);scanf("%s",searchname);for(j=1;j<=i;j+)if(strcmp(searchname,friendsj.name)=0) /比较字符串 Modify(j); / getchar(); /加个输出确定修改吗if(i<1) /修改功能 printf("n 没有您所要修改的记录-No records");printf("n 请按回车键继续!");getchar();getchar();printf("nttttttt此次操作结束");printf("nt-ttn");break;case '8': /存盘功能Save(); getchar();printf("nttttttt此次操作结束"); printf("nt-ttn");break;case '9': /拷贝功能 printf("请输入需要拷贝的序号:");scanf("%d",&j);if(j>i)printf("输入的序号太大!");elseCopy();Save();getchar(); break; case '0': /退出功能char x;printf("是否保存?yes/no:");scanf("%s",&x);/getchar();/ getchar();if(x='y') Save();

    注意事项

    本文(程序设计语言课程设计-通讯录.doc)为本站会员(哈尼dd)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开