C语言课程设计报告.doc_第1页
C语言课程设计报告.doc_第2页
C语言课程设计报告.doc_第3页
C语言课程设计报告.doc_第4页
C语言课程设计报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计报告课题名称 通讯录管理系统 姓 名 系 别 班 级 指导老师 日 期 江 海 职 业 技 术 学 院目 录一、 需求分析二、 概要设计1系统功能组成框图2模块功能说明三、 详细设计1. 数据结构设计 2主函数的设计 3输入模块的设计 4浏览模块的设计5查询模块的设计6. 插入模块的设计7. 删除模块的设计8、排序模块的设计9、修改模块的设计四、 设计及调试分析五、 用户手册六、 测试数据七、 心得体会八、 附录 附录1:程序代码 附录2:参考文献通讯录管理系统一、 需求分析1 操作对象有多个属性,故其类型为结构体类型2 多个对象数据的录入采用循环实现3 通讯录信息保存到文件中,涉及到文件的读写操作。4 排序操作可采用冒泡排序和选择法排序5 主函数中根据用户不同选择执行不同操作可通过“多分支选择语句switch”实现二、 概要设计1系统功能组成框图通讯录管理系统录入显示查询删除修改排序姓名升序姓名降序电话号码升序电话号码降序按姓名查询按电话号码查询2数据结构设计通讯录为结构体,成员包括姓名、电话号码、住址struct 结构体名 姓名类型定义; 电话号码类型定义; 住址类型定义; ;3模块功能说明本程序包括七个组要模块31主程序模块main() 清屏并显示主菜单提示用户选择所要执行的操作 根据用户的选择执行相应模块32录入模块实现通讯信息的录入33显示模块实现通讯录信息的显示34查询模块按用户指定要求(姓名或电话号码)查询指定对象的通讯信息35删除模块删除相应对象的通讯信息36修改模块修改相应对象的通讯信息37排序模块按用户指定要求(姓名或电话号码)将通讯信息进行排序三、 详细设计1、通讯录类型定义typedef struct person char name10; /* 姓名 */ char tel20; /* 电话号码 */ char addr50; /* 住址 */ PERSON;2、通讯录基本操作实现void showTitle(); /* 显示标题行 */void sortSubMenu(); /* 排序菜单 */void inputFileName(); /* 输入通讯录文件名 */void createBook(); /* 新建通信录 */void displayBook();/* 显示通信录信息*/void searchBook(); /* 按姓名查找记录 */void appendBook(); /* 添加记录 */void modifyBook(); /* 根据姓名修改记录 */void deleteBook(); /* 按姓名删除记录 */void saveBook(PERSON *, int); /* 保存通信录 */int loadBook(PERSON *); /* 装载通信录 */void swap(PERSON *, PERSON *); /* 交换记录 */void sDescByName(); /* 按姓名降序排序 */void sAscByName(); /* 按姓名升序排序 */void sDescByTelephone(); /* 按电话号码降序排序 */void sAscByTelephone(); /* 按电话号码升序排序 */3、程序详细代码/* 源程序名:myfile.C程序功能:编程建立一通讯簿,存放有姓名、电话号码、住址,完成新建、查找、添加、修改、删除及排序等功能。*/#include /* 标准I/O函数 */#include conio.h /* 屏幕操作函数 */typedef struct person char name10; /* 姓名 */ char tel20; /* 电话号码 */ char addr50; /* 住址 */ PERSON;char filename20;FILE *fp;void showTitle(); /* 显示标题行 */void sortSubMenu(); /* 排序菜单 */void inputFileName(); /* 输入通讯录文件名 */void createBook(); /* 新建通信录 */void displayBook(); /* 显示通信录信息 V1 */void dispBook();/* 显示通信录信息 V2*/void searchBook(); /* 按姓名查找记录 */void appendBook(); /* 添加记录 */void modifyBook(); /* 根据姓名修改记录 */void deleteBook(); /* 按姓名删除记录 */void saveBook(PERSON *, int); /* 保存通信录 */int loadBook(PERSON *); /* 装载通信录 */void swap(PERSON *, PERSON *); /* 交换记录 */void sDescByName(); /* 按姓名降序排序 */void sAscByName(); /* 按姓名升序排序 */void sDescByTelephone(); /* 按电话号码降序排序 */void sAscByTelephone(); /* 按电话号码升序排序 */* 输入通讯录文件名 */void inputFileName() printf(nInput FileName(请输入通讯录文件名):); scanf(%s,filename);/* 新建通信录 */void createBook() PERSON one;fp = fopen(filename, wb);if(fp= = NULL) printf(n不能建立通讯簿!); exit(0); clrscr();printf(nInput Name, Telephone, Address(0-End)请输入姓名、电话号码及住址(以0结束): n); scanf(%s, ); while(strcmp(, 0)!0) scanf(%s%s, one.tel, one.addr); fprintf(fp, %-10s %-20s %-50s, , one.tel, one.addr); scanf(%s, ); fclose(fp);/* 显示表头 */void showTitle() clrscr(); gotoxy(20, 5); printf(%sn,TXL(通 讯 簿); printf(%50sn,=); printf(%-10s%-20s%-50sn, Name, Telephone, Address);/* 交换记录*/void swap(PERSON *pi, PERSON *pj) PERSON temp; /* 临时变量做交换数据用 */ strcpy(, pi-name); strcpy(temp.tel, pi-tel); strcpy(temp.addr, pi-addr); strcpy(pi-name, pj-name); strcpy(pi-tel, pj-tel); strcpy(pi-addr, pj-addr); strcpy(pj-name, ); strcpy(pj-tel, temp.tel); strcpy(pj-addr, temp.addr);/* 保存函数,参数为指向结构体数组的指针和记录数 */void saveBook(PERSON *p, int recordNum) int i; FILE *fp; /*指向文件的指针*/fp = fopen(filename, wb);if(fp= = NULL) /*打开文件,并判断打开是否正常*/ printf(can not open filen);/* 打开文件出错 */ exit(1); /*退出*/ /* 保存文件信息 */ for(i = 0; i name, p-tel, p-addr); p+; fclose(fp);/*关闭文件*/* 读入函数,参数为指向结构体数组的指针,返回记录数 */int loadBook(PERSON *p) int recordNum; /* 统计记录数 */ FILE *fp; /* 指向文件的指针 */fp = fopen(filename, rb)if(fp= = NULL) /* 打开文件 */ printf(can not open filen); /*不能打开*/ exit(0); /*退出*/ recordNum = 0; while(feof(fp)!=1)/*未到文件末尾*/ fscanf(fp, %s%s%sn, p-name, p-tel, p-addr);/*从文件读入记录*/ p+; recordNum+; fclose(fp); return recordNum; /*返回记录数*/* 显示通信录信息,一次性读入后再显示,适用于小文件 */void displayBook() PERSON ones50; int count = 0;int recordNum;recordNum = loadBook(ones); /* 装载整个文件记录 */ showTitle(); while(count recordNum) printf(%-10s%-20s%-50s, , onescount.tel, onescount.addr); count+; if (!(count % 10) printf(nPress any key to continue.nn); getch(); showTitle(); getch();/* 按姓名查找记录 */void searchBook() int k=0; char namekey10;PERSON one; printf(n请输入姓名:); scanf(%s,namekey);fp=fopen(filename, rb);if(fp= =NULL) printf(n不能打开通讯簿!); exit(); while(!feof(fp)/*未到文件末尾*/ fscanf(fp, %s%s%sn, , one.tel, one.addr); if(strcmp(namekey,)= =0) printf(nn已查到,记录为:); printf(n%-10s%-18s%-50s, , one.tel, one.addr); k=1; if(k=0) printf(nn对不起,通讯簿中没有此人的记录。); fclose(fp); getch();/* 添加记录 */void appendBook()/* 按姓名修改记录 */void modifyBook() /* 按姓名删除记录 */void deleteBook()/* 选择排序 */* 按姓名进行降序排序 */void sDescByName() int i, j, k; int recordNum; /* 记录数 */ PERSON ones50; recordNum = loadBook(ones); /* 装载整个文件记录 */ for(i = 0; i recordNum - 1; i+) k = i; for(j = i+1; j recordNum; j+) if(strcmp(, ) AscByName 2 DescByName 3 AscByTelephone 4 DescByTelephone */void main()/*主程序*/ clrscr(); inputFileName(); char temp20,ch; while(1) clrscr(); /*清屏幕*/ gotoxy(1, 1); /*移动光标*/ textcolor(WHITE); /*设置文本显示颜色为白色*/ textbackground(BLUE); /*设置背景颜色为蓝色*/ window(1, 1, 99, 99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/ clrscr(); printf(nnnnn); printf(t* welcome to use TXL manage *n); printf(t* *n); printf(t* = *n); printf(t* *n); printf(t* 1 createBook 2 appendBook *n); printf(t* 3 searchBook 4 modifyBook *n); printf(t* 5 deleteBook 6 sortBook *n); printf(t* 7 displayBook 0 exit *n); printf(t* - *n); printf(t Please input which you want(0-7):); ch = getch(); switch(ch) case 1: createBook(); break; case 2: appendBook(); break; case 3: searchBook(); break; case 4: modifyBook(); break; case 5: deleteBook(); break; case 6: sortSubMenu(); break; case 7: displayBook(); break; case 0: e

温馨提示

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

评论

0/150

提交评论