通讯录设计[1]

  • 格式:doc
  • 大小:92.50 KB
  • 文档页数:17

一、课程设计的内容设一个通信录由以下几项数据信息构成:数据项类型姓名字符串地址字符串邮政编码字符串电话号码字符串试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。

二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6) 附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排五、应收集的资料及主要参考文献[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学出版社,2005.9[2] 谭浩强. C程序设计题解与上机指导(第三版)[M],北京:清华大学出版社,2005.7[3]王喜文. C程序设计,网页设计程序,2006.7发出任务书日期:2007年 6 月18 日指导教师签名:计划完成日期:2007年 6 月22 日基层教学单位责任人签章:主管院长签章:目录1 设计目的与要求………………………………………………………………页码2 总体设计………………………………………………………………………页码3 详细设计………………………………………………………………………页码3.1功能模块设计………………………………………………………………页码3.1.1 XX功能模块(可选) …………………………………………………页码3.1.1 YY功能模块(可选) …………………………………………………页码3.1.1 ZZ功能模块(可选)…………………………………………………页码3.2数据结构设计………………………………………………………………页码4调试分析……………………………………………………………………页码5 总结……………………………………………………………………………页码6 附录……………………………………………………………………………页码6 答辩记录(正文处请留出适当空白)………………………………………页码7 指导教师意见(正文处请留出十行空白)…………………………………页码1 目的与要求设一个通信录由以下几项数据信息构成:数据项类型姓名字符串地址字符串邮政编码字符串电话号码字符串试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。

2 总体设计3 详细设计(内容可以适当调整,清晰的有条理的把你的设计思路表达出来)3.1功能模块设计3.1.1 XX功能模块(可选)3.1.2 YY功能模块(可选)3.1.3 ZZ功能模块(可选)3.2数据结构设计(可选)1 主要函数及模块此程序包含了六个子函数,它们分别为:void creat();void output();void search();void append();void modify();void delete();它们分别为“创建”,“输出”,“查找”,“添加”,“修改”,“删除”的驱动程序。

此函数中有一个结构体struct person{char name[10];char number[15];char tel[15];char addr[30];};主要的函数语句有:if((fp=fopen(filename,"rb+"))==NULL)while(!feof(fp))if(!strcmp(namekey,))fseek(fp,offset1,SEEK_SET)其中还用到了fprintf,fopen,fclose,ftell,feof等函数。

4 调试分析5 总结7.附录1 源程序代码/*通讯录程序*/#include<stdio.h> /*I/O函数*/#include<process.h>/*包含exit函数*/#include<string.h>/*字符串函数*/struct person/*定义一个结构体,结构体内元素为数组*/{char name[10];/*姓名*/char number[15];/*学号*/char tel[15];/*电话*/char addr[30];/*地址*/};char filename[12];FILE *fp;/*定义一个指针*/void creat();/*创建一个通讯簿*/void output();/*输出通讯录中所含资料*/void append();/*添加函数*/void search();/*查找函数*/void Delete();/*删除函数*/void modify();/*修改函数*//*以下是主函数*/main(){int m;/*定义一个整数*/creat();while(1)/*括号中为1代表无限循环*/{printf("\n\n添加同学地址,请按1");printf("\n查找同学地址,请按2");printf("\n修改同学地址,请按3");printf("\n删除原来地址,请按4");printf("\n输出所有地址,请按5");printf("\n退出本通讯录,请按0\n");scanf("%d",&m);if(m>=0&&m<=5){switch(m)/*调用主菜单函数,返回值整数作开关语句的条件*/ {case 1: append();/*往通讯录中添加*/break;case 2: search();/*在通讯录中查找*/break;case 3: modify();/*修改通讯录中资料*/break;case 4: Delete();/*删除通讯录中资料*/break;case 5: output();/*输出通讯录中所有名单*/break;case 0: exit(0);/*退出运行程序*/}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}/*****************进入菜单函数****************/void creat(){struct person one;printf ("\n*********广东工业大学通讯录********");printf("\n请输入通讯簿名:*");scanf("%s",filename);if((fp=fopen(filename,"rb+"))==NULL)/*用读写打开一个二进制文件,同时检验通讯录中是否存在此文件*/{printf("\n请输入准确的通讯录名");printf("\n请重新输入");exit(0);/*退出此程序*/}fprintf(fp,"%-10s%-15s%-15s%-30s\n","姓名","学号","电话号码","住址");/*把数据输出到fp所指定的文件中*/printf("\n请输入姓名、电话号码及住址(后加0可进入选择)或者按“0”直接进入选择\n");scanf("%s",);while( strcmp(,"0"))/*将输入的与数据比较,若正确,返回0*/{scanf("%s%s%s",one.number,one.tel,one.addr);fprintf(fp,"%-10s%-12s%-12s%-30s\n",,one.number,one.tel,one.addr);/*将输入的数据输出到fp所指文件中*/scanf("%s",);}fclose(fp);/*关闭所指文件,释放文件缓冲区,并返回值*/}/******************输出函数********************/void output(){struct person one;if((fp=fopen(filename,"r"))==NULL)/*用输入打开一个文本文*/{printf("\n不能打开通讯簿!");exit(0);}printf("\n\n%12s\n","通讯簿");while(!feof(fp))/*检验fp所指文件是否结束,此为一个循环语句*/{fscanf(fp,"%s%s%s%s\n",,one.number,one.tel,one.addr);/*从fp所指文件中读出数据*/ printf("\n%-10s%-15s%-15s%-30s\n",,one.number,one.tel,one.addr);/*输出上面读出数据*/}fclose(fp);/*关闭所指文件,释放文件缓冲区,并返回值*/}/*****************添加函数*************************/void append(){struct person one;if((fp=fopen(filename,"a"))==NULL)/*向二进制文本尾追加数据*/{printf("\n不能打开通讯簿!");exit(0);}printf("\n请输入添加的姓名、电话号码及住址\n");scanf("%s%s%s%s",,one.number,one.tel,one.addr);fprintf(fp,"%-10s%-12s%-12s%-30s\n",,one.number,one.tel,one.addr);fclose(fp);}/*****************查找函数*************************/void search(){int k=0;char namekey[8];struct person one;printf("\n请输入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL)/*为输入打开一个二进制文件*/{printf("\n不能打开通讯簿!");exit(0);}while(!feof(fp)){fscanf(fp,"%s%s%s%s\n",,one.number,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\n恭喜!记录为:\n");printf("\n%-10s%-12s%-12s%-30s\n","姓名","学号","电话号码","住址");printf("\n%-10s%-12s%-12s%-30s",,one.number,one.tel,one.addr);k=1;}}if(!k)printf("\n\n对不起,通讯簿中没有此人的记录。