java控制台通讯录
一、課程設(shè)計(jì)目的
本課程設(shè)計(jì)是利用Java進(jìn)行程序設(shè)計(jì)的一個(gè)關(guān)鍵實(shí)踐環(huán)節(jié)。它是根據(jù)教學(xué)計(jì)劃的要求,在教師的指導(dǎo)下,對(duì)學(xué)生實(shí)施程序設(shè)計(jì)訓(xùn)練的必要過程,是對(duì)前期課堂教學(xué)效果的檢驗(yàn)。其目標(biāo)在于培養(yǎng)學(xué)生綜合運(yùn)用面向?qū)ο蟮姆椒ㄍ瓿尚⌒蛙浖到y(tǒng)的分析與設(shè)計(jì),熟練使用Java語言及JavaSE類庫完成桌面應(yīng)用軟件的開發(fā)和調(diào)試。通過這個(gè)課程設(shè)計(jì),要求學(xué)生能夠遵循軟件開發(fā)過程的基本規(guī)范,按照課程設(shè)計(jì)的題目要求,獨(dú)立地完成設(shè)計(jì)、編寫、調(diào)試和測(cè)試應(yīng)用程序及編寫文檔的任務(wù)。
二、課程設(shè)計(jì)任務(wù)
通訊錄:
制作一個(gè)通訊錄程序,功能要求:
三、需求分析
所選擇的課題進(jìn)行需求分析,詳細(xì)描述所要實(shí)現(xiàn)的功能
需要實(shí)現(xiàn)的功能如下:
1.系統(tǒng)可以使用命令退出
2.信息的查詢:可以讓用戶選擇是否繼續(xù)查詢,或隨時(shí)結(jié)束
3.信息的添加
4.信息的刪除:當(dāng)用戶輸入未在通訊錄中的人時(shí)提示用戶重新輸入
5.信息的修改
6.信息的顯示
7.信息的拷貝:提示用戶要存放及查看的位置
8.返回主菜單:每項(xiàng)功能的使用完成后能夠返回主菜單選擇其他功能
四、系統(tǒng)設(shè)計(jì)
系統(tǒng)模塊劃分,描述類與類之間的關(guān)系
先考慮到通訊錄的內(nèi)容為:姓名與電話,所以建立聯(lián)系人實(shí)體類Contact
再考慮到系統(tǒng)功能為數(shù)據(jù)的增刪改查,所以定義了訪問數(shù)據(jù)的類Text
然后采用類MainMenu實(shí)現(xiàn)界面上顯示
五、系統(tǒng)實(shí)現(xiàn)
程序設(shè)計(jì),核心模塊實(shí)現(xiàn)技術(shù)的說明
增添模塊:
?
?
刪除模塊:
?
?
修改模塊:
?
?
查詢模塊:
?
?
文件操作讀寫方法:
?
?
?
界面跳轉(zhuǎn)方法:
GoView()
六、總結(jié)
我的課程設(shè)計(jì)的基于Java的通訊錄系統(tǒng)。在一個(gè)月的課程時(shí)間里,通過不斷的查找資料,調(diào)試代碼和同學(xué)的幫助,完成了指定的系統(tǒng)的功能。通過這次課程設(shè)計(jì),我加深了對(duì)Java程序的理解,熟練掌握了類的封裝等,并且能把它們運(yùn)用到實(shí)際的程序中去。
通過這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣和開發(fā)系統(tǒng)時(shí)應(yīng)注意的流程。
?
附錄:
程序代碼(主要模塊)
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("***查詢聯(lián)系人請(qǐng)按0!***");
contact.AddMenuBar("***添加聯(lián)系人請(qǐng)按1!***");
contact.AddMenuBar("***刪除聯(lián)系人請(qǐng)按2!***");
contact.AddMenuBar("***修改聯(lián)系人請(qǐng)按3!***");
contact.AddMenuBar("顯示所有聯(lián)系人信息請(qǐng)按4!");
contact.AddMenuBar("拷貝所有聯(lián)系人信息請(qǐng)按5!");
contact.PrintMenuBar();
?System.out.println("*************************");
System.out.println("請(qǐng)選擇功能(0-5):");
while(GoView.Menu()==0);
}
?
public?static?void?main(String args[]) {
int?judge=0;
while(judge==0){
new?MainMenu();
System.out.println("返回請(qǐng)按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("請(qǐng)輸入客戶姓名:");
contact.setName(a.nextLine());
System.out.println("請(qǐng)輸入客戶電話號(hào)碼:");
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?自動(dòng)生成的構(gòu)造函數(shù)存根
}
public?static?String[] getOfCustomerInfor(List <Contact>list){
String arg[]=new?String[list.size()];
arg[0]="聯(lián)系人姓名 聯(lián)系人電話";
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 自動(dòng)生成的構(gòu)造函數(shù)存根
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 + "錯(cuò)誤!"); ?
?????????} ????????
?????} ?
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 + "錯(cuò)誤!"); ?
?????????} ????????
?????} ?
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("未找到此人無法刪除,請(qǐng)重新輸出姓名"+"\n請(qǐng)輸入姓名:");
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("未找到此人,請(qǐng)重新輸入!");
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("未找到此人無法修改,請(qǐng)重新輸出姓名"+"\n請(qǐng)輸入姓名:");
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("請(qǐng)輸入新的用戶信息:");
writeallLine("src/1.txt", Array.getOfCustomerInfor(ple));
new Add();
return 1;
}
System.out.println("未找到該用戶,請(qǐng)重新輸入!");
return 0;
}
}
?
package?task;
?
import?java.util.Scanner;
?
public?class?Delete {
private?Text xx;
private?Scanner scanner;
public?Delete() {
// TODO?自動(dòng)生成的構(gòu)造函數(shù)存根
xx=new?Text();
int?judge=1;
scanner?= new?Scanner(System.in);
while(judge==1){
System.out.println("請(qǐng)輸入要?jiǎng)h除的聯(lián)系人的姓名"+"\n請(qǐng)輸入姓名:");
xx.DeleteInfor();
System.out.println("是否確認(rèn)刪除聯(lián)系人,繼續(xù)刪除輸入1,否則任意鍵結(jié)束查詢");
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?自動(dòng)生成的構(gòu)造函數(shù)存根
int?judge=1;
scanner?= new?Scanner(System.in);
xx=new?Text();
while(judge==1){
System.out.println("請(qǐng)輸入聯(lián)系人姓名:");
xx.SearchName();
System.out.println("是否要繼續(xù)查詢,繼續(xù)請(qǐng)按1,退出請(qǐng)按任意鍵");
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?自動(dòng)生成的構(gòu)造函數(shù)存根
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("請(qǐng)輸入要存放的位置以及名字");
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("復(fù)制成功。請(qǐng)往"+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("請(qǐng)輸入要修改的的姓名"+"\n請(qǐng)輸入客戶姓名:");
xx.Update();
}
public?static?void?main(String arg[]){
new?Change();
}
}
?
?
?
總結(jié)
以上是生活随笔為你收集整理的java控制台通讯录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++实现通讯录制作
- 下一篇: 矩阵分析与应用(四)——逆矩阵、广义逆矩