[it计算机]c课程设计-电话本管理完整版内容摘要:

//欢迎菜单函数 }。 friend_node *temp_ptr。 friend_node *head_ptr。 //全程变量,链头指针 friend_node *current_ptr。 //全程变量,用于指明当前在链表中的位置 time_t time_date。 // time_t 里面放的是星期、月份、日期、时间及年份等 数据 tm *CurrentTime。 //主函数 int main(void) { friend_node record。 ()。 } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //各种所需函数 . //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void friend_node::wele()//欢迎菜单函数 { coutendlendlendlendlendlendlendlendlendlendl。 cout \t\t\t欢迎您来到电话本管理系统 \n\n\n。 cout \t\t\t请敲击 Enter键,继续操作。 (pause)。 system(cls)。 //执行系统命令: cls清屏 int choice。 head_ptr = NULL。 // 初始化链表头指针。 load_list_from_file()。 //读取数据。 do { //主菜单显示 cout \t 《 主 菜 单 》endlendl。 cout \t1 添加新的电话记录 \n。 cout \t2 显示所有电话记录 \n。 cout \t3 根据姓氏查找电话号码 \n。 cout \t4 根据姓名查找号码(支持模糊查找 ,可以使用 *和 ?) \n。 cout \t5 智能查询电话号码(姓名首字母查询) \n。 cout \t6 删除指定的号码记录 \n。 cout \t7 修改指定的号码记录 \n。 cout \t0 退 出 该 程 序 ( 只有选 0 退 出 才 能 将 记 录 保 存 至 文 明德、博学、诚智、创新 17 件 )\nendl。 cout \t请输入你想进行的操作 :。 cin choice。 while(!cin)//当输入的数据类型与定义的变量类型不一致 { char str[20]。 ()。 //清空输入缓冲区 (str,20)。 //接收原输入数据 cout非法的输入,请输入一个整数。 endl。 cinchoice。 //重新输入 } handle_choice(choice)。 //根据选择调用函数。 } while(choice != 0)。 // 选择结束后退出循环 . } //此函数结束 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void friend_node::handle_choice(int choice) // 根据用户选择( choice)调用对应处函数 { switch(choice) { case 1: //添加新的电话记录 add_record()。 // 调用相应函数 . break。 case 2: //显示所有电话记录 display_list()。 // 调用相应函数 break。 case 3: //根据姓氏查找电话号码 search_by_lastname()。 //调用相应函数 break。 case 4: // 根据姓名查找号码(支持模糊查找 ,可以使用 *和 ?) search_by_name()。 //调用相应函数 break。 case 5: //智能查询电话号码(姓名首字母查询) look_char()。 //调用相应函数 break。 case 6: //删除指定的号码记录 delete_record()。 break。 case 7: //修改指定的号码记录 modify_record()。 break。 case 0: // 退出该程序 write_list_to_file()。 //保存数据 if(head_ptr != NULL) // 若链表不为空,删除动态开辟的空间 明德、博学、诚智、创新 18 { delete_list()。 } break。 default : //若输入错误 , cout 您输入的数据有误 \n。 break。 }//switch } // 此函数结束 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ friend_node* friend_node::add_record() // 在 链表中增加一个记录 { friend_node *new_rec_ptr。 //定义结点 . new_rec_ptr = new friend_node。 // 开辟空间 if(new_rec_ptr != NULL) // 成功分配空间 { system(cls)。 // 录入数据信息 . (20,39。 \n39。 )。 cout 请输入你要添加的人员的姓 :。 (new_rec_ptrlast_name,20)。 (20,39。 \n39。 )。 cout 请输入你要添加的人员的名 :。 (new_rec_ptrfirst_name,15)。 (20,39。 \n39。 )。 cout 电话号码 :。 (new_rec_ptrphone_num,15)。 (20,39。 \n39。 )。 time_date=time(0)。 //time( )函数是取得自格林 威治时间 1970 年 1 月 1 日 00: 00所经过的秒数 CurrentTime=localtime(amp。 time_date)。 //localtime( )函数是将类型为 time_t的时间值,放入结构类型为 tm的结构中 new_rec_ptryear=CurrentTimetm_year+1900。 //将当前时间变为标准形式 new_rec_ptrmonth=CurrentTimetm_mon+1。 //取出月份赋给类中的私有数据Month,tm_mon是从 0开始, //表 示 12月份依次为 0~ 11,故真实月份需加一 new_rec_ptrday=CurrentTimetm_mday。 //取出当前时间的天数 new_rec_ptrhour=CurrentTimetm_hour。 //取出当前时间的小时数 new_rec_ptrminute=CurrentTimetm_min。 //取出当前时间的分钟数 insert_node(new_rec_ptr)。 //插入连表 } else // 若录入有 误,显示提示 { cout 内存分配错误,无法添加新记录。 \n。 明德、博学、诚智、创新 19 } system(cls)。 return new_rec_ptr。 } //此函数结束 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void friend_node::insert_node(friend_node *new_rec_ptr) //将一个由 new_rec_ptr 指向的新节点插入链表中 { friend_node *before_ptr。 friend_node *after_ptr。 if(head_ptr == NULL) { // 如果是空链表,插入点是唯一的 new_rec_ptrnext = NULL。 head_ptr = new_rec_ptr。 } else {//else1 if(strcmp(new_rec_ptrlast_name, head_ptrlast_name) 0) { // 如果新结点小于头结点 , make_node_new_head(new_rec_ptr)。 // 新结点作为头结点 . } else // 否则根据姓氏插入正确位置 {//else2 current_ptr = position_insertion_point(new_rec_ptrlast_name)。 before_ptr = current_ptr。 after_ptr = current_ptrnext。 if(after_ptr == NULL) // 如果下一结点为尾结点,将新结点作为尾结点 { add_node_to_end(new_rec_ptr)。 } else // 否则插入链表中 { before_ptrnext = new_rec_ptr。 new_rec_ptrnext = after_ptr。 } }//else2 }//else1 } //此函数结束 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ friend_node *friend_node::position_insertion_point(char lastname[20]) { // 根据姓氏,返回其在链表中的正确位置。 新节点即将插入此点。 char temp_name[20]。 明德、博学、诚智、创新 20 friend_node *temp_ptr。 int tempint。 if(head_ptrnext != NULL) // 如果多于一个结点的链表,查找结点在 链表中的正确位置 { current_ptr = head_ptr。 temp_ptr = current_ptrnext。 strcpy(temp_name, temp_ptrlast_name)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。