已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计文档课程名称: 程序设计语言课程设计 设计题目 : 通讯录 一、 文档的结构(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;i50;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,);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(0j&j=i)void append(int j); num1=i+1;strcpy(name1,); 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;ji;j+) if(strcmp(,friendsj+1.name)0) printf(nt排序为:);printf(nnt编号-nnumber: %3d,friendsj.num);printf(nt姓名-name:%-20s,);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+1.name)=0)printf(nt排序为:);printf(nnt编号-nnumber: %3d,friendsj.num);printf(nt姓名-name:%-20s,);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,);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.numfriendsj+1.num) printf(nt排序为:);printf(nnt编号-nnumber: %3d,friendsj.num);printf(nt姓名-name:%-20s,);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,);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,);fflush(stdin); printf(ttt联系电话-telephone:); scanf(%s,friendsj.telephone);p=friendsj.telephone; for(x=0;x=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=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;ji+1;j+) /插入位置后的元素顺序后移strcpy(,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-11)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(ik;j-) strcpy(,); /数据后移friendsj.telephone=friendsj-1.telephone;friendsj.address.postnum=friendsj-1.address.postnum;strcpy(friendsj.address.a,friendsj-1.address.a);strcpy(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《焊接自动化技术》教学大纲
- 点金术课件教学课件
- 玉溪师范学院《社会体育指导员一级》2022-2023学年第一学期期末试卷
- 防疫和应急演练方案及流程
- goodhabits课件教学课件
- 项目建议书与可研报告编制大纲及二者区别
- 特殊气候条件下施工方案
- 2024年二季度碳交易市场运行与政策盘点-碳价突破百元 碳市场扩容在即
- 2024年薯、豆相关植物加工品项目成效分析报告
- 2019粤教版 高中美术 选择性必修2 中国书画《第五单元 以形写神的人物画》大单元整体教学设计2020课标
- 化验岗位应急处置卡
- 临床教学能力师资培训考试测试题
- 癫痫临床表现及护理课件
- 《旅行社经营与管理》教学课件汇总全套电子教案(完整版)
- 消防工程技术标书(暗标)
- 新北师大版七年级下册英语(全册知识点语法考点梳理、重点题型分类巩固练习)(家教、补习、复习用)
- Unit 6 Longji Rice Terraces课件-外研版高中英语必修第一册
- 福建师范大学《计算机应用基础》3答卷答案
- 发电机定冷水系统中铜含量异常处理及原因分析
- 透视现象的课件
- 定向越野教程-中国定向运动协会PPT课件[通用]
评论
0/150
提交评论