为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

通讯录的制作

2017-09-28 21页 doc 123KB 126阅读

用户头像

is_079973

暂无简介

举报
通讯录的制作通讯录的制作 学生姓名: 学 号: 0 学 院: 软件学院 专 业: 信息管理与信息系统 题 目: 通讯录的制作 成绩 指导教 师 2010年12月20日 1 设计目的 用数据结构中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。通过设计一个《通讯录的制作》,进 一步熟悉数据结构的基本知识,利用所学的基本知识解决简单的程序设计问题。了解系统开 发的需求分析、概要设计、详细设计、调试分析和整体调试的全过程,加深对数据结构的理 解与Visual C++...
通讯录的制作
通讯录的制作 学生姓名: 学 号: 0 学 院: 软件学院 专 业: 信息管理与信息系统 题 目: 通讯录的制作 成绩 指导教 师 2010年12月20日 1 目的 用数据结构中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。通过设计一个《通讯录的制作》,进 一步熟悉数据结构的基本知识,利用所学的基本知识解决简单的程序设计问题。了解系统开 发的需求分析、概要设计、详细设计、调试分析和整体调试的全过程,加深对数据结构的理 解与Visual C++环境的使用,逐步熟悉程序设计的方法,并养成良好的编程习惯。 2. 设计内容和要求 设计内容:本系统应完成一下几方面的功能: 1) 输入信息——enter(); 2) 显示信息———display( ); 3) 查找以姓名作为关键字 ———search( ); 4) 删除信息———delete( ); 5) 存盘———save ( ); 6) 装入———load( ) ; 设计要求: 1) 每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE) 几项 2) 作为一个完整的系统,应具有友好的界面和较强的容错能力 3) 上机能正常运行,并写出课程设计 3(本设计所采用的数据结构 数据包含: 五个数据成员: char name[20]; 姓名 char street[20]; 街道 char city[20]; 城市 char eip[20]; 邮编 char state[20]; 国家 包含函数: 功能如下: void mainmenu(); 主菜单 void searchmenu(); 查找菜单 void enter(); 新添纪录 1 void search(); 按姓名查询 void display(); 显示所有 void load(); 读取文件 void save(); 写入文件 void delete(); 按姓名删除 void listinsert() 增加一个新信息结点 包含结构体: struct record { char street[20]; char name[20]; char city[20]; char state[20]; char eip[20]; }student[500]; struct slnode { record date; struct slnode *next; struct slnode *prior; }; 4(功能模块详细设计 4.1 详细设计思想 围绕主函数进行每个子函数功能的完善,程序包含五个数据成员(name,street,state,eip,city),九个子函数(mainmenu,searchmenu,listinsert ,load,enter,search,display,load,save,delete),两个结构体(struct record,struct slnode),通过它们完成通讯录的各种功能(输入,查看全部,按姓名查找,删除,保存),再构造方便简洁的友好界面,使用简洁易懂的界面语言。 2 开始 执行main()函数 ch=getche() switch(ch) ch=getche()ch =getche();, ch=getche();选择操作编号 1 2 3 4 5 enter() Delet() Save() exit(0) search menu () ch=getche() switch(ch) ch=getche()ch =getche();, ch=getche(); 1查看全部 2以姓名查找 3返回主菜单 search() display() 3 将软件进行初始化,即在VC++6.0中运行该程序,进入程序主界面,首次运行建立文件, 提示文件是否成功建立。然后按任意键后进入主菜单。 界面显示的是“主菜单”,主菜单有五个方面: 1,新添记录 查询菜单 2, 3,删除联系人 4,保存退出 不保存退出 5, 查询菜单包括三个方面 1,显示所有 2,按姓名查询 3,返回主菜单 输入和存取人员信息,选择菜单界面的第1个选择进入此选择界面,根据提示,输入信息相关 信息。 按"2"显示查询的菜单。 按“3”删除指定联系人。 按“4”将输入的联系人信息保存到文件中并退出通讯录。 按“5”退出通讯录,不保存输入的联系人信息。 4.2 核心代码 #include #include #include #include struct record { char name[20]; char street[20]; char city[20]; char eip[20]; char state[20]; 4 }student[500]; struct slnode { record date; struct slnode *next; struct slnode *prior; }; typedef slnode * linklist; linklist l; int num=0; FILE *fp; void mainmenu(); void searchmenu(); void enter(); void search(); void display(); void load(); void save(); void delet(); void listinsert(); void initlist(); void main() { initlist(); load(); listinsert(); while (1) mainmenu(); } void load() 5 { if((fp=fopen("student.bin","rb"))==NULL) { printf("\n\t\t通讯录文件不存在"); if ((fp=fopen("student","wb"))==NULL) { printf("\n\t\t建立失败"); exit(0); } else { printf("\n\t\t通讯录文件已建立"); printf("\n\t\t按任意键进入主菜单"); getch(); return; } exit(0); } fseek(fp,0,2); if (ftell(fp)>0) { rewind(fp); for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++); printf("\n\t\t文件导入成功"); printf("\n\t\t按任意键返回主菜单"); getch(); return; } printf("\n\t\t文件导入成功"); printf("\n\t\t通讯录文件中无任何纪录"); 6 printf("\n\t\t按任意键返回主菜单"); getch(); return; } void mainmenu()//主菜单 { char choic; system("cls"); printf("\n\t\t***************************************************"); printf("\n\t\t **+++++++++++++欢迎进入通讯录系统++++++++++++**"); printf("\n\t\t ** 1-新添纪录 **"); printf("\n\t\t ** 2-查找联系人 **"); printf("\n\t\t ** 3-删除联系人 **"); printf("\n\t\t ** 4-保存退出 **"); printf("\n\t\t ** 5-不保存退出 **"); printf("\n\t\t***************************************************"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) { case '1':enter();break; case '2':searchmenu();break; case '3':delet();break; case '4':save();break; case '5':exit(0); default:mainmenu(); } } void searchmenu()//查询子菜单 { 7 char choic; printf("\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n\t\t ~ 查询菜单 ~"); printf("\n\t\t ~ 1-显示所有 ~"); printf("\n\t\t ~ 2-按姓名查询 ~"); printf("\n\t\t ~ 3-返回主菜单 ~"); printf("\n\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) { case '1':display();break; case '2':search();break; case '3':mainmenu();break; } } void enter()//添加新纪录信息 { printf("\n\t\t**************** 请输入学生信息 ****************\n"); printf("\n\t\t姓名:"); scanf("%s",&student[num].name); printf("\n\t\t街道:"); scanf("%s",&student[num].street); printf("\n\t\t城市:"); scanf("%s",&student[num].city); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].eip); printf("\n\t\t国家:"); scanf("%s",&student[num].state); num++; 8 printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') enter(); return; } void display()//显示所有记录 { int i; if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;idate.name,student[i].name); strcpy(s->date.city,student[i].city); 10 strcpy(s->date.street,student[i].street); strcpy(s->date.eip,student[i].eip); strcpy(s->date.state,student[i].state); s->prior=p->prior; s->next=p; p->prior->next=s; p->prior=s; p=p->next; } } void initlist()//插入 { l=new slnode; l->next=l; l->prior=l; } void search()//查找 { int j=0,a=0; printf("\n\t\t***************** 按姓名查找 *******************"); char name[20]; printf("\n\t\t请输入姓名:"); scanf("%s",name); for(int i=a;i心得
及存在问题 1)程序的编写应是:三分编写,七分调试; 2)程序编写之前需求分析,至关重要,将关系这整个项目的成败. 3)熟能生巧,这次在用指针处理双向链表时,以前对这块内容并不十分清楚,这次感觉 很吃力,所以在今后的编程之中,尽可能把基本技能练习熟练. 4)做软件最终是满足用户的需求,所以做软件时应一切应以用记为导向. 17 5)由于我们的知识浅薄,经验不足及阅历颇浅,因此,在该程序的设计方面还有很多的不足,会在以后的学习过程中,根据所学的知识不断的修改、完善,争取慢慢趋于完美。 存在问题: 原来按姓名查找功能不能实现,怎么实现都是“查无此人”, 后来经过查资料使用了if(strcmp(student[i].name,name)==NULL)语句,才使程序实现。总之还是因为基地打的不实, 以后一定巩固加强基础知识的认识。 18
/
本文档为【通讯录的制作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索