通讯录中TXT文件读取问题
 package in;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class Demo extends JFrame {

    /*
     * 界面设计
     * */
    public Demo(){
        Container c = getContentPane(); //定义一个顶级容器c
        setAlwaysOnTop(true); //窗体置顶
        JPanel jp = new JPanel();   //新建JPanel面板--jp
        JButton button1 = new JButton("新建联系人");
        JButton button2 = new JButton("删除联系人");
        JButton button3 = new JButton("编辑联系人");
        JButton button4 = new JButton("查找联系人");
        JButton button5 = new JButton("显示所有联系人");
        JButton button6 = new JButton("保存联系人到本地");
        JButton button7 = new JButton("读取本地联系人");
        jp.setLayout(new GridLayout(3,4,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距)
        jp.add(button1);
        jp.add(button2);
        jp.add(button3);
        jp.add(button4);
        jp.add(button5);
        jp.add(button6);
        jp.add(button7);
        c.add(jp);//将JPanel面板jp添加到顶级容器c中
        setSize(600,150);
        setTitle("*通 讯 录 管 理 系 统*");
        setVisible(true);
        setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


        /*
         *按键响应
         * 
         * */
        button1.addActionListener(new ActionListener(){//添加功能实现 

            public void actionPerformed(ActionEvent arg0){
                Infro.addFunction();
            }
        });
        button2.addActionListener(new ActionListener(){//删除功能实现
            public void actionPerformed(ActionEvent arg0){
                Infro.deleteFunction();
            }
        });
        button3.addActionListener(new ActionListener(){//修改功能实现
            public void actionPerformed(ActionEvent arg0){
                Infro.reditFunction();
            }
        });
        button4.addActionListener(new ActionListener(){//查询功能实现
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.searchFunction();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        button5.addActionListener(new ActionListener(){//显示功能实现
            public void actionPerformed(ActionEvent arg0){
                Infro.showFunction();
            }
        });
        button6.addActionListener(new ActionListener(){//保存功能实现
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.writeFunction();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        button7.addActionListener(new ActionListener(){//读取功能实现
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.readFunction();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Demo();
        Infro a = new Infro("", "", "", "", "", "");
    }

}

package in;


import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedReader;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

import javax.swing.JPanel;



class Infro {
    public String Name;
    public String Sex;
    public String Unit;
    public String Homephone;
    public String Telephone;
    public String E_mail;
    static int index = 0;
    static ArrayList<Infro> list = new ArrayList();
    static int len = list.size();
    //构造函数
    public Infro(String Name,String Sex,String Unit,String Homephone,String Telephone,String E_mail){
        this.Name = Name;
        this.Sex = Sex;
        this.Unit = Unit;
        this.Homephone = Homephone;
        this.Telephone = Telephone;
        this.E_mail = E_mail;
    }
    public String toString(){
        return "姓名:"+Name+"\t性别:"+Sex+"\t单位:"+Unit+"\t住宅电话:"+Homephone
                +"\t移动电话:"+Telephone+"\tE_mail:"+E_mail;
    }

    /*
                            * 添加功能
     * */
    public static void addFunction(){//添加功能
        Infro infro = new Infro("","","","","","");
        System.out.println("请输入添加的数据:");
        Scanner in = new Scanner(System.in);
        System.out.println("输入姓名:");
        infro.Name = in.next();
        System.out.println("输入性别:");
        infro.Sex = in.next();
        System.out.println("输入单位:");
        infro.Unit = in.next();
        System.out.println("输入住宅电话:");
        infro.Homephone = in.next();
        System.
        out.println("输入移动电话:");
        infro.Telephone = in.next();
        System.out.println("输入E_mail:");
        infro.E_mail = in.next();
        list.add(index,infro);
        index++;
        if(list.isEmpty()){
            System.out.println("数据添加失败啦");
        }else{
            System.out.println("数据添加成功啦");
            len++;//list集合长度加一
//          System.out.println(list.get(0).toString());
        }
        System.out.println("是否继续添加?1.是   2.否");
        Scanner e=new Scanner(System.in);
        int e1=e.nextInt();
        if(e1==1){
            Infro.addFunction();
        }else{
            return;
        }
    }

    /*
                            * 删除功能
     * */
     public static void deleteFunction(){
         System.out.println("输入要删除的联系人的姓名");
         Scanner in_2 = new Scanner(System.in);
         String d1 = in_2.nextLine();
         java.util.Iterator<Infro> it = list.iterator();
         while (it.hasNext()){
               Infro infro = it.next();
               if (infro.Name.equals(d1)){
                    it.remove();
                    --index;//一定要加这个,否则当做了删除操作再做添加操作的时候会出现异常(类似于指针,栈)
                    System.out.println("删除完毕"+"此时通讯录记录条数为:" + --len);
               }
            }
         System.out.println("是否继续删除?1.是   2.否");
         Scanner e=new Scanner(System.in);
         int e1=e.nextInt();
         if(e1==1){
            Infro.deleteFunction();
         }else{
            return;
        }
     }
     /*
      *                     修改功能
      * */
     public static void reditFunction(){
         System.out.println("输入要修改的通讯录的姓名");
         Scanner in_r = new Scanner(System.in);
         String r1 = in_r.nextLine();
         for(int a = 0; a < len;a++){
             if(r1.equals(list.get(a).Name)){
                 System.out.println("输入修改后的性别:");
                 String Sex_1 = in_r.next();
                 list.get(a).Sex = Sex_1;
                 System.out.println("输入修改后的单位:");
                 String Unit_1 = in_r.next();
                 list.get(a).Unit = Unit_1;
                 System.out.println("输入修改后的住宅电话:");
                 String Homephone_1 = in_r.next();
                 list.get(a).Homephone = Homephone_1;
                 System.out.println("输入修改后的移动电话:");
                 String Telephone_1 = in_r.next();
                 list.get(a).Telephone = Telephone_1;
                 System.out.println("输入修改后的E_mail:");
                 String E_mail_1 = in_r.next();
                 list.get(a).E_mail = E_mail_1;
                 System.out.println("数据修改完毕");
             }
         }
         System.out.println("是否继续修改?1.是   2.否");
         Scanner e=new Scanner(System.in);
         int e1=e.nextInt();
         if(e1==1){
            Infro.reditFunction();
         }else{
            return;
         }
     }
        /*
                                * 查询功能
        * */

     public static void searchFunction() throws Exception{//查询功能

        System.out.println("请选择查询方式: ");
        System.out.println("1.姓名    2.性别    3.单位   4.住宅电话   5.移动电话   6.E_mail ");
        Scanner in_0=new Scanner(System.in);
        int s0=in_0.nextInt();
        if(s0==1){
        System.out.println("请输入要查询的姓名:");
        Scanner in_1 = new Scanner(System.in);
        String s1=in_1.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s1.equals(list.get(a).Name)){
                System.out.println(list.get(a).toString());
            }
        }
        }
        else if(s0==2){
            System.out.println("请输入要查询的性别:");
            Scanner in_2 = new Scanner(System.in);
            String s2=in_2.nextLine();
            for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
                if(s2.equals(list.get(a).Sex)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==3){
            System.out.println("请输入要查询的单位:");
            Scanner in_3 = new Scanner(System.in);
            String s3=in_3.nextLine();
            for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
                if(s3.equals(list.get(a).Unit)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        if(s0==4){
            System.out.println("请输入要查询的住宅电话:");
            Scanner in_4 = new Scanner(System.in);
            String s4=in_4.nextLine();
            for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
                if(s4.equals(list.get(a).Homephone)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==5){
            System.out.println("请输入要查询的移动电话:");
            Scanner in_5 = new Scanner(System.in);
            String s5=in_5.nextLine();
            for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
                if(s5.equals(list.get(a).Telephone)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==6){
            System.out.println("请输入要查询的E_mail:");
            Scanner in_6 = new Scanner(System.in);
            String s6=in_6.nextLine();
            for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
                if(s6.equals(list.get(a).E_mail)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
    }

    /*
                            * 显示功能
     * */
    public static void showFunction(){
        for(int i = 0 ;i<len;i++){
            System.out.println(list.get(i).toString());
        }
    }
    /*
     *                      保存功能
     * */
    public static void writeFunction() throws IOException{
        FileWriter writer = new FileWriter("通讯录管理.txt");
        for(int i = 0 ;i<len;i++){
            String []strwriter = new String[len];
            strwriter[i]=list.get(i).toString();
            writer.write(strwriter[i]);
            writer.write("\r\n");
            System.out.println("成功写入一行数据到 通讯录管理.txt 中");
        }
        writer.close();//关闭写入流,释放资源
    }
    /*
     *                      读取功能
     * */
    public static void readFunction() throws IOException{
        FileReader reader = new FileReader("通讯录管理.txt");
        BufferedReader br = new BufferedReader(reader);
        String str;
        while((str = br.readLine()) != null){//每次读取一行文本,判断是否到达文件尾
            System.out.println(str);
        }
        br.close();
    }
}

课程设计中遇到了问题… 在运行时输入,可以查询,编辑等操作。可是保存到本地后退出运行,第二次再运行时读取本地联系人,就没办法执行查询操作了。我改了好久还是不行,请各位哥哥姐姐帮忙看一下,拜托~因为还没有学数据库,只能用文件了。
超过20个分屏显示就不要了,因为貌似java没有分屏显示……其他的功能,按姓名排序也希望你们能给些思路,谢谢谢谢

这是题目:
3. 以本班同学的具体数据为背景,设计一个本班同学通讯录(3人)
通讯录要求存储姓名、性别、单位、住宅电话、移动电话、E-mail地址等内容。系统功能要求如下:
(1)通讯录记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。
(2)增加某人的通讯录。
(3)修改某人的通讯录。
(4)删除某人的通讯录。
(5)按多种方式查询符合条件的信息。

4个回答

你重新打开新的程序 必须先执行加载功能 把文件里的数据加载到list中
因为你的查询代码遍历的是list 如果你不执行加载 遍历一个空的list当然就没有数据了。
并且 我发现 你再次打开一个 重新新增会把原来的文件覆盖掉。所以我觉得必须写一个static静态块,加载文件中内容对list进行初始化

//Demo
package in;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class Demo extends JFrame {

/*
 * 界面设计
 * */
public Demo(){
    Container c = getContentPane(); //定义一个顶级容器c
    setAlwaysOnTop(true); //窗体置顶
    JPanel jp = new JPanel();   //新建JPanel面板--jp
    JButton button1 = new JButton("新建联系人");
    JButton button2 = new JButton("删除联系人");
    JButton button3 = new JButton("编辑联系人");
    JButton button4 = new JButton("查找联系人");
    JButton button5 = new JButton("显示所有联系人");
    JButton button6 = new JButton("保存联系人到本地");
    JButton button7 = new JButton("读取本地联系人");
    jp.setLayout(new GridLayout(3,4,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距)
    jp.add(button1);
    jp.add(button2);
    jp.add(button3);
    jp.add(button4);
    jp.add(button5);
    jp.add(button6);
    jp.add(button7);
    c.add(jp);//将JPanel面板jp添加到顶级容器c中
    setSize(600,150);
    setTitle("*通 讯 录 管 理 系 统*");
    setVisible(true);
    setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    /*
     *按键响应
     * 
     * */
    button1.addActionListener(new ActionListener(){//添加功能实现 

        public void actionPerformed(ActionEvent arg0){
            Infro.addFunction();
        }
    });
    button2.addActionListener(new ActionListener(){//删除功能实现
        public void actionPerformed(ActionEvent arg0){
            Infro.deleteFunction();
        }
    });
    button3.addActionListener(new ActionListener(){//修改功能实现
        public void actionPerformed(ActionEvent arg0){
            Infro.reditFunction();
        }
    });
    button4.addActionListener(new ActionListener(){//查询功能实现
        public void actionPerformed(ActionEvent arg0){
            try {
                Infro.searchFunction();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    button5.addActionListener(new ActionListener(){//显示功能实现
        public void actionPerformed(ActionEvent arg0){
            Infro.showFunction(1);//TODO 默认显示第一页
        }
    });
    button6.addActionListener(new ActionListener(){//保存功能实现
        public void actionPerformed(ActionEvent arg0){
            try {
                Infro.writeFunction();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
    button7.addActionListener(new ActionListener(){//读取功能实现
        public void actionPerformed(ActionEvent arg0){
            try {
                Infro.readFunction();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}

public static void main(String[] args) {
    new Demo();
    Infro a = new Infro("", "", "", "", "", "");
}

}

另外很想吐槽你这样 窗体做一半 控制台做一半的行为。还不如全做成窗体来得好。
分屏显示 不就是传入 页数 和 页行数, 比如传入 1 20 就是查询 前 20条记录。你再弄一个 下一页上一页的选项,再传入 2 20 3 20 就可以达到这样的效果了。按姓名排序也简单的,你把所有的数据保存到list中后,用Collections.sort(List list,Comparator c) 写匿名接口,重写compare方法就可以排序了

miaoch
miaoch 回复Jingyu_zuo: +一下qq吧 476864279
3 年多之前 回复
qq_32248345
Jingyu_zuo 回复miaoch:麻烦前辈空闲的时候帮我改一下这个程序,虚心求教
3 年多之前 回复
qq_32248345
Jingyu_zuo 回复miaoch: 还是不行…… T_T 初学的,太笨了。能不能请您在有空的时候,抽出一丢丢的的时间写一下这个代码,就是那个姓名排序的和分页的,我看看,行吗?不好意思啊,麻烦了。
3 年多之前 回复
miaoch
miaoch 回复Jingyu_zuo: 不客气
3 年多之前 回复
qq_32248345
Jingyu_zuo 我也想都做成窗口,可是老师这块儿讲的很少,有些不明白。而且是刚接触java,像 list的方法,我们还没学过,我都是在网上自己查的。所以有些不懂,谢谢你的解答。思路我明白了,可是代码还是有些不会写… 我在网上查查看吧。谢谢
3 年多之前 回复

//Infro
package in;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Infro {
public String Name;
public String Sex;
public String Unit;
public String Homephone;
public String Telephone;
public String E_mail;

static int index = 0;
static ArrayList<Infro> list = new ArrayList<>();
static int len;

//TODO  分页大小
private static final int limit = 5;

//TODO
static {
    try {
        initList();
    } catch (IOException e) {
        System.out.println("读取文件失败!");
        e.printStackTrace();
    }
}
//TODO  初始化list
private static void initList() throws IOException {
    FileReader reader = new FileReader("通讯录管理.txt");
    BufferedReader br = new BufferedReader(reader);
    String str;
    while((str = br.readLine()) != null){//每次读取一行文本,判断是否到达文件尾
        String[] splitStr = str.split(" ");
        Infro info = new Infro(splitStr[0],
                splitStr[1], splitStr[2], splitStr[3],
                splitStr[4], splitStr[5]);
        list.add(info);
    }
    len = list.size();
    br.close();
}

//构造函数
public Infro(String Name,String Sex,String Unit,String Homephone,String Telephone,String E_mail){
    this.Name = Name;
    this.Sex = Sex;
    this.Unit = Unit;
    this.Homephone = Homephone;
    this.Telephone = Telephone;
    this.E_mail = E_mail;
}

public String toString(){
    return "姓名:"+Name+"\t性别:"+Sex+"\t单位:"+Unit+"\t住宅电话:"+Homephone
            +"\t移动电话:"+Telephone+"\tE_mail:"+E_mail;
}

//TODO 保存到本地格式 方便读取 split
public String saveFormat(){
    return Name+" "+Sex+" "+Unit+" "+Homephone
            +" "+Telephone+" "+E_mail;
}

/*
                        * 添加功能
 * */
public static void addFunction(){//添加功能
    Infro infro = new Infro("","","","","","");
    System.out.println("请输入添加的数据:");
    Scanner in = new Scanner(System.in);
    System.out.println("输入姓名:");
    infro.Name = in.next();
    System.out.println("输入性别:");
    infro.Sex = in.next();
    System.out.println("输入单位:");
    infro.Unit = in.next();
    System.out.println("输入住宅电话:");
    infro.Homephone = in.next();
    System.
    out.println("输入移动电话:");
    infro.Telephone = in.next();
    System.out.println("输入E_mail:");
    infro.E_mail = in.next();
    list.add(index,infro);
    index++;
    if(list.isEmpty()){
        System.out.println("数据添加失败啦");
    }else{
        System.out.println("数据添加成功啦");
        len++;//list集合长度加一

// System.out.println(list.get(0).toString());
}
System.out.println("是否继续添加?1.是 2.否");
Scanner e=new Scanner(System.in);
int e1=e.nextInt();
if(e1==1){
Infro.addFunction();
}else{
return;
}
}

/*
                        * 删除功能
 * */
 public static void deleteFunction(){
     System.out.println("输入要删除的联系人的姓名");
     Scanner in_2 = new Scanner(System.in);
     String d1 = in_2.nextLine();
     java.util.Iterator<Infro> it = list.iterator();
     while (it.hasNext()){
           Infro infro = it.next();
           if (infro.Name.equals(d1)){
                it.remove();
                --index;//一定要加这个,否则当做了删除操作再做添加操作的时候会出现异常(类似于指针,栈)
                System.out.println("删除完毕"+"此时通讯录记录条数为:" + --len);
           }
        }
     System.out.println("是否继续删除?1.是   2.否");
     Scanner e=new Scanner(System.in);
     int e1=e.nextInt();
     if(e1==1){
        Infro.deleteFunction();
     }else{
        return;
    }
 }
 /*
  *                     修改功能
  * */
 public static void reditFunction(){
     System.out.println("输入要修改的通讯录的姓名");
     Scanner in_r = new Scanner(System.in);
     String r1 = in_r.nextLine();
     for(int a = 0; a < len;a++){
         if(r1.equals(list.get(a).Name)){
             System.out.println("输入修改后的性别:");
             String Sex_1 = in_r.next();
             list.get(a).Sex = Sex_1;
             System.out.println("输入修改后的单位:");
             String Unit_1 = in_r.next();
             list.get(a).Unit = Unit_1;
             System.out.println("输入修改后的住宅电话:");
             String Homephone_1 = in_r.next();
             list.get(a).Homephone = Homephone_1;
             System.out.println("输入修改后的移动电话:");
             String Telephone_1 = in_r.next();
             list.get(a).Telephone = Telephone_1;
             System.out.println("输入修改后的E_mail:");
             String E_mail_1 = in_r.next();
             list.get(a).E_mail = E_mail_1;
             System.out.println("数据修改完毕");
         }
     }
     System.out.println("是否继续修改?1.是   2.否");
     Scanner e=new Scanner(System.in);
     int e1=e.nextInt();
     if(e1==1){
        Infro.reditFunction();
     }else{
        return;
     }
 }
    /*
                            * 查询功能
    * */

 public static void searchFunction() throws Exception{//查询功能

    System.out.println("请选择查询方式: ");
    System.out.println("1.姓名    2.性别    3.单位   4.住宅电话   5.移动电话   6.E_mail ");
    Scanner in_0=new Scanner(System.in);
    int s0=in_0.nextInt();
    if(s0==1){
    System.out.println("请输入要查询的姓名:");
    Scanner in_1 = new Scanner(System.in);
    String s1=in_1.nextLine();
    for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
        if(s1.equals(list.get(a).Name)){
            System.out.println(list.get(a).toString());
        }
    }
    }
    else if(s0==2){
        System.out.println("请输入要查询的性别:");
        Scanner in_2 = new Scanner(System.in);
        String s2=in_2.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s2.equals(list.get(a).Sex)){
                System.out.println(list.get(a).toString());
            }
        }
    }
    else if(s0==3){
        System.out.println("请输入要查询的单位:");
        Scanner in_3 = new Scanner(System.in);
        String s3=in_3.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s3.equals(list.get(a).Unit)){
                System.out.println(list.get(a).toString());
            }
        }
    }
    if(s0==4){
        System.out.println("请输入要查询的住宅电话:");
        Scanner in_4 = new Scanner(System.in);
        String s4=in_4.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s4.equals(list.get(a).Homephone)){
                System.out.println(list.get(a).toString());
            }
        }
    }
    else if(s0==5){
        System.out.println("请输入要查询的移动电话:");
        Scanner in_5 = new Scanner(System.in);
        String s5=in_5.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s5.equals(list.get(a).Telephone)){
                System.out.println(list.get(a).toString());
            }
        }
    }
    else if(s0==6){
        System.out.println("请输入要查询的E_mail:");
        Scanner in_6 = new Scanner(System.in);
        String s6=in_6.nextLine();
        for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常
            if(s6.equals(list.get(a).E_mail)){
                System.out.println(list.get(a).toString());
            }
        }
    }
}

/*
        TODO                * 显示功能
 * */
public static void showFunction(int page) {
    if (page <=0 || page > len/limit + 1) {
        System.out.println("页数越界啦");
        return;
    }

    for (int i = (page-1) * limit; i<len && i < page * limit; i++)  {
        System.out.println(list.get(i).toString());
    }
    System.out.println("第"+page+"/"+(len/limit + 1)+"页");
    System.out.println("1:下一页  2:上一页  0:退出");
    int e1 = new Scanner(System.in).nextInt();
    if (e1==1) {
        Infro.showFunction(page + 1);
    } else if (e1 == 2){
        Infro.showFunction(page - 1);
    }
}
/*
 *                      TODO 保存功能(保存不用toString)
 * */
public static void writeFunction() throws IOException{
    FileWriter writer = new FileWriter("通讯录管理.txt");
    for(int i = 0 ;i<len;i++){
        String []strwriter = new String[len];
        strwriter[i] = list.get(i).saveFormat();
        writer.write(strwriter[i]);
        writer.write("\n");
    }
    System.out.println("成功写入" + len + "行数据到 通讯录管理.txt 中");
    writer.close();//关闭写入流,释放资源
}
/*
 *                     TODO 读取功能 不再读取文件 而是遍历list
 * */
public static void readFunction() throws IOException{
    for (int i=0; i<list.size(); i++) {
        Infro info = list.get(i);
        System.out.println(info.toString());
    }
}

}


qq_32248345
Jingyu_zuo 回复miaoch: 嗯嗯 谢谢n_n 我会好好看的
3 年多之前 回复
miaoch
miaoch 排序的话 忘记写了。思路就是在初始化list完成的时候排序,以后每添加一次,重新排序。排序的话 用Collections.sort(List list,Comparator c) 你去搜搜吧
3 年多之前 回复
miaoch
miaoch 这两个文件 加了TODO 注释的 都是我新加的
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++中txt文件读取失败

编译无错误,但运行时,文件根本打不开,TXT文件,源代码是在同一文件里面,

通讯录存储结构是链表形式,类创建的通讯录怎么保存信息到txt文件并读取啊??是C++课设

我的Save和Read函数好像不行 下面是我的完整代码 求求哪位大佬帮我加这两个函数,课设要答辩了,来不及辽!!!! ``` #include <iostream> #include <string> #include <fstream> #include <string> using namespace std; typedef int contacttype; class contact{ public: string name; string address; string phonenum; contact *next; contacttype ctype; contact(){ name="0"; address="0"; phonenum="0"; ctype=0; next=NULL; } }; //定义联系人结点类 class contactlist{ public: contact *head; contactlist(){ head=new contact(); } void Mainscreen(contact *dead); void UserReg(contact *head); void Login(contact *head); void Title(); void Assert(contact *head); void Search(contact *head); void Delete(contact *head); void Change(contact *head); void Show(contact *head); void TypeShow(contact *head); friend void typeshow(contact *head,int choice); void Save(contact *head); void Read(contact *head); };//定义联系人链表类 void contactlist::UserReg(contact *head) { system("cls"); FILE *fp; char Linedata[50]={0},User[20],Pass[20]; fp = fopen("data.dat","at"); cout<<"******欢迎进入新账号注册新账号注册:******"<<endl; cout<<"请输入用户名:"; fflush(stdin); gets(User); cout<<"请输入密码:"; fflush(stdin); gets(Pass); strcpy(Linedata,User); strcat(Linedata,","); strcat(Linedata,Pass); strcat(Linedata,"\n"); fputs(Linedata,fp); fclose(fp); cout<<"注册成功!"<<endl; system("pause"); system("cls"); Title(); cout<<"等待转入登陆界面………………"<<endl; Login(head); } void contactlist::Login(contact *head)//登陆 { FILE *fp; int find=0; char User[20],Pass[20],Userstrcat[50]={0}; char c,Userdata[50]={0}; fp = fopen("data.dat","r"); cout<<"用户登录:"<<endl; cout<<"请输入用户名:"; fflush(stdin); gets(User); cout<<"请输入密码:"; fflush(stdin); gets(Pass); strcpy(Userstrcat,User); strcat(Userstrcat,","); strcat(Userstrcat,Pass); strcat(Userstrcat,"\n"); while (!feof(fp)) { fgets(Userdata,19,fp); if (strcmp(Userdata,Userstrcat)==0 ) { cout<<"登录成功!"<<endl; find=1; Read(head); //登陆成功后读取文件信息,保存在head链表里 system("cls"); Title(); Mainscreen(head); } fclose(fp); if (!find) { cout<<"用户名不存在或密码错误"<<endl; cout<<"请选择重新登陆(按数字1)或者注册新账号(按数字2):"; cin>>c; if(c=='1') Login(head); else if(c=='2') contactlist::UserReg(head); } } void contactlist::Save(contact *head) { FILE *fp; contact *point; point=head; fp=fopen("G:\\temp - 副本2\\lin.txt","wb+"); if(fp==NULL) { cout<<"can not open file"<<endl; exit(0); } else{ while (point) { fwrite(point, sizeof(class contact),1, fp); point=point->next; } } fclose(fp); } /* void contactlist::Read(contact *head) { FILE *p=fopen("G:\\temp - 副本2\\lin.txt","rb"); fread(head,sizeof(class contact),1,p); while(head->next){ head=head->next; fread(head,sizeof(class contact),1,p); } */ void contactlist::Assert(contact *head) { system("cls"); Title(); contact *p,*q; /* if(head->next==NULL) { p=new contact(); cout<<"当前通讯录为空,请输入第一个记录的联系人姓名:"; cin>>p->name; cout<<"请输入联系人的家庭住址:"; cin>>p->address; cout<<"请输入联系人的手机号码:"; cin>>p->phonenum; cout<<"1:朋友"<<endl; cout<<"2:同学"<<endl; cout<<"3:亲戚"<<endl; cout<<"4:同事"<<endl; cout<<"请选择联系人的分组:"; cin>>p->ctype; head->next=p; p->next=NULL; system("cls"); Title(); } else if(head->next!=NULL) { */ q=new contact; q=head; p=new contact; cout<<"请输入联系人的姓名:"; cin>>p->name; cout<<"请输入联系人的家庭住址:"; cin>>p->address; cout<<"请输入联系人的手机号码:"; cin>>p->phonenum; cout<<"联系人分类:"<<endl; cout<<"1:朋友"<<endl; cout<<"2:同学"<<endl; cout<<"3:亲戚"<<endl; cout<<"4:同事"<<endl; cout<<"请选择联系人的分组:"; cin>>p->ctype; p->next=q->next; q->next=p; system("cls"); Title(); //} contactlist::Mainscreen(head); } void contactlist::Delete(contact *head) { int flag=1; system("cls"); char de_con[10]; cout<<"请输入要删除记录的联系人姓名:"; cin>>de_con; contact *q,*front;// front=new contact; q=head; while((q->next)!=NULL) { char Name[20]; strcpy(Name, (q->next->name).c_str()); if(strcmp(de_con,Name)==0) { cout<<"已找到需要注销的记录,正在注销中…………"<<endl; q->next=q->next->next; cout<<"该数据已注销成功,返回主页面…………"<<endl; flag=0; break; } q=q->next; } if(flag==1) cout<<"要删除的记录不存在"<<endl; contactlist::Mainscreen(head); } void contactlist::Change(contact *head) { system("cls"); Title(); int flag=1; contact *q; char name_con[10]; cout<<"请输入你要修改记录的联系人姓名:"; cin>>name_con; q=head->next; while(q!=NULL) { char Name[20]; strcpy(Name, (q->name).c_str()); if(strcmp(Name,name_con)==0) { cout<<"请开始记录的修改:"<<endl; cout<<"姓名:"; cin>>q->name; cout<<"家庭住址:"; cin>>q->address; cout<<"电话号码:"; cin>>q->phonenum; cout<<"联系人分组:"; cout<<"1:朋友"<<endl; cout<<"2:同学"<<endl; cout<<"3:亲戚"<<endl; cout<<"4:同事"<<endl; cout<<"请选择联系人的类型:"; cin>>q->ctype; cout<<"个人信息修改完成!"<<endl; flag=0; break; } q=q->next; } if(flag==1) cout<<"查找的记录不存在"<<endl; contactlist::Mainscreen(head); } void contactlist::Search(contact *head) { system("cls"); Title(); int flag=1; char name_con[10]; cout<<"请输入你要查找记录的联系人姓名:"; cin>>name_con; contact *q; q=head->next; while(q!=NULL) {char Name[20]; strcpy(Name, (q->name).c_str()); if(strcmp(Name,name_con)==0) { cout<<"姓名:"<<" "; cout<<"家庭住址:"<<" "; cout<<"电话号码:"<<" "; cout<<"联系人分组:"<<" "<<endl; cout<<q->name<<" "; cout<<q->address<<" "; cout<<q->phonenum<<" "; switch(q->ctype){ case 1:cout<<"朋友 "<<endl;break; case 2:cout<<"同学 "<<endl;break; case 3:cout<<"亲戚 "<<endl;break; case 4:cout<<"同事 "<<endl;break; } flag=0; break; } q=q->next; } if(flag==1) cout<<"查找的记录不存在"<<endl; contactlist::Mainscreen(head); } void contactlist::Show(contact *head) { system("cls"); Title(); if(head->next==NULL) { cout<<"通讯录为空,请选择操作1插入联系人"<<endl; contactlist::Mainscreen(head); } else { contact *q; q=head->next; cout<<"姓名:"<<" "; cout<<"家庭住址:"<<" "; cout<<"电话号码:"<<" "; cout<<"分组:"<<endl; while(q!=NULL) { cout<<q->name<<" "; cout<<q->address<<" "; cout<<q->phonenum<<" "; switch(q->ctype){ case 1:cout<<"朋友 "<<endl;break; case 2:cout<<"同学 "<<endl;break; case 3:cout<<"亲戚 "<<endl;break; case 4:cout<<"同事 "<<endl;break; } q=q->next; } contactlist::Mainscreen(head); } } void typeshow(contact *head,int choice) { contact *p; p=head->next; int flag=0; while(p!=NULL){ if(p->ctype==choice){ cout<<"姓名:"<<" "; cout<<"家庭住址:"<<" "; cout<<"电话号码:"<<" "<<endl; cout<<p->name<<" "; cout<<p->address<<" "; cout<<p->phonenum<<" "<<endl; flag=1; } p=p->next; } if(!flag) cout<<"该分组没有记录!"<<endl; } void contactlist::TypeShow(contact *head) { system("cls"); Title(); if(head->next==NULL) { cout<<"通讯录为空,请选择操作1添加记录或6退出系统"<<endl; contactlist::Mainscreen(head); } else { int choice; cout<<"输出所有朋友的记录----------------1"<<endl; cout<<"输出所有同学的记录----------------2"<<endl; cout<<"输出所有亲戚的记录----------------3"<<endl; cout<<"输出所有同事的记录----------------4"<<endl; cout<<"请选择:"; cin>>choice; typeshow(head,choice); contactlist::Mainscreen(head); } } void contactlist::Mainscreen(contact *head) { int choice; char a='*'; cout<<endl; cout<<" "<<"按照信息后的数字提示选择相应的操作:"<<endl; for(int i=0;i<34;i++) cout<<a<<" "; cout<<endl; cout<<a<<" 添加新的记录---------------------------------------------- 1 "<<a<<endl; cout<<a<<" 根据姓名查找相应的记录------------------------------------ 2 "<<a<<endl; cout<<a<<" 根据姓名删除相应的记录------------------------------------ 3 "<<a<<endl; cout<<a<<" 根据姓名修改相应的记录------------------------------------ 4 "<<a<<endl; cout<<a<<" 显示当前数据库中所有的记录-------------------------------- 5 "<<a<<endl; cout<<a<<" 显示同一分组的记录---------------------------------------- 6 "<<a<<endl; cout<<a<<" 退出通讯录管理系统---------------------------------------- 7 "<<a<<endl; for(i=0;i<34;i++) cout<<a<<" "; cout<<endl; cout<<"请输入你的选择:"; cin>>choice; switch(choice) { case 1:contactlist::Assert(head);break; case 2:contactlist::Search(head);break; case 3:contactlist::Delete(head);break; case 4:contactlist::Change(head);break; case 5:contactlist::Show(head);break; case 6:contactlist::TypeShow(head);break; case 7:system("cls");Save(head);exit(0); } } void contactlist::Title() { char a='*'; for(int i=0;i<120;i++) cout<<a; cout<<endl; cout<<" 通讯录管理系统"<<endl; cout<<endl; for(i=0;i<120;i++) cout<<a; cout<<endl; } int main() { contactlist *s=new contactlist(); s->Title(); cout<<"欢迎进入通讯录管理系统,请选择登陆方式:"<<endl; int selectNum; cout<<"1 注册新账户"<<endl;//输出一个选择菜单 cout<<"2 已有的账户登录"<<endl; cout<<"3 退出通讯录管理系统"<<endl; cin>>selectNum; switch (selectNum) { case 1:s->UserReg(s->head);break; case 2:s->Login(s->head); break; case 3:system("cls");Save(head);exit(0); break; //退出之前,把改过的通讯录重新读入文档 } return 0; } ```

MFC 怎么从TXT文件里面读取数据并显示到list control中

要写一个通讯录管理系统,txt里面存放联系人的信息,但是要怎么显示到list control里面啊

自己写的C语言通讯录,存在问题,求指点

显示和查找功能都有问题 是文件读写问题吗。。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include<windows.h> #define SIZE 100 struct addr{ char name[10]; int phone[10]; char address[30]; int zip[10]; char email[30]; }contact[SIZE]; FILE *fp; int n = 0; void fileread() { if((fp=fopen("contact.txt","r")) == NULL) { printf("文件不存在!\n"); if((fp=fopen("contact.txt","w")) == NULL) { printf("文件写入失败!\n"); exit(0); } exit(0); } fseek(fp,0,2); if(ftell(fp) > 0) { rewind(fp); for (n = 0; !feof(fp) && fread(&contact[n],sizeof(struct addr),1,fp); n++); } } void menu() { system("cls"); printf("[1]显示联系人\n"); printf("[2]查找联系人\n"); printf("[3]新建联系人\n"); printf("[4]删除联系人\n"); printf("[5]修改联系人\n"); printf("[0]退出\n"); printf("请输入你的选项:"); } void new_contact() { if(n == SIZE) printf("联系人已满!\n"); printf("请输入姓名:"); scanf("%s", contact[n].name); printf("电话号码:"); scanf("%d", contact[n].phone); printf("地址:"); scanf("%s", contact[n].address); printf("邮政编码:"); scanf("%d", contact[n].zip); printf("email:"); scanf("%s", contact[n].email); n++; int i; if((fp=fopen("contact.txt", "w")) == NULL) printf("打开文件失败!\n"); for(i = 0; i < n; i++) if(fwrite(&contact[i],sizeof(struct addr),1,fp) != 1) printf("写入文件失败!\n"); fclose(fp); //exit(0); } void search_contact() { int i, flag = 0; char name[10]; system("cls"); //if(n == 0) //printf("没有联系人"); //else //{ printf("请输入要查找的联系人姓名:"); scanf("%s", name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("姓名:%s", contact[i].name); printf("电话号码:%d", contact[i].phone); printf("地址:%s", contact[i].address); printf("邮政编码:%d", contact[i].zip); printf("email:%s", contact[i].email); flag = 1; } //} if(flag == 0) printf("不存在该联系人"); } void display_contact() { int i; system("cls"); if(n == 0) printf("没有联系人"); else { printf("姓名\t 电话号码\t 地址\t 邮政编码\t email\n"); for(i = 0; i < n; i++) { printf("%s\t", contact[i].name); printf("%d\t", contact[i].phone); printf("%s\t", contact[i].address); printf("%d\t", contact[i].zip); printf("%s\n", contact[i].email); } } } void update_contact() { int i, flag = 0; char name[10]; system("cls"); if(n == 0) printf("没有联系人"); printf("请输入要修改的联系人姓名:"); scanf("%s", &name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("以下是要修改的联系人信息:"); printf("姓名\t 电话号码\t 地址\t 邮政编码\t email\n"); printf("%s\t", contact[i].name); printf("%d\t", contact[i].phone); printf("%s\t", contact[i].address); printf("%d\t", contact[i].zip); printf("%s\n", contact[i].email); printf("是否修改?(Y/N)"); if((getchar() == 'y') || (getchar() == 'Y')) { flag++; printf("请输入新姓名:"); scanf("%s", contact[i].name); printf("请输入新的电话号码:"); scanf("%d", contact[i].phone); printf("请输入新的地址:"); scanf("%s", contact[i].address); printf("请输入新的邮政编码:"); scanf("%d", contact[i].zip); printf("请输入新的email:"); scanf("%s", contact[i].email); } else return; } if(flag == 0) printf("不存在该联系人"); } void delete_contact() { int m, i, flag = 0; char name[10]; system("cls"); if(n == 0) printf("没有联系人"); printf("请输入你要删除的联系人姓名:"); scanf("%s", name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("确定删除此联系人?(Y/N)"); if((getchar() == 'y') || (getchar() == 'Y')) { for(m = i; m < n-1; m++) contact[m] = contact[m+1]; n--; flag++; printf("删除成功!\n"); } else return; } if(flag == 0) printf("不存在该联系人"); } int main() { int choice; fileread(); while(1) { menu(); scanf("%d", &choice); switch(choice) { case 1: display_contact(); break; case 2: search_contact(); break; case 3: new_contact(); break; case 4: delete_contact(); break; case 5: update_contact(); break; case 0: exit(0); default: printf("输入不合法!\n"); break; } } return 0; }

给这个Java代码插入登录和注册能力,且账号和密码都在TXT文件里?请大神帮助?着急/?wuwuwu?

import java.awt.Choice; import java.awt.Container; import java.awt.GridLayout; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.print.Printable; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.text.Collator; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.WindowConstants; class MyAddBook { public static JFrame frame; public MyAddBook(){ frame=new JFrame("通讯录"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); JMenuBar menubar=new JMenuBar(); JMenu edit=new JMenu("编辑"); JMenuItem edit1=new JMenuItem("录入"); JMenuItem edit2=new JMenuItem("查询"); JMenuItem edit3=new JMenuItem("删除"); JMenuItem edit4=new JMenuItem("修改"); JMenuItem edit5=new JMenuItem("排序"); edit1.addActionListener(new Typein()); JMenu show=new JMenu("显示信息"); JMenuItem show1=new JMenuItem("同学"); JMenuItem show2=new JMenuItem("同事"); JMenuItem show3=new JMenuItem("朋友"); JMenuItem show4=new JMenuItem("亲戚"); JMenuItem show5=new JMenuItem("全体人员"); Container c=frame.getContentPane(); JPanel pane=new JPanel(); c.add(pane); pane.add(menubar); menubar.add(edit); edit.add(edit1); edit.add(edit2); edit.add(edit3); edit.add(edit4); edit.add(edit5); menubar.add(show); show.add(show1); show.add(show2); show.add(show3); show.add(show4); show.add(show5); frame.setSize(300,100); //frame.pack(); //查询修改删除 class Search{ JDialog dialog=new JDialog(frame,"查询对话框",true); public Search(String str,int n){ dialog.setSize(250,200); Container c=dialog.getContentPane(); dialog.setLayout(new GridLayout(2,1,5,5)); JLabel Lsearch=new JLabel("请输入要"+str+"人员的名字:"); final JTextField Tname=new JTextField(10); JButton certain=new JButton("确定"); JButton cancel=new JButton("取消"); //final String in=Tname.getText(); JPanel pane1=new JPanel(); JPanel pane2=new JPanel(); c.add(pane1); c.add(pane2); pane1.add(Lsearch); pane1.add(Tname); pane2.add(certain); pane2.add(cancel); dialog.setDefaultCloseOperation(dialog.DISPOSE_ON_CLOSE); //dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); if(n==2){ certain.addActionListener(new ActionListener() //查询 { public void actionPerformed(ActionEvent e) { try { FileReader file=new FileReader("D:\\AddressBook.txt"); Scanner find=new Scanner(file); while(find.hasNext()){ if(find.next().equals(Tname.getText())){ dialog.dispose(); Typein fd=new Typein(); fd.frame=new JFrame("查询结果如下"); fd.Tname.setText(Tname.getText()); fd.Cgroup.select(find.next()); fd.Cbirthyear.select(find.next()); fd.Cbirthmonth.select(find.next()); fd.Cbirthday.select(find.next()); fd.Tphone.setText(find.next()); fd.Temail.setText(find.next()); fd.Tother.setText(find.next()); fd.typein(); } } file.close(); find.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block //e1.printStackTrace(); System.out.print("未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block //e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } if(n==3){ certain.addActionListener(new ActionListener() //删除 { public void actionPerformed(ActionEvent e) { try { File file=new File("D:\\AddressBook.txt"); Scanner find=new Scanner(file); FileWriter file1=new FileWriter("D:\\AddressBook1.txt",true); PrintWriter write=new PrintWriter(file1); while(find.hasNext()){ String s=find.next(); if(!(s.equals(Tname.getText()))){ write.print(s+'\t'); write.print(find.next()+'\t'); write.print(find.next()+' '); write.print(find.next()+' '); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.println(find.next()); } else { find.next();find.next();find.next();find.next(); find.next();find.next();find.next(); } } //file.close(); find.close(); file.delete(); write.close(); file1.close(); File file2=new File("D:\\AddressBook1.txt"); file2.renameTo(new File( "D:\\AddressBook.txt")); JOptionPane.showMessageDialog(null,"删除成功", "删除结果",JOptionPane.INFORMATION_MESSAGE); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block //e1.printStackTrace(); JOptionPane.showMessageDialog(null, "未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block //e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } if(n==4){ certain.addActionListener(new ActionListener() //修改 { public void actionPerformed(ActionEvent e) { try {File file=new File("D:\\AddressBook.txt"); Scanner find=new Scanner(file); FileWriter file1=new FileWriter("D:\\AddressBook1.txt",true); PrintWriter write=new PrintWriter(file1); while(find.hasNext()){ String s=find.next(); if(!(s.equals(Tname.getText()))){ write.print(s+'\t'); write.print(find.next()+'\t'); write.print(find.next()+' '); write.print(find.next()+' '); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.print(find.next()+'\t'); write.println(find.next()); } else{ dialog.dispose(); Typein fd=new Typein(); Typein.y=1; fd.frame=new JFrame("查询结果如下"); fd.Tname.setText(Tname.getText()); String s1=find.next(); fd.Cgroup.select(s1); String s2=find.next(); fd.Cbirthyear.select(s2); String s3=find.next(); fd.Cbirthmonth.select(s3); String s4=find.next(); fd.Cbirthday.select(s4); String s5=find.next(); fd.Tphone.setText(s5); String s6=find.next(); fd.Temail.setText(s6); String s7=find.next(); fd.Tother.setText(s7); fd.typein(); if(Typein.z==1){ write.print(Tname.getText()+'\t'); write.print(s1+'\t'); write.print(s2+' '); write.print(s3+' '); write.print(s4+'\t'); write.print(s5+'\t'); write.print(s6+'\t'); write.println(s7); Typein.z=2; } } } //file.close(); find.close(); file.delete(); write.close(); file1.close(); File file2=new File("D:\\AddressBook1.txt"); file2.renameTo(new File( "D:\\AddressBook.txt")); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block //e1.printStackTrace(); System.out.print("未找到文件"); } catch (IOException e2) { // TODO Auto-generated catch block //e2.printStackTrace(); System.out.print("未找到该人员"); } } }); } cancel.addActionListener(new ActionListener() //取消 { public void actionPerformed(ActionEvent e) {System.out.println("fdas"); //dialog.dispose(); } }); } } edit2.addActionListener(new ActionListener() //监听查询 { public void actionPerformed(ActionEvent e) { new Search("查询",2).dialog.setVisible(true); } }); edit3.addActionListener(new ActionListener() //监听删除 { public void actionPerformed(ActionEvent e) { new Search("删除",3).dialog.setVisible(true); } }); edit4.addActionListener(new ActionListener() //监听修改 { public void actionPerformed(ActionEvent e) { new Search("修改",4).dialog.setVisible(true); } }); //输出类 class Print{ public JTextArea area; public Print(String st,int n){ JFrame frame = new JFrame(st+"信息如下"); frame.setSize(800, 400); //frame.setLocation(350, 150); area = new JTextArea(); frame.add(area); frame.setVisible(true); if(n==2) try //排序 {int i,j,k; String []all; all=new String[1000]; BufferedReader read=new BufferedReader(new FileReader("D:\\AddressBook.txt")); area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n'); int z=1,count=0; while(z==1){ for(i=0;i<1000;i++){ String str=read.readLine(); if(str!=null) {all[i]=str;count++;} else z=0; } } String[] bll; bll=new String[count]; for(i=0;i<count;i++) bll[i]=all[i]; getSortOfChinese(bll); for (i = 0; i < count; i++) area.append(bll[i]+'\n'); read.close(); }catch (FileNotFoundException e1) { e1.printStackTrace(); }catch (IOException e2){ e2.printStackTrace(); } if(n==1) try //各类人员 { FileReader file=new FileReader("D:\\AddressBook.txt"); Scanner find=new Scanner(file); area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n'); while(find.hasNext()){ String str1=find.next(); String str2=find.next(); if(str2.equals(st)){ area.append(str1+'\t'); area.append(str2+'\t'); area.append(find.next()+' '); area.append(find.next()+' '); area.append(find.next()+'\t'); area.append(find.next()+'\t'); area.append(find.next()+'\t'); area.append(find.next()+'\n'); } else{ find.next();find.next();find.next();find.next(); find.next();find.next(); } } file.close(); find.close(); }catch (FileNotFoundException e1) { e1.printStackTrace(); }catch (IOException e2){ e2.printStackTrace(); } if(n==0) try //全体人员信息 { BufferedReader read=new BufferedReader(new FileReader("D:\\AddressBook.txt")); area.append("姓名"+'\t'+"组别"+'\t'+"生日"+'\t'+"电话"+'\t'+"Email"+'\t'+"其他"+'\n'); int z=1; while(z==1){ String str=read.readLine(); if(str!=null) area.append(str+'\n'); else z=0; } read.close(); }catch (FileNotFoundException e1) { e1.printStackTrace(); }catch (IOException e2){ e2.printStackTrace(); } } } edit5.addActionListener(new ActionListener() //监听排序 { public void actionPerformed(ActionEvent e) { new Print("按姓名排序后",2); } }); show1.addActionListener(new ActionListener() //监听同学 { public void actionPerformed(ActionEvent e) { new Print("同学",1); } }); show2.addActionListener(new ActionListener() //监听同事 { public void actionPerformed(ActionEvent e) { new Print("同事",1); } }); show3.addActionListener(new ActionListener() //监听朋友 { public void actionPerformed(ActionEvent e) { new Print("朋友",1); } }); show4.addActionListener(new ActionListener() //监听亲戚 { public void actionPerformed(ActionEvent e) { new Print("亲戚",1); } }); show5.addActionListener(new ActionListener() //监听全体人员 { public void actionPerformed(ActionEvent e) { new Print("全体人员",0); } }); } public static void main(String []args){ new MyAddBook(); } public static String[] getSortOfChinese(String[] a) { // Collator 类是用来执行区分语言环境这里使用CHINA Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); // JDKz自带对数组进行排序。 Arrays.sort(a, cmp); return a; } } //输入类 class Typein implements ActionListener{ public static int z=2; public static int y=0; public JLabel Lname,Lgroup,Lbirthday,Lphone,Lemail,Lother,Lnote; public JTextField Tname=new JTextField(10),Tphone=new JTextField(15), Temail=new JTextField(15),Tother=new JTextField(15); public Choice Cgroup=new Choice(),Cbirthyear=new Choice(),Cbirthmonth=new Choice(), Cbirthday=new Choice(); public JButton certain,cancel; public JFrame frame=new JFrame("录入联系人信息"); public Typein(){ Cgroup.addItem("无"); Cgroup.addItem("同学"); Cgroup.addItem("同事"); Cgroup.addItem("朋友"); Cgroup.addItem("亲戚"); Cbirthyear.addItem("1985"); Cbirthyear.addItem("1986"); Cbirthyear.addItem("1987"); Cbirthyear.addItem("1988"); Cbirthyear.addItem("1989"); Cbirthyear.addItem("1990"); Cbirthyear.addItem("1991"); Cbirthyear.addItem("1992"); Cbirthyear.addItem("1993"); Cbirthyear.addItem("1994"); Cbirthyear.addItem("1995"); Cbirthyear.addItem("1996"); Cbirthyear.addItem("1997"); Cbirthyear.addItem("1998"); Cbirthyear.addItem("1999"); Cbirthyear.addItem("2000"); Cbirthmonth.addItem("01"); Cbirthmonth.addItem("02"); Cbirthmonth.addItem("03"); Cbirthmonth.addItem("04"); Cbirthmonth.addItem("05"); Cbirthmonth.addItem("06"); Cbirthmonth.addItem("07"); Cbirthmonth.addItem("08"); Cbirthmonth.addItem("09"); Cbirthmonth.addItem("10"); Cbirthmonth.addItem("11"); Cbirthmonth.addItem("12"); Cbirthday.addItem("01"); Cbirthday.addItem("02"); Cbirthday.addItem("03"); Cbirthday.addItem("04"); Cbirthday.addItem("05"); Cbirthday.addItem("06"); Cbirthday.addItem("07"); Cbirthday.addItem("08"); Cbirthday.addItem("09"); Cbirthday.addItem("10"); Cbirthday.addItem("11"); Cbirthday.addItem("12"); Cbirthday.addItem("13"); Cbirthday.addItem("14"); Cbirthday.addItem("15"); Cbirthday.addItem("16"); Cbirthday.addItem("17"); Cbirthday.addItem("18"); Cbirthday.addItem("19"); Cbirthday.addItem("20"); Cbirthday.addItem("21"); Cbirthday.addItem("22"); Cbirthday.addItem("23"); Cbirthday.addItem("24"); Cbirthday.addItem("25"); Cbirthday.addItem("26"); Cbirthday.addItem("27"); Cbirthday.addItem("28"); Cbirthday.addItem("29"); Cbirthday.addItem("30"); Cbirthday.addItem("31"); } public void typein(){ Container c=frame.getContentPane(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500,300); frame.setLayout(new GridLayout(5,1,5,5)); frame.setVisible(true); Lname=new JLabel("姓名:"); Lgroup=new JLabel("组别:"); Lbirthday=new JLabel("生日:"); Lphone=new JLabel("电话:"); Lemail=new JLabel("Email:"); Lother=new JLabel("其他:"); Lnote=new JLabel("注释:”其他“中输入所在学校 /共事单位/认识地方/亲戚称呼"); certain=new JButton("确定"); cancel=new JButton("取消"); JPanel pane1=new JPanel(); JPanel pane2=new JPanel(); JPanel pane3=new JPanel(); JPanel pane4=new JPanel(); JPanel pane5=new JPanel(); c.add(pane1); c.add(pane2); c.add(pane3); c.add(pane4); c.add(pane5); pane1.add(Lname); pane1.add(Tname); pane1.add(Lgroup); pane1.add(Cgroup); pane2.add(Lbirthday); pane2.add(Cbirthyear); pane2.add(Cbirthmonth); pane2.add(Cbirthday); pane2.add(Lphone); pane2.add(Tphone); pane3.add(Lemail); pane3.add(Temail); pane3.add(Lother); pane3.add(Tother); pane4.add(Lnote); pane5.add(certain); pane5.add(cancel); certain.addActionListener(new ActionListener() //设置监听器 { public void actionPerformed(ActionEvent e) //用匿名内部类实现监听器 { if(Tname.getText().equals("")) JOptionPane.showMessageDialog(null,"录入失败,姓名必须填写!", "录入结果",JOptionPane.INFORMATION_MESSAGE); else{ try { FileWriter AddressBook=new FileWriter("D:\\AddressBook.txt",true); PrintWriter add=new PrintWriter(AddressBook); String s1,s2,s3,s4; if(Tname.getText().equals(""))s1="无";else s1=Tname.getText(); if(Tphone.getText().equals(""))s2="无";else s2=Tphone.getText(); if(Temail.getText().equals(""))s3="无";else s3=Temail.getText(); if(Tother.getText().equals(""))s4="无";else s4=Tother.getText(); /*add.println(Tname.getText()+'\t'+Cgroup.getSelectedItem()+'\t'+Cbirthyear.getSelectedIt em()+ ' '+Cbirthmonth.getSelectedItem()+' '+Cbirthday.getSelectedItem()+ '\t'+Tphone.getText()+'\t'+Temail.getText()+'\t'+Tother.getText());*/ add.println(s1+'\t'+Cgroup.getSelectedItem()+'\t'+Cbirthyear.getSelectedItem()+ ' '+Cbirthmonth.getSelectedItem()+' '+Cbirthday.getSelectedItem()+ '\t'+s2+'\t'+s3+'\t'+s4); add.close(); AddressBook.close(); z=1; } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if(y==0){ JOptionPane.showMessageDialog(null,"录入成功", "录入结果",JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null,"修改成功", "修改结果",JOptionPane.INFORMATION_MESSAGE); } Tname.setText(""); Tphone.setText(""); Temail.setText(""); Tother.setText(""); //Cgroup.setName("无"); //Cbirthyear.setName("1985"); //Cbirthmonth.setName("1"); //Cbirthday.setName("1"); } } }); cancel.addActionListener(new ActionListener() //设置监听器 { public void actionPerformed(ActionEvent e) //用匿名内部类实现监听器 { frame.dispose(); z=0; } }); } public void actionPerformed(ActionEvent e) { new Typein().typein(); } }

c语言如何把链表数据写入文件?

在写一个通讯录管理系统,然后要把联系人的信息结构体放到链表中,然后将链表里的信息写入文件中,下次打开时还能从该文件读出数据。 链表头指针TEL,结构体中有name,tel,style,mail 四项,存入“telephone.txt"中。 我是这样写的 /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","wt+"); ID *te = id->next; while (te != NULL) { fwrite(id,sizeof(ID),1,TEL); te = te->next; } fclose(TEL); } 结果文件中是一串乱字 是 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?f 请给出代码,本人初学,多谢!

java链表怎么写入读出文件

求高手指导,用javaio流怎么实现链表的写入和读出文件夹,不知道怎么结合链表和流

C语言从文件读入姓名,电话号码,地址数据的一些问题,为什么只能读李明,其他的不能读出来?

文本里的数据![图片说明](https://img-ask.csdn.net/upload/201909/16/1568625274_963280.png)![图片说明](https://img-ask.csdn.net/upload/201909/16/1568625284_159932.jpg)!结构体[图片说明](https://img-ask.csdn.net/upload/201909/16/1568625321_999795.png)() while(!feof(fp))加上fscanf不是把本文里的数据全读出来吗?为什么我的只能读出李明 第一次问问题怎么没人回答一下 我知道了,不是读文件的问题,是其他问题

c语言怎样调用文本文件里面的数据。

如果我要做一个通讯录一样的文件,需要将每个用户的信息用结构体存在一个文本文件里面,当我要查询,添加或删除用户时,需要调用这个文本文件里面的数据,应该怎样实现调用信息?最好能够具体到具体的某个数,比如说我需要调用student[i].number这样具体的数值。

java从控制台读取数据并输出

![图片说明](https://img-ask.csdn.net/upload/201608/13/1471097461_494198.png)

请帮忙编写代码,拜托,拜托

【问题描述】 利用C语言设计开发一个小型的通讯录管理系统,本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供查找功能(顺序查找和哈希查找),可以对数据进行修改、删除、添加等操作。要求用顺序表作为数据结构的存储结构。 【基本要求】 ①从文件中读入联系人的姓名、电话号码、地址。在程序所在文件夹下创建文本文件“txl.txt”,将联系人信息保存在该文件中。程序运行时自动从该文件中读取联系人信息,存入到程序创建的顺序表中。用排序函数将顺序表中的数据按姓名进行排序。当程序退出时将顺序表中的信息写入文本文件“txl.Txt”。 ②显示所有人员的信息。 ③查找人员信息。用户输入要查找人员的姓名或电话号码,显示出该人员的所有信息。用顺序查找算法实现,并输出查找成功时经历的比较次数。 ④删除人员信息。用户输入要删除人员的序号,从顺序表中删除该序号对应的人员信息。 ⑤添加人员信息。用户输入要添加人员信息,根据姓名在原顺序表中的位序确定要插入的位置i,在顺序表的第i个人员之前插入新人员的姓名、电话号码、地址信息。(利用直接插入排序的方法完成) ⑥创建哈希表。以电话号码为关键字建立哈希表;采用一定的方法解决冲突。 ⑦哈希查找。用户首先选择菜单项的“创建哈希表”选项,然后选择“哈希查找”选项。用户输入要查询用户的电话号码或者姓名,利用哈希查找算法从创建的哈希表中查找该用户的所有信息,显示到屏幕上,并输出查找成功时经历的比较次数。与顺序查找法对照体会哈希查找的效率。

C语言写使用fprintf和fscanf的问题

我这个程序是用C语言写的,其中构造了两个函数来将我输入的数据保存到文本文件当中,可是调用savefile函数保存数据到文件中,再调用readfile函数时所输入的数据都没了,说明一下,我做的这个是通讯录管理系统,这两个函数的代码如下,求大神帮我解答,在此本人先谢过了 void readfile() { char *p="Linkman.txt"; FILE *fp; int i=0; if ((fp=fopen("Linkman.txt","r"))==NULL) { printf("Open file %s error! Strike any key to exit!",p); system("pause"); exit(0); } while(fscanf(fp,"%s %s %d %s %s %s %s %d/%d/%d %s",man_table[i].name,man_table[i].sex,&man_table[i].telnumber,man_table[i].mobilenumber,man_table[i].qqnumber,man_table[i].mailbox,man_table[i].address,&man_table[i].birthday.year,&man_table[i].birthday.month,&man_table[i].birthday.day,man_table[i].level)==9) { i++; i=i; } fclose(fp); n=i; printf("录入完毕!\n"); } void savefile() { int i; FILE *fp; fp=fopen("Linkman.txt","w"); /*写入*/ for(i=0;i<n;i++) { fprintf(fp,"%s %s %d %s %s %s %s %d/%d/%d %c",man_table[i].name,man_table[i].sex,man_table[i].telnumber,man_table[i].mobilenumber,man_table[i].qqnumber,man_table[i].mailbox,man_table[i].address,man_table[i].birthday.year,man_table[i].birthday.month,man_table[i].birthday.day,man_table[i].level); } fclose(fp); }

为什么记录一次会出现重复的数据

#include <stdio.h> #include <malloc.h> #include <stdlib.h> //定义杂项函数及内存分配函数 如malloc、free、system、atoi、atol、rand、exit等 #include <string.h> #include<conio.h> //#define NULL 0 #define LEN sizeof(struct message) struct message //定义结构体 { char name[15]; char number[15]; char phone[15]; char qq[13]; char addr[25]; struct message *next; //指向下一数据 }; int n; void creat() //建立电话簿 { int num; char choice[5]={'2'}; FILE *fp; struct message *head; struct message *p,*q; n = 0; p = q = (struct message *) malloc(LEN); system("title 建立电话簿 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); fp=fopen("通讯录1.txt","wb"); system("cls"); printf("\n请输入姓名:"); scanf("%s",p->name); printf("\n请输入电话号码:"); scanf("%s",p->phone); printf("\n请输入学号:"); scanf("%s",p->number); printf("\n请输入QQ:"); scanf("%s",p->qq); printf("\n请输入住址:"); scanf("%s",p->addr); fwrite(p,LEN,1,fp); fclose(fp); head = 0; num = 1; while(num!=0) { n = n+1; if(n==1) head = p; else q->next = p; q = p; p = (struct message *) malloc(LEN); //分配存储区 while(choice[0]!='1' && choice[0]!='0') //判断是否继续 { printf("\n1 继续输入\n 0 返回\n"); printf("请选择操作:"); scanf("%s",choice); } switch(choice[0]) { case '1': { system("title 建立电话簿 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); fp=fopen("通讯录1.txt","rb"); system("cls"); printf("\n请输入姓名:"); scanf("%s",p->name); printf("\n请输入电话号码:"); scanf("%s",p->phone); printf("\n请输入学号:"); scanf("%s",p->number); printf("\n请输入QQ:"); scanf("%s",p->qq); printf("\n请输入住址:"); scanf("%s",p->addr); fwrite(p,LEN,1,fp); fclose(fp); choice[0] = '2'; } continue; case '0': num = 0; system("cls"); } } q->next = 0; } void add() //添加通讯录 { int num; char choice[5]={'2'}; FILE *fp; struct message *head; struct message *p,*q; n = 0; p = q = (struct message *) malloc(LEN); //分配空间 system("title 添加通讯录 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); fp=fopen("通讯录1.txt","ab"); system("cls"); printf("\n请输入姓名:"); //输入内容 scanf("%s",p->name); printf("\n请输入电话号码:"); scanf("%s",p->phone); printf("\n请输入学号:"); scanf("%s",p->number); printf("\n请输入QQ:"); scanf("%s",p->qq); printf("\n请输入住址:"); scanf("%s",p->addr); fwrite(p,LEN,1,fp); fclose(fp); head = 0; num = 1; while(num!=0) { n = n+1; if(n==1) head = p; else q->next = p; q = p; p = (struct message *) malloc(LEN); //分配空间 while(choice[0]!='1' && choice[0]!='0') //判断是否继续 { printf("\n1 继续输入\n 0 返回\n"); printf("请选择操作:"); scanf("%s",choice); } switch(choice[0]) { case '1': { fp=fopen("通讯录1.txt","rb"); system("cls"); printf("\n请输入姓名:"); scanf("%s",p->name); printf("\n请输入电话号码:"); scanf("%s",p->phone); printf("\n请输入学号:"); scanf("%s",p->number); printf("\n请输入QQ:"); scanf("%s",p->qq); printf("\n请输入住址:"); scanf("%s",p->addr); fwrite(p,LEN,1,fp); fclose(fp); choice[0] = '2'; } continue; case '0': num = 0; system("cls"); } } q->next = 0; } void findname(struct message * fphead) //按姓名查找 { struct message *p; int a = 0; char findname[20]; system("cls"); printf("请输入要查找的姓名:\n"); scanf("%s",findname); for(p=fphead->next;p!=NULL;p=p->next) { if(strcmp(p->name,findname)==0) { printf("姓名 电话号码 学号 QQ 住址\n"); printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr); a = 1; } } if(a != 1) printf("无此通讯录!\n"); } void findphone(struct message * fphead) //按电话查找 { struct message *p; int a = 0; char findphone[15]; system("cls"); printf("请输入要查找的电话:\n"); scanf("%s",findphone); for(p=fphead->next;p!=NULL;p=p->next) { if(strcmp(p->phone,findphone)==0) { printf("姓名 电话号码 学号 QQ 住址\n"); printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr); a = 1; } } if(a != 1) printf("无此通讯录!\n"); } void findnumber(struct message * fphead) //按学号查找 { struct message *p; int a = 0; char findnumber[15]; system("cls"); printf("请键入要查找的学生学号:\n"); scanf("%s",findnumber); for(p=fphead->next;p!=NULL;p=p->next) { if(strcmp(p->number,findnumber)==0) { printf("姓名 电话号码 学号 QQ 住址\n"); printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr); a = 1; } } if(a != 1) printf("无此通讯录!\n"); } void modify(struct message * fphead) //修改记录 { FILE *fp; struct message *p,*q; int a = 0; char findname[15]; system("title 查询通讯录 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); system("cls"); printf("请键入要查找的姓名:\n"); scanf("%s",findname); for(p=fphead->next;p!=NULL;p=p->next) { if(strcmp(p->name,findname)==0) { printf("姓名 电话号码 学号 QQ 住址\n"); printf("%-15s %-15s %-15s %-13s %-25s\n\n\n\n",p->name,p->phone,p->number,p->qq,p->addr); printf("\n请键入新姓名:"); scanf("%s",p->name); printf("\n请键入新电话号码:"); scanf("%s",p->phone); printf("\n请键入新学号:"); scanf("%s",p->number); printf("\n请键入新QQ:"); scanf("%s",p->qq); printf("\n请键入新住址:"); scanf("%s",p->addr); fp = fopen("通讯录2.txt","wb"); q = fphead->next; //P为链表头指针 while(q!=0) { fwrite(q,LEN,1,fp); if(q->next!=0) q = q->next; else q = 0; } fclose(fp); unlink("通讯录1.txt"); //用新文件覆盖原文件 rename("通讯录2.txt", "通讯录1.txt"); printf("修改成功!"); a = 1; } } if(a != 1) printf("无此通讯录!\n"); } void del(struct message * fphead) //删除记录 { FILE *fp,*fq; struct message *p,*q,*r; char sname[15]; p = q = (struct message *) malloc(LEN); p = fphead; system("title 删除记录 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); system("cls"); fp = fopen("通讯录1.txt","rb"); fq = fopen("通讯录2.txt","wb"); printf("请输入欲删除记录的姓名:"); scanf("%s",sname); while(strcmp(p->name,sname)!=0 && p->next!=0) //查找节点并删除该节点 { q = p; p = p->next; } if(strcmp(p->name,sname)==0) { if(p==fphead) fphead = p->next; else { q->next = p->next; } r = fphead->next; //r为链表头指针 while(r!=0) { fwrite(r,LEN,1,fq); if(r->next!=0) r = r->next; else r = 0; } printf("删除成功!"); } else { printf("无此通讯录!"); } fclose(fp); fclose(fq); unlink("通讯录1.txt"); //用新文件覆盖原文件 rename("通讯录2.txt", "通讯录1.txt"); } struct message * open(void) //打开文件,载入链表 { FILE *fp; struct message *p=NULL,*q=NULL,*temp=NULL,*fphead=NULL; fp=fopen("通讯录1.txt","rb"); fphead=(struct message *)malloc(LEN); //分配空间 temp = q = fphead; while(! feof(fp)) //循环读取,载入链表 { p=(struct message *)malloc(LEN); temp=q; q->next=p; q=p; fread(p,LEN,1,fp); } temp->next=NULL; fclose(fp); return(fphead); //返回链表头指针 } void print() //显示通讯录 { struct message *p; FILE *fp; system("title 显示通讯录 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); system("cls"); if((fp=fopen("通讯录1.txt","rb"))!=NULL) { printf("姓名 电话号码 学号 QQ 住址\n"); p = (struct message *)malloc(LEN); //分配空间 while(!feof(fp)) { fread(p,LEN,1,fp); printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr); } fclose(fp); } else { printf("未建立通讯录!"); } } main() //主函数 { FILE * fp; struct message * fphead; int begin = 1,f; char choice[5]; while(begin == 1) { system("title 欢迎使用学生通讯录");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); printf("\t\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); printf("\t\t\t\t欢迎使用学生通讯录\n"); printf("\t\t<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n\n"); printf("\t\t\t*主窗口菜单*\n\n"); printf("\t\t\t1:显示通讯录中所有记录;\n\n"); printf("\t\t\t2:建立新通讯录;\n\n"); printf("\t\t\t3:添加新记录;\n\n"); printf("\t\t\t4:查询通讯录中的记录;\n\n"); printf("\t\t\t5:修改通讯录中的记录;\n\n"); printf("\t\t\t6:删除通讯录中的记录;\n\n"); printf("\t\t\t0:退出通讯录\n\n"); printf("请选择操作:"); scanf("%s",choice); switch(choice[0]) { case '1': { print(); printf("按任意键返回主菜单!\n"); getch(); system("cls"); } continue; case '2': { creat(); } continue; case '3': { add(); } continue; case '4': { if((fp = fopen("通讯录1.txt","rb")) != NULL) { fclose(fp); system("title 查询通讯录 ");//设置标题 system("mode con cols=84 lines=30");//设置窗口大小 system("color 5f"); system("cls"); printf("1按姓名查询;\n2按电话查询;\n3按学号查询;\n"); printf("请输入查询方式:"); scanf("%d",&f); if(f==1) { fphead = open(); findname(fphead); } if(f==2) { fphead = open(); findphone(fphead); } else if(f==3) { fphead = open(); findnumber(fphead); } } else { system("cls"); printf("未建立通讯录!"); } printf("按任意键返回主菜单!\n"); getch(); system("cls"); } continue; case '5': { if((fp = fopen("通讯录1.txt","rb")) != NULL) { fclose(fp); fphead = open(); modify(fphead); } else { system("cls"); printf("未建立通讯录!"); } printf("按任意键返回主菜单!\n"); getch(); system("cls"); }continue; case '6': { if((fp = fopen("通讯录1.txt","rb")) != NULL) { fclose(fp); fphead = open(); del(fphead); } else { system("cls"); printf("未建立通讯录!"); } printf("按任意键返回主菜单!\n"); getch(); system("cls"); } continue; case '0': exit(0); default: { system("cls"); printf("输入错误,按任意键返回主菜单!\n"); getch(); system("cls"); } } } system("pause"); }

【C语言】vc6.0运行程序过程中提示***.EXE已停止工作

在运行“添加”这一块时,输入完信息之后就提示***.EXE已停止工作,这是什么错? 代码如下 #include<stdio.h> #include<stdlib.h> #include<string.h> #include <windows.h> #include<conio.h> #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[15]; char style[15]; char mail[20]; ID * next; }; ID *id = NULL; /*读取telephone.txt文件中的内容创建学生链表*/ ID* create() { ID *head; ID *p1,*p2; p2 = (ID*)malloc(LENTEL); head = p2; FILE *fp; if((fp = fopen("telephone.txt","r")) == NULL) { printf("联系人文件打开错误,请将telephone.txt放置与程序同一目录下!\n"); exit(0); } for(int i = 0; i<1;i++) fscanf(fp,"%*[^\n]%*c"); while(!feof(fp)) { p1 = (ID*)malloc(LENTEL); fscanf(fp,"%s%s%s%s",p1->name,p1->tele,p1->style,p1->mail); p1->next = NULL; p2->next = p1; p2 = p1; } fclose(fp); return head; } ID* findbyname(char name[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(name,p->name) == 0) { temp = p; break; } else { p = p->next; } } return temp; } ID* findbytele(char tele[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(tele,p->tele) == 0) { temp = p; break; } else { p = p->next; } } return temp; } /*判断这个联系人是否存在*/ bool Istel(char name[]) { ID *p = id->next; bool flag = false; while (p != NULL) { if(strcmp(p->name,name) == 0) { flag = true; } p=p->next; } return flag; } int add() { ID *newtel = NULL; ID *p = id; char tel_name[15]; char tel_tele[11]; char tel_style[15]; char tel_mail[20]; printf("\n------- 请输入学生基本信息 --------\n"); printf("姓名 电话 类别 邮箱\n"); printf("--------------------------------------\n"); scanf("%s%s%s%s",tel_name,tel_tele,tel_style,tel_mail); if(!Istel(tel_name)) { newtel = (ID*)malloc(LENTEL); strcpy(newtel->name,tel_name); strcpy(newtel->tele,tel_tele); strcpy(newtel->style,tel_style); strcpy(newtel->mail,tel_mail); newtel->next = NULL; for(p=p->next; p->next!=NULL; p=p->next); p->next = newtel; printf("\n联系人已添加成功!\n"); } else { printf("\n该联系人姓名已存在!\n"); } getch(); return 0; } void Print_Inquire_All() { void menu_print_out(); ID *p1 = id->next; menu_print_out(); while (p1!=NULL) { printf("%s\t%s\t%s\t%s\n",p1->name,p1->tele,p1->style,p1->mail); p1 = p1->next; } system("pause"); } void menu_print_out() { printf("\n---------------------------------\n"); printf("\n---------------------------------\n"); } /*主菜单*/ void menu(void) { void ReadBack(); printf(" ╭════════╮ \n"); printf("╭══════╣通讯管理系统V1.0╠══════╮\n"); printf("║ ╰════════╯ ║\n"); printf("║ 【1】添加数据 【3】退出系统 ║\n"); printf("║ ║\n"); printf("║ 【2】查询数据 ************* ║\n"); printf("║ ║\n"); printf("╰══════════════════════╯\n"); printf("◎请输入功能前的序号进入相应的工具:【 】\b\b"); int a = 0; a = getchar(); while(a!='1'&&a!='2'&&a!='3') { printf("error! please input the right number!\n"); putchar('\a'); getchar(); printf("◎请重新输入功能前的序号进入相应的工具:【 】\b\b"); a = getchar(); } switch(a) { case '1': add(); break; case '2': Print_Inquire_All(); case '3': ReadBack(); exit(0); break; } getchar(); } /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","w"); ID *te = id->next; fprintf(TEL,"Tname Ttele Tstyle Tmail"); while (te != NULL) { fprintf(TEL,"\n%s %s %s %s",te->name,te->tele,te->style,te->mail); te = te->next; } fclose(TEL); } void Lunch() { FILE *fp; if((fp=fopen("telephone.txt","r")) == NULL) { FILE *fp; fp=fopen("telephone.txt","w+"); } else id = create(); menu(); } void main() { SetConsoleTitle("C语言通讯录管理系统"); Lunch(); }

C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单?

我的程序运行完一个功能后按任意键就退出了,而不是返回主菜单 代码如下,应该怎么改?(具体一点,菜鸟一个)多谢! #include<stdio.h> #include<stdlib.h> #include<string.h> #include <windows.h> #include<conio.h> #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[11]; char style[15]; char mail[20]; ID * next; }; ID *id = NULL; /*读取telephone.txt文件中的内容创建学生链表*/ ID* create() { ID *head; ID *p1,*p2; p2 = (ID*)malloc(LENTEL); head = p2; FILE *fp; if((fp = fopen("telephone.txt","r")) == NULL) { printf("联系人文件打开错误,请将telephone.txt放置与程序同一目录下!\n"); exit(0); } while(!feof(fp)) { p1 = (ID*)malloc(LENTEL); fscanf(fp,"%s%s%s%s",p1->name,p1->tele,p1->style,p1->mail); p1->next = NULL; p2->next = p1; p2 = p1; } fclose(fp); return head; } ID* findbyname(char name[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(name,p->name) == 0) { temp = p; break; } else { p = p->next; } } return temp; } ID* findbytele(char tele[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(tele,p->tele) == 0) { temp = p; break; } else { p = p->next; } } return temp; } /*判断这个联系人是否存在*/ bool Istel(char name[]) { ID *p = id->next; bool flag = false; while (p != NULL) { if(strcmp(p->name,name) == 0) { flag = true; } p=p->next; } return flag; } int add() { menu(); ID *newtel = NULL; ID *p = id; char tel_name[15]; char tel_tele[11]; char tel_style[15]; char tel_mail[20]; printf("\n------- 请输入学生基本信息 --------\n"); printf("姓名 电话 类别 邮箱\n"); printf("--------------------------------------\n"); scanf("%s%s%s%s",tel_name,tel_tele,tel_style,tel_mail); if(!Istel(tel_name)) { newtel = (ID*)malloc(LENTEL); strcpy(newtel->name,tel_name); strcpy(newtel->tele,tel_tele); strcpy(newtel->style,tel_style); strcpy(newtel->mail,tel_mail); newtel->next = NULL; for(p=p->next; p->next!=NULL; p=p->next); p->next = newtel; printf("\n联系人已添加成功!\n"); } else { printf("\n该联系人姓名已存在!\n"); } getch(); return 0; } void Print_Inquire_All() { void menu_print_out(); ID *p1 = id->next; menu_print_out(); while (p1!=NULL) { printf("%s\t%s\t%s\t%s\n",p1->name,p1->tele,p1->style,p1->mail); p1 = p1->next; } system("pause"); } void menu_print_out() { printf("\n---------------------------------\n"); printf("\n---------------------------------\n"); } /*主菜单*/ void menu(void) { void ReadBack(); printf(" ╭════════╮ \n"); printf("╭══════╣通讯管理系统V1.0╠══════╮\n"); printf("║ ╰════════╯ ║\n"); printf("║ 【1】添加数据 【3】退出系统 ║\n"); printf("║ ║\n"); printf("║ 【2】查询数据 ************* ║\n"); printf("║ ║\n"); printf("╰══════════════════════╯\n"); printf("◎请输入功能前的序号进入相应的工具:【 】\b\b"); int a = 0; a = getchar(); while(a!='1'&&a!='2'&&a!='3') { printf("error! please input the right number!\n"); putchar('\a'); getchar(); printf("◎请重新输入功能前的序号进入相应的工具:【 】\b\b"); a = getchar(); } switch(a) { case '1': add(); break; case '2': Print_Inquire_All(); case '3': ReadBack(); exit(0); break; } getchar(); } /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","w"); ID *te = id->next; while (te != NULL) { fwrite((char*)&id,sizeof(ID),1,TEL); te = te->next; } fclose(TEL); } void Lunch() { id = create(); menu(); } void main() { SetConsoleTitle("C语言通讯录管理系统"); Lunch(); }

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

linux2.6.1内核源码注释

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

编程实现学生基本信息管理程序

编程实现学生基本信息管理程序。学生基本信息包括:学号、姓名、性别、年龄、班级、学院、专业等。具体实现的管理功能如下: (1) 输入并显示多个学生的基本信息; (2) 可根据需要实现学生信息的添加; (

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

计算机组成原理算法实现

计算机组成原理算法实现,能够实现定点小数的机器数表示、定点小数的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

土豆SDK(Java版)-非官方

由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。包含了现有的所有请求协议。本套SDK中仅提供了oAuth的方式(引用oAuth.net的java版示例),并没有在框架中实现,涉及到登录

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐