一、课程设计目的

本课程设计是利用Java进行程序设计的一个关键实践环节。它是根据教学计划的要求,在教师的指导下,对学生实施程序设计训练的必要过程,是对前期课堂教学效果的检验。其目标在于培养学生综合运用面向对象的方法完成小型软件系统的分析与设计,熟练使用Java语言及JavaSE类库完成桌面应用软件的开发和调试。通过这个课程设计,要求学生能够遵循软件开发过程的基本规范,按照课程设计的题目要求,独立地完成设计、编写、调试和测试应用程序及编写文档的任务。

二、课程设计任务

通讯录:

制作一个通讯录程序,功能要求:

  1. 自定义数据库文件格式。
  2. 提供输入、显示、查找、添加、删除、插入、保存、读入、拷贝、排序等功能。

三、需求分析

所选择的课题进行需求分析,详细描述所要实现的功能

需要实现的功能如下:

1.系统可以使用命令退出

2.信息的查询:可以让用户选择是否继续查询,或随时结束

3.信息的添加

4.信息的删除:当用户输入未在通讯录中的人时提示用户重新输入

5.信息的修改

6.信息的显示

7.信息的拷贝:提示用户要存放及查看的位置

8.返回主菜单:每项功能的使用完成后能够返回主菜单选择其他功能

四、系统设计

系统模块划分,描述类与类之间的关系

先考虑到通讯录的内容为:姓名与电话,所以建立联系人实体类Contact

再考虑到系统功能为数据的增删改查,所以定义了访问数据的类Text

然后采用类MainMenu实现界面上显示

五、系统实现

程序设计,核心模块实现技术的说明

增添模块:

删除模块:

修改模块:

查询模块:

文件操作读写方法:

界面跳转方法:

GoView()

六、总结

我的课程设计的基于Java的通讯录系统。在一个月的课程时间里,通过不断的查找资料,调试代码和同学的帮助,完成了指定的系统的功能。通过这次课程设计,我加深了对Java程序的理解,熟练掌握了类的封装等,并且能把它们运用到实际的程序中去。

通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。

附录:

程序代码(主要模块)

package task;

import java.util.Scanner;

public class MainMenu {

private Menu contact;

private static Scanner scanner;

public MainMenu() {

contact=new Menu();

System.out.println("*************************");

contact.AddMenuBar("***查询联系人请按0!***");

contact.AddMenuBar("***添加联系人请按1!***");

contact.AddMenuBar("***删除联系人请按2!***");

contact.AddMenuBar("***修改联系人请按3!***");

contact.AddMenuBar("显示所有联系人信息请按4!");

contact.AddMenuBar("拷贝所有联系人信息请按5!");

contact.PrintMenuBar();

System.out.println("*************************");

System.out.println("请选择功能(0-5):");

while(GoView.Menu()==0);

}

public static void main(String args[]) {

int judge=0;

while(judge==0){

new MainMenu();

System.out.println("返回请按0");

scanner = new Scanner(System.in);

judge=Integer.valueOf(scanner.nextLine());

}

}

}

package task;

import java.util.Scanner;

public class Add {

private Menu addView;

private Text xx;

private Contact contact;

private Occur Occur;

public Add() {

xx=new Text();

contact=new Contact();

Occur=new Occur();

Scanner a=new Scanner(System.in);

System.out.println("请输入客户姓名:");

contact.setName(a.nextLine());

System.out.println("请输入客户电话号码:");

contact.setTelephone(a.nextLine());

xx.AddInfor(contact);

}

public Menu getAddView() {

return addView;

}

public void setAddView(Menu addView) {

this.addView = addView;

}

public Text getxx() {

return xx;

}

public void setxx(Text xx) {

this.xx = xx;

}

public Contact getContact() {

return contact;

}

public void setContact(Contact contact) {

this.contact = contact;

}

public Occur getOccur() {

return Occur;

}

public void setGenerated(Occur Occur) {

this.Occur = Occur;

}

public static void main(String atg[]){

new Add();

}

}

package task;

import java.util.List;

public class Array {

public Array() {

// TODO 自动生成的构造函数存根

}

public static String[] getOfCustomerInfor(List <Contact>list){

String arg[]=new String[list.size()];

arg[0]="联系人姓名 联系人电话";

for(int i=1;i<list.size();i++)

{

arg[i]=list.get(i).getName()+" "+list.get(i).getTelephone();

}

return arg;

}

public static String  getInfor(Contact contact){

String arg=new String();

arg=contact.getName()+" "+contact.getTelephone();

return arg;

}

public static String getofString(List <String>list){

String arg[]=new String[list.size()];

String sum=new String();

for(int i=0;i<list.size();i++)

{

String temp=i+":"+list.get(i)+"\n";

sum+=temp;

}

return sum;

}

}

package task;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Text  {

private Occur Occur;

public Text() {

// TODO 自动生成的构造函数存根

Occur=new Occur();

}

public void AddInfor(Contact contact){

System.out.println(Array.getInfor(contact));

String temp=Array.getInfor(contact);

writeLineFile("src/1.txt",temp);

}

public void writeLineFile(String filename, String content){

try {

FileWriter fileWriter=new FileWriter(filename,true);

BufferedWriter bufWrite = new BufferedWriter(fileWriter);

bufWrite.write(content+"\r\n");

bufWrite.close();

fileWriter.close();

System.out.println("录入成功");

} catch (Exception e) {

e.printStackTrace();

System.out.println("读取" + filename + "错误!");

}

}

public void writeallLine(String filename, String []content){

try {

FileWriter fileWriter=new FileWriter(filename);

BufferedWriter bufWrite = new BufferedWriter(fileWriter);

for (int i = 0; i < content.length; i++) {

bufWrite.write(content[i]+"\r\n");

}

bufWrite.close();

fileWriter.close();

} catch (Exception e) {

e.printStackTrace();

System.out.println("读取" + filename + "错误!");

}

}

public Occur getOccur() {

return Occur;

}

public void setOccur(Occur Occur) {

this.Occur = Occur;

}

public void DeleteInfor(){

while(DeleteByName()==0);

}

private int  DeleteByName(){

Scanner sc = new Scanner(System.in);

String judge=new String();

judge=sc.nextLine();

String Name=new String();

List <Contact> pl=Occur.getContacts();

for(Object temp:pl){

Contact p =(Contact)temp;

if (judge.equals(p.getName())){

Name=judge;

judge="1";

}

}

if(!judge.equals("1")){

System.out.println("未找到此人无法删除,请重新输出姓名"+"\n请输入姓名:");

return 0;

}

System.out.println(Name);

List <Contact> ple=Occur.getContacts();

List del =new ArrayList<>();

int tep=ple.size();

for(Object temp:ple){

Contact p =(Contact)temp;

if (Name.equals(p.getName())){

del.add(p);

}

}

ple.removeAll(del);

if(ple.size()!=tep)

{

System.out.println("删除成功");

}

else{

System.out.println("删除失败");

return 0;

}

writeallLine("src/1.txt", Array.getOfCustomerInfor(ple));

return 0;

}

public void SearchName(){

while(MainSearchByName()==null);

}

public String MainSearchByName(){

Scanner sc = new Scanner(System.in);

String judge=sc.nextLine();

List <Contact> ple=Occur.getContacts();

for(Object temp:ple){

Contact p =(Contact)temp;

if (judge.equals(p.getName())){

Occur.Format(p);

return judge;

}

}

System.out.println("未找到此人,请重新输入!");

return null;

}

public String SearchAll(){

List <Contact> ple=Occur.getContacts();

for(Object temp:ple){

Contact p =(Contact)temp;

Occur.FormatMain(p);

}

return null;

}

public void Update(){

while(UpdateByName()==0);

}

private int  UpdateByName(){

Scanner sc = new Scanner(System.in);

String judge=new String();

judge=sc.nextLine();

String Name=new String();

List <Contact> pl=Occur.getContacts();

for(Object temp:pl){

Contact p =(Contact)temp;

if (judge.equals(p.getName())){

Name=judge;

judge="1";

}

}

if(!judge.equals("1")){

System.out.println("未找到此人无法修改,请重新输出姓名"+"\n请输入姓名:");

return 0;

}

List <Contact> ple=Occur.getContacts();

List del =new ArrayList<>();

int tep=ple.size();

for(Object temp:ple){

Contact p =(Contact)temp;

if (Name.equals(p.getName())){

del.add(p);

}

}

ple.removeAll(del);

if(tep!=ple.size()){

System.out.println("请输入新的用户信息:");

writeallLine("src/1.txt", Array.getOfCustomerInfor(ple));

new Add();

return 1;

}

System.out.println("未找到该用户,请重新输入!");

return 0;

}

}

package task;

import java.util.Scanner;

public class Delete {

private Text xx;

private Scanner scanner;

public Delete() {

// TODO 自动生成的构造函数存根

xx=new Text();

int judge=1;

scanner = new Scanner(System.in);

while(judge==1){

System.out.println("请输入要删除的联系人的姓名"+"\n请输入姓名:");

xx.DeleteInfor();

System.out.println("是否确认删除联系人,继续删除输入1,否则任意键结束查询");

judge=Integer.valueOf(scanner.nextLine());

xx=new Text();

}

}

public static void main(String arg[]){

new Delete();

}

}

package task;

import java.util.Scanner;

public class Search {

private Text xx;

private Scanner scanner;

public Search() {

// TODO 自动生成的构造函数存根

int judge=1;

scanner = new Scanner(System.in);

xx=new Text();

while(judge==1){

System.out.println("请输入联系人姓名:");

xx.SearchName();

System.out.println("是否要继续查询,继续请按1,退出请按任意键");

judge=Integer.valueOf(scanner.nextLine());

}

}

public static void main(String arg[]){

new Search();

}

}

package task;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.util.ArrayList;

import java.util.List;

public class Occur {

private List<Contact> contacts;

public Occur() {

contacts=new ArrayList<Contact>();

this.readFileByLinesCustomerInfor("src/1.txt", contacts);

}

public List<Contact> getContacts() {

return contacts;

}

public void setContacts(List<Contact> contacts) {

this.contacts = contacts;

}

public List<Contact> readFileByLinesCustomerInfor(String fileName,List <Contact>list) {

File file = new File(fileName);

BufferedReader reader = null;

try {

reader = new BufferedReader(new FileReader(file));

String tempString = null;

int line = 1;

while ((tempString = reader.readLine()) != null) {

list.add(GetInfor(tempString));

line++;

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

}

}

}

if(list!=null)

return list;

return null;

}

public static Contact GetInfor(String tempString){

String []temp=tempString.split(" ");

Contact employee=new Contact();

if(!temp[0].equals("客户姓名")){

employee.setName(temp[0]);

employee.setTelephone(temp[0]);

}

return employee;

}

public static void Format(Contact contact){

if(contact.getName()!=null){

System.out.println("客户姓名:"+contact.getName());

System.out.println("客户电话:"+contact.getTelephone()+"\n");

}

}

public static void FormatMain(Contact contact){

if(contact.getName()!=null){

System.out.println("客户姓名:"+contact.getName());

}

}

public static void main(String args[]) throws IOException, Exception{

List list=new ArrayList<>();

Occur OccurtAccount=new Occur();

for(int i=0;i<OccurtAccount.getContacts().size();i++){

Format(OccurtAccount.getContacts().get(i));

}

}

}

package task;

public class GetAll {

private Text xx;

public GetAll() {

// TODO 自动生成的构造函数存根

xx=new Text();

xx.SearchAll();

}

public static void main(String args[]){

GetAll allContacts=new GetAll();

}

}

package task;

import java.util.Scanner;

public class GoView {

private static Scanner aa;

public static int Menu(){

aa = new Scanner(System.in);

String judge=aa.nextLine();

if(judge.equals("0")){

new Search();

return 1;

}

if(judge.equals("1")){

new Add();

return 1;

}

if(judge.equals("2")){

new Delete();

return 1;

}

if(judge.equals("3")){

new Change();

return 1;

}

if(judge.equals("4")){

new GetAll();

return 1;

}

if(judge.equals("5")){

new Copy();

return 1;

}

return 0;

}

}

package task;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Scanner;

public class Copy {

public Copy() {

System.out.println("请输入要存放的位置以及名字");

Scanner aa=new Scanner(System.in);

String judge=aa.nextLine();

CopyTo(judge);

}

public void CopyTo(String string){

FileInputStream fis=null;

FileOutputStream fos=null;

try {

fis = new FileInputStream("src/1.txt");

fos = new FileOutputStream(string,true);

byte[] words=new byte[1024];

while((fis.read())!=-1){

fis.read(words);

fos.write(words, 0, words.length);

}

System.out.println("复制成功。请往"+string+"查看");

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(fos!=null)

fos.close();

if(fis!=null)

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

package task;

import java.util.ArrayList;

import java.util.List;

public class Menu {

private List <String>MenuBar;

public Menu() {

MenuBar=new ArrayList<String>();

}

public void AddMenuBar(String Menubar){

MenuBar.add(Menubar);

}

public void PrintMenuBar(){

System.out.println(Array.getofString(MenuBar));

}

}

package task;

public class Change {

private Text xx;

public Change() {

xx=new Text();

System.out.println("请输入要修改的的姓名"+"\n请输入客户姓名:");

xx.Update();

}

public static void main(String arg[]){

new Change();

}

}

java控制台通讯录相关推荐

  1. nbu无法运行java控制台_Netbackup:nbu常见错误及故障解决

    Veritas Netbackup 提供了强大的故障响应功能, 能够有效及时的处理 各种备份故障. 主要有备份状态码(status) .错误信息.报告信息及调试日志. 下面我们主要针对备份状态码讲解下 ...

  2. linux控制台单人五子棋简书,Java控制台版五子棋的简单实现方法

    这篇文章主要给大家介绍了关于Java控制台版五子棋的简单实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 设计一个10*1 ...

  3. 2048——Java控制台版本

    前情提要,祝2021年的蓝桥杯小伙伴成绩突出. 贪心.杂凑.递归.分类.评分.哈希.共识.聚类.分治.启发式.粒子群.最大期望.最小完成时间.序列最小优化....算法无数,但是基础类似,无非坐标处理. ...

  4. Java控制台输入教程~~~~

    Java控制台输入教程~~~~ 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所有输入的内容传给Scanner,作为扫描对象.如果 ...

  5. Java 控制台程序的基本结构测试分析草稿

    Java 控制台程序的基本结构测试分析 19 xon 继续

  6. java控制台输出等腰三角形,并且是倒序正序输出【原创】

    文章结尾有彩蛋 java控制台输出等腰三角形,并且是倒序正序输出[原创] import java.util.Scanner;public class Sjx {public static void m ...

  7. java控制台输入汉字_给我一个JAVA控制台输入中文的实例

    给我一个JAVA控制台输入中文的实例 关注:205  答案:3  mip版 解决时间 2021-01-27 14:43 提问者葃日懙妳 2021-01-26 20:40 越简单越好,就是运行之后出了控 ...

  8. JAVA控制台扑克牌游戏,洗牌,发牌,比较大小

    此游戏是一个简单的并且很基础的java控制台程序.这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家.有洗好的牌,也有玩家了,那么就开始 ...

  9. IDEA+Java控制台实现宠物管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.获取资源 二.系统展示 1.登录系统 2.查询宠物信息 3.增加宠物信息 4.更新宠物信息 5.删除宠物信息 三.部分代码 Busin ...

  10. java控制台打印乱码_java控制台输出出现乱码怎么解决

    java控制台输出出现乱码怎么解决 发布时间:2020-06-24 10:37:14 来源:亿速云 阅读:82 作者:Leah java控制台输出出现乱码怎么解决?相信很多没有经验的人对此束手无策,为 ...

最新文章

  1. 海康威视 AI Cloud 软硬件平台
  2. MapReduce开发总结
  3. kernel module required key not available
  4. Gaze Estimation笔记——data normalization
  5. CVPR2020 | 华为GhostNet超越谷歌MobileNetV3
  6. 机器视觉:自动织物检测系统
  7. Linux集群在银行信息化中的应用(2)
  8. html5 dom 结构,HTML5 DOM扩展
  9. 应急响应— 操作系统分析(病毒、后门)
  10. pandas5 数据分组与聚合
  11. vb用计算机解决鸡兔同笼,vb解决鸡兔同笼问题
  12. 苹果的新技术3D Touch与以往的“长按屏幕”有何区别?
  13. 完整iOS APP发布App Store上架流程指南
  14. 低功耗蓝牙BLE之修改广播间隔等参数
  15. 如何做到数据分析报告(五)
  16. DES加解密算法原理详解与实现
  17. 案例研究 | Soul是如何破解Z世代社交密码的?
  18. java excel异步导出_Java导出Excel
  19. C语言实现PING功能
  20. 《华为研发》阅读 - 2

热门文章

  1. 笔记:算法笔记-胡凡、曾磊
  2. 逆Laplace数值逆变换
  3. 电力电缆2021年考试题库
  4. Apalis Imx8qm记录
  5. 《Redis开发与运维》学习第四章
  6. 安卓系统刷机怎么刷机_手机怎么刷机
  7. MAC IDEA 常用快捷键
  8. Java调用OpenDDS(2)-理解OpenDDS自带的Messager示例
  9. Web前端工程师常用的8个工具
  10. 利用Python收发邮件