基于c语言的通讯录设计附录,数据结构课程设计-通信录的制作(附录中有全部代码)....

《数据结构课程设计-通信录的制作(附录中有全部代码).》由会员分享,可在线阅读,更多相关《数据结构课程设计-通信录的制作(附录中有全部代码).(20页珍藏版)》请在人人文库网上搜索。

1、课程设计任务书 专业名称: 计算机科学与技术(软件工程) 课程名称: 数据结构课程设计 设计题目: 通讯录的制作 起止时间: 2013年 6月24日至 2013年7月 12日 问题描述 编写一个通讯录管理系统。 基本要求 1) 每条信息至少包含:姓名(name)、街道(street)、城市(city) 邮编(eip)、国家(state)这几项; 2) 作为一个完整的系统,应具有友好的界面和较强的容错能力; 3) 利用链表作为存储结构 4) 上机能正常运行 通信录的制作 1概要设计 该程序主要是解决用链表实现通讯录,并通过通讯录实现存取,显示,插 入、删除记录等问题,首先进行数据的录入,包括编号。

2、、姓名、性别、电话号 和地址;其次是显示之前所录入的信息,并通过编号或姓名进行查询;第三是 实现插入功能;第四是实现删除功能;之后是删除记录退出程序。 系统主要由五个函数组成:第一个函数是主函数主要功能主函数(main() 函数)是通过一个多分支语句(switch(i)语句)实现的。,第二个函数主要的功 能输入通讯录的信息包括编号、姓名、性别等,第三个函数通过编号或姓名查 询所有信息。第四个函数将新的信息插入到系统中。第五个函数通过编号或姓 名对所对应的通讯录信息进行删除。 系统主要由四个模块组成: 输入模块:输入通讯录的信息包括编号、姓名、性别等。 查询模块:通过编号或姓名查询所有信息。 插。

3、入模块:将新的信息插入到系统中。 删除模块:通过编号或姓名对所对应的通讯录信息进行删除。 录入信息模块 插入信息模块 查询信息模块 删除信息模块 主的数模块 图1模块图 n); );break; 2 详细设计 关键代码解析: 主函数 int main() Pointer Head=NULL; int i; do printf( 通讯录系统 printf(n); printf(1. 插入联系人信息 n); printf(2. 查找联系人信息 n); printf(3. 修改联系人信息 n); printf(4. 删除联系人信息 n); printf(5. 显示联系人信息 n); printf(6。

4、. 退出 n); scanf(%d, switch(i) case 1:Insert(break; case 2:Search(Head);break; case 3:Update(Head);break; case 4:Delete(break; case 5:Show(Head);break; case 6:break; default:printf( 输入错误!请重新输入! while(i!=6); return 0; void Insert(Pointer *Head) char in_name10; Pointer p,q,r; printf( 请输入姓名: ); scanf(%s,。

5、in_name); p=q=*Head; while(p!=NULL) q=p;p=p-next; r=(Pointer)malloc(sizeof(Link); r-next=NULL; if(r=NULL) printf( 分配空间失败! );return; if(q=NULL) *Head=r; q-next=r; strcpy(r-name,in_name); printf( 请输入街道: ); scanf(%s,r-street); printf( 请输入城市: ); scanf(%s,r-city); printf( 请输入邮编: ); scanf(%s,r-eip); print。

6、f( 请输入国家: ); scanf(%s,r-state); void Search(Pointer Head) int flag=1; char in_name10; Pointer p; printf( 请输入要查询的姓名: ); scanf(%s,in_name); p=Head; while(p!=NULL else printf( 街道: %sn,p-street); printf( 城市: %sn,p-city); printf( 邮编: %sn,p-eip); printf( 国家: %sn,p-state); flag=0; if(flag) printf( 没有查询到! )。

7、; void Update(Pointer Head) int flag=1; char in_name10; Pointer p; printf( 请输入要修改的姓名: ); scanf(%s,in_name); p=Head; while(p!=NULL else printf( 请输入街道: ); scanf(%s,p-street); printf( 请输入城市: ); scanf(%s,p-city); printf( 请输入邮编: ); scanf(%s,p-eip); printf( 请输入国家: ); scanf(%s,p-state); flag=0; if(flag) pr。

8、intf( 没有找到要修改的记录! ); void Delete(Pointer *Head) int flag=1; char in_name10; Pointer p,q; printf( 请输入要删除的姓名: ); scanf(%s,in_name); p=q=*Head; while(p!=NULLp=p-next; else if(p=*Head) *Head=p-next;free(p); else q-next=p-next;free(p); flag=0; void Show(Pointer Head) Pointer p; p=Head; while(p!=NULL) pri。

9、ntf( 姓名: %-10s,p-name); printf( 街道: %-10s,p-street); printf( 城市: %-10s,p-city); printf( 邮编: %-10s,p-eip); printf( 国家: %-10s,p-state); p=p-next; 3 调试报告 在编辑完成一个C语言源程序并最终在计算机上看到程序的运行结果要经 过以下几个步骤:上机输入与编辑源程序文件;编译源程序文件;与库函数连 接;运行可执行文件。 拿到程序题目要求的初期我们首先按照指导老师的要求写了一篇预习报 告,这要为我们的后续开发奠定了坚实的基础。再有了大体思路后我便开始开 发程序。

10、,在开发初期我编的只是不全面的很小的程序,有了一个大体的框架便开始一点一点的充实它,由于基本功不是很扎实所以开始时程序中存在着不少 的错误,有物理性的错误也有逻辑上的错误,我便开始在指导老师的帮助下对 它进行调试: 在程序开发起初物理错误犯的比较多如scanf(%d,没有写“ char street30; char city10; char eip10; char state10; struct People *next; Link,*Pointer; void Insert(Pointer *Head); void Search(Pointer Head); void Update(Poin。

11、ter Head); void Delete(Pointer *Head); void Show(Pointer Head); int main() Pointer Head=NULL; int i; do n); printf( 通讯录系统 printf(n); printf(1. 插入联系人信息 n); printf(2. 查找联系人信息 n); printf(3. 修改联系人信息 n); printf(4. 删除联系人信息 n); printf(5. 显示联系人信息 n); printf(6. 退出 n); scanf(%d, switch(i) case 1:Insert(break;。

12、 case 2:Search(Head);break; case 3:Update(Head);break; case 4:Delete(break; case 5:Show(Head);break; case 6:break; );break; default:printf( 输入错误!请重新输入! while(i!=6); return 0; void Insert(Pointer *Head) char in_name10; Pointer p,q,r; printf( 请输入姓名: ); scanf(%s,in_name); p=q=*Head; while(p!=NULL) q=p;。

13、p=p-next; r=(Pointer)malloc(sizeof(Link); r-next=NULL; if(r=NULL) printf( 分配空间失败! );return; if(q=NULL) *Head=r; else q-next=r; strcpy(r-name,in_name); printf( 请输入街道: ); scanf(%s,r-street); printf( 请输入城市: ); scanf(%s,r-city); printf( 请输入邮编: ); scanf(%s,r-eip); printf( 请输入国家: ); scanf(%s,r-state); voi。

14、d Search(Pointer Head) int flag=1; char in_name10; Pointer p; printf( 请输入要查询的姓名: ); scanf(%s,in_name); p=Head; while(p!=NULL else printf( 街道: %sn,p-stree printf( 城市: %sn,p-city); printf( 邮编: %sn,p-eip); printf( flag=0; 国家: %sn,p-state); if(flag) printf( 没有查询到! ); void Update(Pointer Head) int flag=1。

15、; char in_name10; Pointer p; printf( 请输入要修改的姓名: ); scanf(%s,in_name); p=Head; while(p!=NULL else printf( 请输入街道: ); scanf(%s,p-street); printf( 请输入城市: ); scanf(%s,p-city); printf( 请输入邮编: ); scanf(%s,p-eip); printf( 请输入国家: ); scanf(%s,p-state); flag=0; if(flag) printf( 没有找到要修改的记录! ); void Delete(Point。

16、er *Head) int flag=1; char in_name10; Pointer p,q; printf( 请输入要删除的姓名: ); scanf(%s,in_name); p=q=*Head; while(p!=NULLp=p-next; else if(p=*Head) *Head=p-next;free(p); else q-next=p-next;free(p); flag=0; void Show(Pointer Head) Pointer p; p=Head; while(p!=NULL) printf( 姓名 : %-10s,p-name); printf( 街道 : %-10s,p-street); printf( 城市 : %-10s,p-city); printf( 邮编 : %-10s,p-eip); printf( 国家 : %-10s,p-state); p=p-next;。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构课程设计 include "stdio.h" #include "ctype.h" #include "string.h" #include"stdlib.h" #include "malloc.h" struct list { char name[10]; char street[10]; char city[10]; char state[10]; char eip[10]; struct list *prior; struct list *next; }; void mainmenu(struct list * head); void read_file(struct list * head); void read_file(); void px_menu(struct list * head); void px_name(struct list * head); void px_street(struct list * head); void px_city(struct list * head); void px_state(struct list * head); void px_eip(struct list * head); void delete_menu(struct list * head); void delete_name(struct list * head); void search_menu(struct list * head); void search_name(struct list * head); void search_street(struct list * head); void search_city(struct list * head); void search_state(struct list * head); void search_eip(struct list * head); void add_new(struct list * head); void prin_list(struct list * head); void write_file(struct list * head); int flag=0; int flag1=0;//删除为空标志位 void main() { struct list *head; read_file(); mainmenu(head); return; } /**************************************************** 主菜单 ****************************************************/ void mainmenu(struct list * head) { char tmp; system("cls"); printf("输入要进行的操作:\n"); printf("\t '1'-----------------------添加记录\n"); printf("\t '2'-----------------------排序记录\n"); printf("\t '3'-----------------------显示记录\n"); printf("\t '4'-----------------------查找记录\n"); printf("\t '5'-----------------------删除记录\n"); printf("\t '6'---------------------------退出\n"); printf("\t '0'---------------------保存并退出\n"); printf("\n\t请选择:"); tmp=getchar(); switch(tmp) { case '1':add_new(head);break; case '2':px_menu(head);break; case '3':prin_list(head);break; case '4':search_menu(head);break; case '5':delete_menu(head);break; case '6':exit(0);break; case '0':write_file(head);break; default :{printf("错误操作返回主菜单");mainmenu(head);} } } /**************************************** 双链表建立以及文件读取 ****************************************/ //void read_file(struct list * head) void read_file() { int i; struct list *p1,*p2; struct list *head; FILE *fp; fp=fopen("list.txt","a"); fclose(fp); if ((fp = fopen ( "list.txt" , "rt" ) ) == NULL ) { printf("打开文件失败\n"); exit(0) ; } rewind(fp);//将文件指针重新指向流的开头 fseek(fp,0,2);//重定位流上的文件指针 if ((ftell(fp)==0))//返回当前文件指针 { printf("没有记录:\n"); head=p1=p2=(struct list *)malloc(sizeof(struct list)); head->name[10]='\0'; head->street[10]='\0'; head->city[10]='\0'; head->state[10]='\0'; head->eip[10]='\0'; head->next=head; head->prior=head; flag=1; } else { rewind(fp); head=p1=p2=(struct list *)malloc(sizeof(struct list)); head->next=head; head->prior=head; if(fread(p1,sizeof(struct list),1,fp)!=1)//从流中读数据 { p2->next=p1; p1->next=head; head->prior=p1; p1->prior=p2; p2=p1; } else { for (i=0;;i++) { p2->next=p1; p1->next=head; head->prior=p1; p1->prior=p2; p2=p1; if (feof ( fp ))//检测流上的文件结束符用 { p1->next=head; head->prior=p1; printf("记录读入完成\n"); break; } else { p1=(struct list *)malloc(sizeof(struct list)); p1->name[10]='\0'; p1->street[10]='\0'; p1->city[10]='\0'; p1->state[10]='\0'; p1->eip[10]='\0'; if(fread(p1,sizeof(struct list),1,fp)!=1) { break; } } } } } printf("记录读入完成\n"); fclose ( fp ) ; printf("按任意键进入主菜单\n"); getchar(); mainmenu(head); return; } /**************************************** 增添 ****************************************/ void add_new(struct list * head) { int k=0; int n; char tmp1,tmp2; struct list *p; struct list *p1,*p2; p1=(struct list *)malloc(sizeof(struct list)); p1->name[10]='\0'; p1->street[10]='\0'; p1->city[10]='\0'; p1->state[10]='\0'; p1->eip[10]='\0'; printf("请输入所要添加的名字:\n"); scanf("%s",p1->name); printf("请输入所要添加的街道:\n");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值