C语言课程设计-通讯录管理系统说明书1(3)

2019-04-16 20:05

参考文献

[1]++程序设计教程 ,王连相,中国铁道出版社,2007 [2] C语言程序设计,谭浩强,清华大学出版社,1999

[3]C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 [4] C语言的实际应用,安徽科学技术出版社,2000 [5] C语言函数手册,机械工业出版社,1999

[6] C语言实用程序荟萃,西安电子科技大学出版社,1993

c

致 谢

在编写程序的过程中,我们得到了丁政建老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!

感谢我们小组同学对我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学习上帮我许多忙。

在课设即将完成之际,我的心情无法平静,从开始进入课题到课设的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。

附件Ⅰ 部分原程序代码

#include \标准输入输出函数库*/ #include \标准函数库*/ #include \字符串函数库*/

#define HEADER1 \--------------------------------所有记录--------------------------------- \\n\

#define HEADER2 \编号 | 姓名 | 电话号码 |年龄| 地址 | 邮箱 |\\n\

#define HEADER3 \|------|---------------|---------------|--- |----------|--------------------|\\n \

#define FORMAT \#define DATA p->data.num,p->data.name ,p->data. phone,p->data.age,p->data.address,p->data.email

#define END \

int save=0; /*是否需要存盘的标志变量*/ /*定义与联系人有关的数据结构*/

struct person /*标记为person*/ {

char num[6]; /*联系人编号*/ char name[15] ; /*联系人姓名*/ char phone[12]; /*联系人电话号码*/ int age; /*联系人年龄*/ char address[10]; /*联系人地址*/ char email[20]; /*联系人电子邮箱*/ };

/*定义每条记录或结点的数据结构,标记为:node*/ typedef struct node {

struct person data; /*数据域*/ struct node *next; /*指针域*/

}Node,*Link; /*Node为node类型的结构变量,*Link为node类型的指针变量*/

void menu() /*主菜单*/ {

printf(\(200704135086)的通讯录\\n\ printf(\

*************************Menu********************************\\n\

printf(\添加记录 2 删除记录 *\\n\ printf(\修改记录 4 查询记录 *\\n\ printf(\显示记录 6 保存记录 *\\n\

printf(\退出系统 *\\n\ printf(\

*************************************************************\\n\

}

void printhead() /*格式化输出表头*/ {

printf(HEADER1); printf(HEADER2); printf(HEADER3); }

void printdata(Node *pp) /*格式化输出表中数据*/ {

Node* p; p=pp;

printf(FORMAT,DATA); }

/*显示单链表l中存储的联系人记录,内容为person结构中定义的内容*/ void Disp(Link l) {

Node *p; p=l->next; /*l存储的是单链表中头结点的指针,该头结点没有存储联系人信息,指针域指向的后继结点才有联系人信息*/

if(!p) /*p==NULL,NUll在stdlib中定义为0*/ {

printf(\没有记录!\\n\ return; }

printf(\

printhead(); /*输出表格头部*/

while(p) /*逐条输出链表中存储的联系人信息*/ {

printdata(p);

p=p->next; /*移动直下一个结点*/ printf(HEADER3); } }

/************************************************************* 作用:用于定位链表中符合要求的节点,并返回指向该节点的指针

参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么查找; 在单链表l中查找;

**************************************************************/ Node* Locate(Link l,char findness[],char nameornum[]) {

*/

Node *r;

if(strcmp(nameornum,\按编号查询*/ {

r=l->next; while(r) {

if(strcmp(r->data.num,findness)==0) /*若找到findmess值的学号

return r; r=r->next; } }

else if(strcmp(nameornum,\按姓名查询*/ {

r=l->next; while(r) {

if(strcmp(r->data.name,findness)==0) /*若找到findmess值的联系人姓名*/

return r; r=r->next; } }

else if(strcmp(nameornum,\按地址查询*/ {

r=l->next; while(r) {

if(strcmp(r->data.address,findness)==0) /*若找到findmess值的联系人地址*/

return r; r=r->next; } }

return 0; /*若未找到,返回一个空指针*/ }

/*输入字符串*/

void stringinput(char *t,int lengths,char *attention) {

char n[255]; do{

printf(attention); /*显示提示信息*/ scanf(\输入字符串*/

if(strlen(n) > lengths)printf(\超过设定长度! \\n\进行长度校验,超过lengths值重新输入*/

}while(strlen(n) > lengths);

strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/ }

/*输入age中的数字*/

int numberinput(char *attention) {

int t=0;

printf(attention); scanf(\ return t; }

/*增加联系人记录*/ void Add(Link l) {

Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/ char flag=0,num[6]; r=l;

s=l->next;

Disp(l); /*先打印出已有的联系人信息*/ while(r->next!=NULL)

r=r->next; /*将指针移至于链表最末尾,准备添加记录*/

while(l) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/ {

while(l) /*输入学编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/

{

stringinput(num,6,\输入编号(按'0'返回主菜单):\格式化输入编号并检验*/

flag=0;

if(strcmp(num,\/*输入为0,则退出添加操作,返回主界面*/

{return;} s=l->next;

while(s) /*查询该编号是否已经存在,若存在则要求重新输入一个未被占用的学号*/

{

if(strcmp(s->data.num,num)==0) {


C语言课程设计-通讯录管理系统说明书1(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学数学课程实施方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: