C++实现基础通讯录管理系统

需积分: 9 0 下载量 130 浏览量 更新于2024-11-16 收藏 1.78MB RAR 举报
资源摘要信息:"通讯录管理系统是一个使用C++编程语言开发的基础应用程序,旨在帮助用户管理联系人的个人信息。该系统提供了基本的通讯录功能,包括添加新联系人、删除现有联系人、修改联系人信息以及查看和清空整个通讯录。" ### 知识点一:C++基础知识 在构建通讯录管理系统之前,开发者需要掌握C++的基本语法和概念。C++是一种通用编程语言,支持面向对象的程序设计方法,适合创建结构化程序。C++的核心概念包括变量、数据类型、运算符、控制结构(如循环和条件语句)、函数等。此外,面向对象编程中的类和对象是实现通讯录中联系人信息封装的关键技术。 ### 知识点二:面向对象编程 通讯录管理系统的设计采用面向对象的方法,将联系人的信息封装成一个类。这个类可能包含私有成员变量来存储联系人的姓名、性别、年龄和电话等信息,并提供公有成员函数来实现对这些信息的增删改查操作。通过类的实例化,可以创建多个联系人对象。 ### 知识点三:数据结构 在实现通讯录的过程中,数据结构的使用非常关键。例如,可以使用标准模板库中的`vector`容器来存储联系人对象的集合。这种动态数组允许在运行时动态添加和删除联系人,非常适合本系统的需求。此外,了解链表、栈、队列等其他数据结构对于开发更高级的系统也有很大帮助。 ### 知识点四:C++函数 C++中的函数是执行特定任务的代码块。在通讯录管理系统中,开发者需要编写各种函数来处理不同的逻辑。例如,添加联系人的函数可能会接受姓名、性别、年龄和电话作为参数,并将新创建的联系人对象添加到`vector`中。而删除联系人的函数则需要一个标识符来找到并移除特定的联系人。 ### 知识点五:文件输入输出操作 通讯录管理系统可能需要将联系人数据持久化到文件中,并从文件中读取数据。在C++中,可以使用文件输入输出流(例如`ifstream`和`ofstream`)来完成这项任务。开发者需要学习如何打开、关闭文件,读写文本文件,以及处理可能出现的文件操作错误。 ### 知识点六:异常处理 异常处理是C++中的一个重要特性,它允许程序在发生错误时以结构化的方式进行处理,而不是让程序突然终止。在通讯录管理系统中,添加、删除和修改操作可能失败,比如尝试删除一个不存在的联系人。通过使用`try`、`catch`语句块,开发者可以捕获和处理这些运行时异常,以确保程序的稳定运行。 ### 知识点七:用户界面设计 虽然描述中没有提到用户界面,但实际的系统可能需要一个简单用户界面来与用户交互。学习如何使用C++标准库中的`iostream`进行基本的命令行界面设计,或使用图形用户界面库(如Qt或wxWidgets)进行更高级的界面设计,都是实现良好用户体验的关键。 ### 知识点八:系统测试与调试 最后,系统开发完成后,需要进行严格的测试和调试来确保每个功能都能正确工作。测试可以包括单元测试(测试单个函数或类的方法)、集成测试(测试多个组件协同工作的效果)以及系统测试(模拟真实使用场景进行全面测试)。调试工具和日志记录可以帮助开发者快速定位和修复程序中的错误。 综上所述,通讯录管理系统是一个适合C++初学者的练手项目,涉及了C++编程的多个核心知识点,包括但不限于基础语法、面向对象编程、数据结构、文件操作、异常处理以及测试与调试。通过实现这样一个系统,开发者可以加深对C++的理解,并为进一步学习更复杂的编程概念打下坚实的基础。

import java.util.ArrayList; import java.util.Scanner; public class ContactManner { public static void main(String[] args) { ArrayList<Contact> array = new ArrayList(); while (true) { Contact s = new Contact(); s.Menu(); Scanner sc1 = new Scanner(System.in); int d = sc1.nextInt(); switch (d) { case 1: { addPeople(array); System.out.println("添加联系人成功"); break; } case 2: { deletePeople(array); break; } case 3: { revisePeople(array); break; } case 4: { checkPeople(array); break; } case 5: { System.out.println("退出成功,谢谢使用"); System.exit(0); break; } default: { System.out.println("错误,请重新输入"); } } } } public static void addPeople(ArrayList<Contact>array) { Scanner sc=new Scanner(System.in); System.out.println("请输入姓名"); String name=sc.nextLine(); System.out.println("请输入电话号码"); String phone=sc.nextLine(); System.out.println("请输入家庭住址"); String address=sc.nextLine(); Contact s1=new Contact(); s1.setAddress(address); s1.setName(name); s1.setPhone(phone); array.add(s1); } public static void deletePeople(ArrayList<Contact>array) { if(array.isEmpty()) { System.out.println("没有联系人信息,请先添加联系人信息再操作"); } else { Scanner sc=new Scanner(System.in); System.out.println("请输入你要删除联系人名字"); String num=sc.nextLine(); int sum=0; for(int i=0;i<array.size();i++) { Contact stu = array.get(i); if(stu.getName().equals(num)) { array.remove(i); sum++; System.out.println("删除成功"); } } if(sum==0){ System.out.println("删除失败,该联系人信息不存在"); } } } public static void revisePeople(ArrayList<Contact>array) { if(array.isEmpty()) { System.out.println("没有联系人信息,请添加后再进行操作"); } else { Scanner sc1 = new Scanner(System.in); System.out.println("请输入要修改的联系人姓名"); String name1 = sc1.nextLine(); int sum = 0; for(int j = 0;j<array.size();j++) { Contact s2 = array.get(j); if(s2.getName().equals(na扩充代码

2023-06-01 上传

package com.unit2.test; public class Test4 { public static void main(String[] args) { Salary s=new Salary("员工A","北京",3,3600.00); Employee e=new Salary("员工B","上海",2,2400.00); System.out.println("使用Salary的引用调用mailcheck--"); s.mailCheck(); System.out.println("\n使用employee的引用调用mailcheck--"); e.mailCheck(); } public class Employee{ private String name; private String address; private int number; public Employee(String name,String address,int number) { System.out.println("Employee 构造函数"); this.name=name; this.address=address; this.number=number; } public void mailCheck() { System.out.println("邮寄支票给:"+this.name+" "+this.address); } public String toString() { return name+" "+address+" "+number; } public String getName() { return name; } public String getAddress() { return address; } public void setAddress(String newAddress) { address=newAddress; } public int getNumber() { return number; } } public class Salary extends Employee { private double salary;//全年工资 public Salary(String name,String address,int number,double salary) { super(name,address,number); setSalary(salary); } public void mailCheck() { System.out.println("Salary类的mailcheck方法"); System.out.println("邮寄支票给:"+getName()+",工资为"+salary); } public double getSalary() { return salary; } public void setSalary(double newSalary) { if(newSalary>=0.0) { salary=newSalary; } } public double computePay() { System.out.println("计算工资,付给:"+getName()); return salary/52; } } }更正代码错误

2023-05-26 上传

package com.unit2.test; public class Test4 { public static void main(String[] args) { Salary s=new Salary("员工A","北京",3,3600.00); Employee e=new Salary("员工B","上海",2,2400.00); System.out.println("使用Salary的引用调用mailcheck--"); s.mailCheck(); System.out.println("\n使用employee的引用调用mailcheck--"); e.mailCheck(); } public class Employee{ private String name; private String address; private int number; public Employee(String name,String address,int number) { System.out.println("Employee 构造函数"); this.name=name; this.address=address; this.number=number; } public void mailCheck() { System.out.println("邮寄支票给:"+this.name+" "+this.address); } public String toString() { return name+" "+address+" "+number; } public String getName() { return name; } public String getAddress() { return address; } public void setAddress(String newAddress) { address=newAddress; } public int getNumber() { return number; } } public static class Salary extends Employee { private double salary;//全年工资 public Salary(String name,String address,int number,double salary) { super(name,address,number); setSalary(salary); } public void mailCheck() { System.out.println("Salary类的mailcheck方法"); System.out.println("邮寄支票给:"+getName()+",工资为"+salary); } public double getSalary() { return salary; } public void setSalary(double newSalary) { if(newSalary>=0.0) { salary=newSalary; } } public double computePay() { System.out.println("计算工资,付给:"+getName()); return salary/52; } } }更正以上代码错误

2023-05-25 上传