精华内容
下载资源
问答
  • 在进行信息查询之后,各列之间并不能很好的对齐。
    在进行信息查询之后,各列之间并不能很好的对齐。
    展开全文
  • 网络信息采集 实训报告 学生姓名 学生班级 学生学号 实训 1 网络信息采集软件的使用实训报告 实训目的 掌握一种网络信息采集软件的使用 实训内容 搜索下载一种网络信息采集软件尝试用其搜索信息 从网上下载安装一种...
  • WORD格式 专业资料整理 网络信息采集 实训报告 学生姓名 学生班级 学生学号 实训 1 网络信息采集软件的使用实训报告 实训目的 掌握一种网络信息采集软件的使用 实训内容 搜索下载一种网络信息采集软件尝试用其搜索...
  • 网络信息采集 实训报告 学生姓名 学生班级 学生学号 实训 1 网络信息采集软件的使用实训报告 实训目的 掌握一种网络信息采集软件的使用 实训内容 搜索下载一种网络信息采集软件尝试用其搜索信息 从网上下载安装一种...
  • 网络信息采集 实训汇报 学生姓名 学生班级 学生学号 实训1 网络信息采集软件使用实训汇报 实训目标 掌握一个网络信息采集软件使用 实训内容 搜索下载一个网络信息采集软件尝试用其搜索信息 实训要求 从网上下载安装...
  • 学校用 excel插件 校验身份证号码的
  • 河南省普通高中学生资助信息采集插件V6.11.11.21 适用于EXCEL表格数据的验证。
  • 《老杨学生照片采集系统 》是《全国中小学生学籍信息管理系统》的助手,主要用于学生学籍照片或其它证件照片的采集,操作简单,能以“身份证号”等多种方式给照片命名。9.5增加了自定义相片规格。
  • 3、学生信息模板文件中学生基本表的表名必须是“学生基础信息”,如不是请修改。 4、程序每步操作都有提示,按提示操作即可。 5、本程序为vs2005平台下开发,使用时如果发生"正常初始化(0xc0000135)失败"错误,请下载...
  • 项目名为新生信息采集系统,要求如下: 1、能够拍照,并保存照片。 2、能够在系统中展示excel表格。 3、能够导入导出excel表格。 其实根据个人想法可以增加更多的功能,项目我已经完成70%左右,由于该项目已经流产,...
     

    项目名为新生信息采集系统,要求如下:

    1、能够拍照,并保存照片。

    2、能够在系统中展示excel表格。

    3、能够导入导出excel表格。

    其实根据个人想法可以增加更多的功能,项目我已经完成70%左右,由于该项目已经流产,所以这里给大家分享一下。

    该项目是给帮朋友写的,但是由于他拥有了一份较为完美的程序,所以我所做的就成了一个个人的小练习,将代码贴出来是希望有人能够继续完成其中需要改善的功能。有时候很羡慕国外的开源网站将代码贴出就会收到各种各样的改进,使得项目功能更加强大。当然我也会逐步完善该项目。

    首先项目中采用的jar包:

    由于我画蛇添脚的加入数据库,使得程序增加了一定的工程量,当然其实项目主线完成,个人觉得就应该算ok了。

    对于数据库提取数据的类,DAO,DAOImpl等类这里不再细说,因为大多数人都知道如何用数据库提取数据。

    项目中所有的类如上右:

     

    本人采用的是win8系统进行编程,不知是不是这个原因摄像头能够亮,但是画面就是出不来,这就是项目目前需要调试的地方。等有时间我再xp上调试一下.

    摄像头拍照书写方式与网上主流写法一致(借鉴):

    button.addActionListener(new ActionListener() {// 拍照功能
    	public void actionPerformed(ActionEvent arg0) {
    
    	FrameGrabbingControl fgc = (FrameGrabbingControl) player
    				.getControl("javax.media.control.FrameGrabbingControl");
    	buffer = fgc.grabFrame();
    	bufferToImage = new BufferToImage(
    			(VideoFormat) buffer.getFormat());
    	image = bufferToImage.createImage(buffer);
    	picPanel.setImage(image);
    	String sclass = stuClass.getSelectedItem()
    			.toString().trim();
    	String sno = stuNo.getText().toString().trim();
    	String sname = stuName.getText().toString().trim();
    	flag = "E:\\" + sname + "_"
    			+ System.currentTimeMillis() + ".jpg";
    	if (ImageUtil.checkflag(sclass, sno, sname)) {// 检查数据
    		ImageUtil.saveImage(image, flag);// 保存图片并防止
    		}
    	}
    });

    其中驱动代码为:

    captureDeviceInfo = CaptureDeviceManager
    				.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); // 这里放置的是视频驱动
    		mediaLocator = new MediaLocator("vfw://0"); // 这里是视频地址


    如此开启摄像头个人不是很理解,但是第一次完成需要摄像头的功能让给我的是一种挫败感。我一直怀疑可以是win8平台的问题,但是如果在xp上没问题,那么我的怀疑才能被证明。

    关于excel的导入导出方法,在前面的章节中介绍过,而这里我要用的解析excel的完整类就是前一章的类,这里不再赘述。

    参考地址:http://blog.csdn.net/trsli/article/details/17392943

    项目中关于图片存储方式主要是方便调用数据是进行切割字符串,并且可以在文件中很容易找到照片的主人。

    对于其他的处理这里不需要多说:代码中由于有两种数据提取方式,个人认为如果屏蔽掉数据库,应该会显得更加简单,但是写数据库主要是考虑到数据备份的需要。

    下面是主类详细代码:

    public class MainForm extends JFrame {
    	private JTextField stuName;// 学生姓名
    	private JTextField stuNo;// 学生学号
    	private JTable messageLine;// 学生信息列表
    	private JComboBox stuClass;// 班级信息下拉列表
    	private ImagePanel picPanel = new ImagePanel();// 图片展示区
    	private Component comp;// 照片区域
    	private Player player = null;
    	private CaptureDeviceInfo captureDeviceInfo = null;
    	private MediaLocator mediaLocator = null;
    	private Buffer buffer = null;
    	private BufferToImage bufferToImage = null;
    	private Image image = null;
    	private String flag = "no";
    	private String[] classmessage;
    	Object[][] p;
    	String[] n = { "序号", "班级", "学号", "姓名", "头像" };//这里在导入数据时可以动态获取	private JPanel midpanel;
    	private DefaultTableModel model;
    	private final JFileChooser filechoose = new JFileChooser();
    
    	public MainForm() {
    		staticmodel();
    		this.setTitle("学生信息录入系统");
    		this.setSize(new Dimension(800, 600));
    		/** --------------定制菜单开始------------------ */
    		MenuBar mb = new MenuBar();
    		Menu caidan = new Menu("菜单");
    		MenuItem daoru = new MenuItem("导入execl");
    		MenuItem daobufen = new MenuItem("导出当前信息");
    		MenuItem exit = new MenuItem("退出");
    		caidan.add(daoru);
    		caidan.add(daobufen);
    		caidan.add(exit);
    
    		daoru.addActionListener(new ActionListener() {// 导入事件
    					public void actionPerformed(ActionEvent arg0) {
    						filechoose.setDialogTitle("选择xls文件");
    						filechoose.setAcceptAllFileFilterUsed(false);
    						filechoose.addChoosableFileFilter(new ExcelFileFilter(
    								"xls"));
    						int val = filechoose.showOpenDialog(MainForm.this);
    						if (val == JFileChooser.APPROVE_OPTION) {
    							String filepath = filechoose.getSelectedFile()
    									.getAbsolutePath();
    							p = new PoiUtil().getmessage(filepath);
    							n = new PoiUtil().gettitles(filepath);
    							System.out.println("p[0][0]"+p[0][0]);
    							model.setDataVector(p, n);
    							
    						} else {
    							System.out.println("取消信息导入");
    						}
    					}
    				});
    		daobufen.addActionListener(new ActionListener() {// 导出信息事件
    					public void actionPerformed(ActionEvent arg0) {
    						filechoose.setDialogTitle("保存为");
    						ExcelFileFilter filter = new ExcelFileFilter("xls");
    						filechoose.setFileFilter(filter);
    						int val = filechoose.showDialog(MainForm.this, "确定");
    						if (val == filechoose.APPROVE_OPTION) {
    							String filepath = filechoose.getSelectedFile()
    									.getPath();
    							String filename = filechoose.getSelectedFile()
    									.getName();
    							int nindex = filename.indexOf(".xls");
    							FileOutputStream fos;
    							try {
    								if (nindex < 0) {
    									filename = filename + ".xls";
    									int nindex1 = filepath.lastIndexOf("\\");
    									String filepath1 = filepath.substring(0,
    											nindex1 + 1);
    									filename=filepath1		+ filename;
    								} else {
    									filename=filechoose.getSelectedFile().getName();
    								}
    								System.out.println(p.length+"p"+"n"+n.length+""+filename);
    								new PoiUtil().createxls(p, n, filename);
    							} catch (Exception e) {
    								e.printStackTrace();
    							}
    						}
    					}
    				});
    
    		exit.addActionListener(new ActionListener() {// 退出程序
    					public void actionPerformed(ActionEvent arg0) {
    						ImageUtil.exit(MainForm.this, player);
    					}
    				});
    		mb.add(caidan);
    		this.setMenuBar(mb);
    		/** --------------定制菜单结束------------------ */
    
    		/** ------------添加摄像头成像区域-------------- */
    		JPanel npanel = new JPanel(new BorderLayout(40, 0));
    		captureDeviceInfo = CaptureDeviceManager
    				.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); // 这里放置的是视频驱动
    		mediaLocator = new MediaLocator("vfw://0"); // 这里是视频地址
    		DataSource ds = new DataSource();
    		ds.setLocator(mediaLocator);
    		JPanel cpanel = new JPanel();
    		cpanel.setSize(160, 200);
    		try {
    			player = Manager.createRealizedPlayer(mediaLocator);
    			player.start();
    			if ((comp = player.getVisualComponent()) != null)// 这里需要进行处理
    				cpanel.add(comp);
    			npanel.add(cpanel, BorderLayout.WEST);
    			/** ----------- 摄像头添加完成------------ */
    
    			/** ------------信息输入区---------------- */
    			JPanel rpan = new JPanel(new BorderLayout(0, 30));
    			rpan.add(new JLabel("学生信息输入区", JLabel.CENTER), BorderLayout.NORTH);
    			JPanel mpanel = new JPanel(new GridLayout(3, 1, 40, 10));
    			// 1
    			JLabel clabel = new JLabel("班    级:");
    			stuClass = new JComboBox(classmessage);
    			JPanel cpa = new JPanel(new BorderLayout(20, 0));
    			cpa.add(clabel, BorderLayout.WEST);
    			cpa.add(stuClass, BorderLayout.CENTER);
    			stuClass.setEditable(true);
    			// 2
    			JLabel nolabel = new JLabel("学    号:");
    			stuNo = new JTextField();
    			JPanel cpa1 = new JPanel(new BorderLayout(20, 0));
    			cpa1.add(nolabel, BorderLayout.WEST);
    			cpa1.add(stuNo, BorderLayout.CENTER);
    			// 3
    			JLabel nlabel = new JLabel("姓    名:");
    			stuName = new JTextField();
    			JPanel cpa2 = new JPanel(new BorderLayout(20, 0));
    			cpa2.add(nlabel, BorderLayout.WEST);
    			cpa2.add(stuName, BorderLayout.CENTER);
    			// 4
    			mpanel.add(cpa);
    			mpanel.add(cpa1);
    			mpanel.add(cpa2);
    			rpan.add(mpanel, BorderLayout.CENTER);
    			// 5
    			JPanel bpanel = new JPanel();
    			JButton button = new JButton("拍照");
    			JButton addstu = new JButton("添加");
    			JButton prvestu = new JButton("上一位");
    			JButton nextstu = new JButton("下一位");
    			button.addActionListener(new ActionListener() {// 拍照功能
    						public void actionPerformed(ActionEvent arg0) {
    
    							FrameGrabbingControl fgc = (FrameGrabbingControl) player
    									.getControl("javax.media.control.FrameGrabbingControl");
    							buffer = fgc.grabFrame();
    							bufferToImage = new BufferToImage(
    									(VideoFormat) buffer.getFormat());
    							image = bufferToImage.createImage(buffer);
    							picPanel.setImage(image);
    							String sclass = stuClass.getSelectedItem()
    									.toString().trim();
    							String sno = stuNo.getText().toString().trim();
    							String sname = stuName.getText().toString().trim();
    							flag = "E:\\" + sname + "_"
    									+ System.currentTimeMillis() + ".jpg";
    							if (ImageUtil.checkflag(sclass, sno, sname)) {// 检查数据
    								ImageUtil.saveImage(image, flag);// 保存图片并防止
    							}
    						}
    					});
    
    			addstu.addActionListener(new ActionListener() {// 添加功能
    						public void actionPerformed(ActionEvent arg0) {
    							//数据库处理区
    							StudentDao dao = new StudentDaoImpl();
    							
    							String sclass = stuClass.getSelectedItem()
    									.toString().trim();
    							String sno = stuNo.getText().toString().trim();
    							String sname = stuName.getText().toString().trim();
    							if (ImageUtil.checkflag(sclass, sno, sname)) {// 检查数据
    								if (ImageUtil.checkstuno(sno)) {
    									dao.saveStudent(new Student(sno, sname,
    											flag, sclass));
    									p = ImageUtil.getdbArray(sclass);
    									model.setDataVector(p, n);
    								} else {
    									JOptionPane.showMessageDialog(null,
    											"学号已经存在!", "提示信息",
    											JOptionPane.ERROR_MESSAGE);
    								}
    							}
    						}
    					});
    			prvestu.addActionListener(new ActionListener() {// 上一位
    						public void actionPerformed(ActionEvent e) {
    							if (p != null) {
    								int row = messageLine.getSelectedRow();
    								ListSelectionModel smodel = messageLine
    										.getSelectionModel();
    								if (row > 0) {
    									row = row - 1;
    									smodel.setSelectionInterval(row, row);
    								}
    								showmessage(row);
    							}
    						}
    					});
    			nextstu.addActionListener(new ActionListener() {// 下一位
    						public void actionPerformed(ActionEvent e) {
    							if (p != null) {
    								int row = messageLine.getSelectedRow();
    								ListSelectionModel smodel = messageLine
    										.getSelectionModel();
    								if (row >= 0 && row < p.length - 1) {
    									row = row + 1;
    									smodel.setSelectionInterval(row, row);
    								}
    								showmessage(row);
    							}
    						}
    					});
    			bpanel.add(button);
    			bpanel.add(addstu);
    			bpanel.add(prvestu);
    			bpanel.add(nextstu);
    			rpan.add(bpanel, BorderLayout.SOUTH);
    			npanel.add(rpan, BorderLayout.CENTER);
    			/** -----------信息界面完成-------------- */
    		} catch (NoPlayerException e) {
    			e.printStackTrace();
    		} catch (CannotRealizeException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    		this.add(npanel, BorderLayout.NORTH);
    		/** -------中间面板布局----------------- */
    		midpanel = new JPanel(new BorderLayout(20, 20));
    		picPanel.setBackground(Color.LIGHT_GRAY);
    		midpanel.add(picPanel, BorderLayout.WEST);
    
    		model = new DefaultTableModel(p, n);
    		messageLine = new JTable(model);
    
    		messageLine.setPreferredScrollableViewportSize(new Dimension(550, 30));
    		JScrollPane scrollPane = new JScrollPane(messageLine);
    		midpanel.add(scrollPane, BorderLayout.CENTER);
    		/** ------中间面板结束------------------ */
    
    		this.add(midpanel, BorderLayout.CENTER);
    		// south
    		JPanel spanel = new JPanel();
    		JButton tuichu = new JButton("退出");
    		tuichu.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				ImageUtil.exit(MainForm.this, player);
    			}
    		});
    		/** 班级切换事件 */
    		stuClass.addItemListener(new ItemListener() {
    			public void itemStateChanged(ItemEvent e) {
    				if (e.getStateChange() == ItemEvent.SELECTED) {
    					String sclass = stuClass.getSelectedItem().toString();
    					if (sclass.equals("请选择班级")) {
    						staticmodel();// 整理全部数据
    						model.setDataVector(p, n);
    					} else {
    						p = ImageUtil.getdbArray(sclass);
    						model.setDataVector(p, n);
    					}
    				}
    			}
    		});
    		spanel.add(tuichu);
    		// south end
    		this.add(spanel, BorderLayout.SOUTH);
    		this.pack();
    		this.addWindowListener(new WindowAdapter() {// 关闭窗口事件
    					public void windowClosing(WindowEvent e) {
    						player.close();
    						System.exit(0);
    					}
    				});
    		this.setVisible(true);
    	}
    
    	/**动态显示具体信息*/
    	public void showmessage(int row){
    		Object[] msgs=p[row];
    		stuName.setText(msgs[3].toString());
    		stuNo.setText(msgs[2].toString());
    		String imgPath = msgs[4].toString();  
    		try {
    			if(!imgPath.equals("no")){
    				BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
    				picPanel.setImage(image);
    			}else{
    				picPanel=new ImagePanel();//没有就进行初始化
    			}
    		} catch (FileNotFoundException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}  
    	}
    	
    	
    	
    	
    	
    	
    	@Override
    	public void paint(Graphics g) {// 绘图
    		super.paint(g);
    		g.setColor(new Color(255, 0, 0));
    		g.drawLine(0, 0, 100, 100);
    	}
    
    	public static void main(String[] args) {
    		MainForm main = new MainForm();
    
    	}
    
    	private class ExcelFileFilter extends FileFilter {
    		private String ext;
    
    		public ExcelFileFilter(String ext) {
    			this.ext = ext;
    		}
    
    		@Override
    		public boolean accept(File file) {
    			if (file.isDirectory()) {
    				return true;
    			}
    			String fname = file.getName();
    			int index = fname.lastIndexOf(".");
    			if (index > 0 && index < fname.length() - 1) {
    				String extension = fname.substring(index + 1).toLowerCase();
    				if (extension.equals(ext)) {
    					return true;
    				}
    				return false;
    			}
    			return false;
    		}
    
    		@Override
    		public String getDescription() {
    			if (ext.equals("xls")) {
    				return "excel 文件";
    			}
    			return "";
    		}
    	}
    	//数据库处理execl提取数据
    	public void staticmodel() {
    		StudentDao dao = new StudentDaoImpl();
    		List<Student> stus = dao.listAllStudent();
    		Set<String> set = new HashSet<String>();// 具有防止重复的功能
    		p = new Object[stus.size()][5];
    		for (int i = 0; i < stus.size(); i++) {
    			int j = 0;
    			p[i][j] = stus.get(i).getSid();
    			p[i][j + 1] = stus.get(i).getStuClass();
    			p[i][j + 2] = stus.get(i).getStuNo();
    			p[i][j + 3] = stus.get(i).getStuName();
    			p[i][j + 4] = stus.get(i).getFlagpic();
    			set.add(stus.get(i).getStuClass());
    		}
    		// 获取班级
    		List<String> stuClassNames = new ArrayList<String>();
    
    		stuClassNames.addAll(set);
    
    		classmessage = new String[stuClassNames.size() + 1];
    		classmessage[0] = "请选择班级";
    		for (int i = 0; i < stuClassNames.size(); i++) {
    			classmessage[i + 1] = stuClassNames.get(i);
    			System.out.println(stuClassNames.get(i));
    		}
    	}

    以上代码是主窗口界面的代码,很长,但是内容很简单。项目可以根据班级选择而自动切换表格,在菜单中有导入和到处功能。数据为了测试方面才使用的如下数据。

    项目开始时内部显示的数据是数据库中的数据,如果需要导入数据选择菜单中的导入,然后选择.xls文件即可。

    项目功能基本实现,但是缺少较好的用户体验,这yeshiva我下一步需要完善的,也希望爱好学习的同行有兴趣可以将代码copy去研究一下,并分享研究信息。

    下面是图像处理代码,其实在这里真的符合类名称的方法就第一个,处理图片。不过个人将他作为工具类,应该不会功能无障碍。

    public class ImageUtil {
    	
    	/**照片保存方式,格式为jpeg*/
    	public static void saveImage(Image image, String path) {
    		BufferedImage bi = new BufferedImage(image.getWidth(null), image
    				.getHeight(null), BufferedImage.TYPE_INT_RGB);
    		Graphics2D g2 = bi.createGraphics();//绘制二维图片
    		g2.drawImage(image, null, null);
    		FileOutputStream fos = null;
    		try {
    			fos = new FileOutputStream(path);
    		} catch (FileNotFoundException e) { // TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		JPEGImageEncoder je = JPEGCodec.createJPEGEncoder(fos);
    		JPEGEncodeParam jp = je.getDefaultJPEGEncodeParam(bi);
    		jp.setQuality(0.5f, false);
    		je.setJPEGEncodeParam(jp);
    		try {
    			je.encode(bi);
    			fos.close();
    		} catch (ImageFormatException e) { 
    			e.printStackTrace();
    		} catch (IOException e) { 
    			e.printStackTrace();
    		}
    	}
    	/**退出提示操作*/
    	public static void exit(JFrame source,Player player){
    		int val=JOptionPane.showConfirmDialog(source,"真的要退出?", "提示信息",0,1);
    		if(val==JOptionPane.YES_OPTION){
    			if(player!=null){
    				player.close();
    			}
    			source.setVisible(false);
    			System.exit(0);
    		}
    	}
    	public static boolean checkstuno(String stuNo){
    		StudentDao dao=new StudentDaoImpl();
    		List<Student> students=dao.findStudentByStuno(stuNo);
    		if(students.isEmpty()|| (students==null)){
    			return true;
    		}
    		return false;
    	}
    	/**根据班级寻找信息*/
    	public static List<Student> findCalssStudents(String stuclass){
    		StudentDao dao=new StudentDaoImpl();
    		List<Student> students=dao.listStudent(stuclass);
    		return students;
    	}
    	/**检查输入区数据*/
    	public static boolean checkflag(String sclass,String sno,String sname){
    		if(sclass.equals("请选择班级")){
    			JOptionPane.showMessageDialog(null, "请选择班级","提示信息",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if("".equals(sno)||sno==null){
    			JOptionPane.showMessageDialog(null, "学号不能为空","提示信息",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		if("".equals(sname)||sname==null){
    			JOptionPane.showMessageDialog(null, "姓名不能为空","提示信息",JOptionPane.ERROR_MESSAGE);
    			return false;
    		}
    		return true;
    	}
    	public static Object[][] getdbArray(String sclass){
    		List<Student> stus=ImageUtil.findCalssStudents(sclass);
    		System.out.println(stus.size()+"_success");
    		Object[][] p =new Object[stus.size()][5];
    		
    		for(int i=0;i<stus.size();i++){
    			int j=0;
    				p[i][j]=stus.get(i).getSid();
    				p[i][j+1]=stus.get(i).getStuClass();
    				p[i][j+2]=stus.get(i).getStuNo();
    				p[i][j+3]=stus.get(i).getStuName();
    				p[i][j+4]=stus.get(i).getFlagpic();
    		}
    		return p;
    	}

    照片显示panel.

    /** 照片展示区域 */
    public class ImagePanel extends Panel {
    	public Image myimg = null;
    
    	public ImagePanel() {
    		setLayout(null);
    		setSize(320, 240);
    	}
    
    	public void setImage(Image img) {
    		this.myimg = img;
    		repaint();
    	}
    
    	public void paint(Graphics g) {
    		if (myimg != null) {
    			g.drawImage(myimg, 10, 0, this);
    		}
    	}
    
    

    这里没有关于数据库的信息,如果需要可以留言,毕竟数据库不是项目的主线。

    未完成情况展示,这里需要相机调试,照片能够完整显示出来,说明拍照存在问题。表格中选择学生后,上面的学号姓名应该能够相应的变化,为空白,确实不是很好看。


     导出文件,如到处2班的学生信息在班级下拉列表中选择2,菜单中选择导出:

      这里导出到桌面:   

    已经写得够多了,有兴趣研究的人可以留言联系。

     

    展开全文
  • 利用USB摄像头或者电脑自带相机、单反快速采集学生或员工身份信息 快速采集学生或员工身份信息 ,支持格式批量转换
  • Java基本信息采集程序

    千次阅读 2016-11-14 21:45:27
    采用简单的Swing用户界面组件实现基本信息采集工作。

    采用简单的Swing用户界面组件实现基本信息采集工作。

    TextComponentFrame.java

    package text;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    
    
    public class TextComponentFrame extends JFrame {
    
        public static final int TEXTAREA_ROWS = 8;
        public static final int TEXTAREA_COLUNS = 20;
    
        final JTextField textfield1 = new JTextField();
        final JTextField textfield2 = new JTextField();
        final JTextField textfield3 = new JTextField();
        final JTextField textfield4 = new JTextField();
        final JTextField textfield5 = new JTextField();
    
        int id = 0;
        public TextComponentFrame() {
    
            JPanel northpanel = new JPanel();
            northpanel.setLayout(new GridLayout(5, 2));
            northpanel.add(new JLabel("姓名:", SwingConstants.RIGHT));
            northpanel.add(textfield1);
            northpanel.add(new JLabel("性别:", SwingConstants.RIGHT));
            northpanel.add(textfield2);
            northpanel.add(new JLabel("年龄:", SwingConstants.RIGHT));
            northpanel.add(textfield3);
            northpanel.add(new JLabel("身份证号:", SwingConstants.RIGHT));
            northpanel.add(textfield4);
            northpanel.add(new JLabel("家庭住址:", SwingConstants.RIGHT));
            northpanel.add(textfield5);
    
            add(northpanel, BorderLayout.NORTH);
    
            final JTextArea textArea = new JTextArea("详细信息显示区",TEXTAREA_ROWS, TEXTAREA_COLUNS);
            JScrollPane scrollPane = new JScrollPane(textArea);
    
            add(scrollPane, BorderLayout.CENTER);
    
            JPanel southPanel = new JPanel();
            JButton insertButton = new JButton("提交");
            southPanel.add(insertButton);
            insertButton.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    if(id == 0) {
                        textArea.setText("");
                    }
                    id++;
                    textArea.append(
                    "编号:" + id + "\n" +
                    "姓名:" + textfield1.getText() + "\n" + 
                    "性别:" + textfield2.getText() + "\n" + 
                    "年龄:" + textfield3.getText() + "\n" +
                    "身份证号:" + textfield4.getText() + "\n" +
                    "家庭住址:" + textfield5.getText() + "\n" +
                    "——————————————————————————————————————" + "\n");
                    resetValue();
                }
            });
            add(southPanel,BorderLayout.SOUTH);
            pack();
        }
    
        protected void resetValue() {
            // TODO Auto-generated method stub
            textfield1.setText("");
            textfield2.setText("");
            textfield3.setText("");
            textfield4.setText("");
            textfield5.setText("");
        }
    
    
    
    }
    

    测试程序

    TestFrame.java

    package text;
    
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    
    public class TestFrame {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
             EventQueue.invokeLater(new Runnable()
             {
                public void run()
                {
                   JFrame frame = new TextComponentFrame();
                   frame.setTitle("FontTest");
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.setVisible(true);
                }
             });
        }
    
    }
    

    这里写图片描述

    这里写图片描述

    展开全文
  • 新学期开学,又要统计学生信息。如果每个人都填写一个Excel的话,最后做汇总工作的那个人一定神烦。所以基于django编了一个小网页,用于采集学生的基本信息。刚学会做网页,也是第一次用django,写的不好,望见谅。...

    新学期开学,又要统计学生信息。如果每个人都填写一个Excel的话,最后做汇总工作的那个人一定神烦。所以基于django编了一个小网页,用于采集学生的基本信息。刚学会做网页,也是第一次用django,写的不好,望见谅。主要参考了菜鸟教程的django系列教程,很简单,一两个小时就上手了。如果之前对django不熟悉的,可以先把上面的几个教程看一下,然后再看我的源码应该就很简单了。接下来直接介绍代码,程序源码我放到了我的github上面,欢迎大家下载~~:
    1,先写一个静态HTML页面,是信息采集的表单。没什么好说的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>学硕4班信息采集</title>
    </head>
    <body>
        <h1>学硕4班信息采集</h1>
        <h2>请大家认真填写,每一项都不要有空缺。填写完毕之后点击提交按钮即可</h2>
        <form action="/xinxicaiji/" method="get">
        <table>
            <tr><td>姓名</td><td><input type="text" name="xingming"></td><td>XXX</td></tr>
            <tr><td>学号</td><td><input type="text" name="xuehao"></td><td>2011210220</td></tr>
            <tr><td>导师</td><td><input type="text" name="daoshi"></td><td>张三</td></tr>
            <tr><td>导师电话</td><td><input type="text" name="dsdianhua"></td><td>13333333333</td></tr>
            <tr><td>本人手机号</td><td><input type="text" name="brdianhua"></td><td>18888888888</td></tr>
            <tr><td>邮箱</td><td><input type="text" name="eMail"></td><td>a@b.c</td></tr>
            <tr><td>微信号</td><td><input type="text" name="weixin"></td><td>583960209</td></tr>
            <tr><td>QQ号</td><td><input type="text" name="QQ"></td><td>583960209</td></tr>
            <tr><td>体重</td><td><input type="text" name="weight"></td><td>70</td></tr>
            <tr><td>身高</td><td><input type="text" name="height"></td><td>180</td></tr>
            <tr><td>鞋号</td><td><input type="text" name="size"></td><td>42</td></tr>
            <tr><td>火车站</td><td><input type="text" name="huochezhan"></td><td>太原站</td></tr>
            <tr><td>特长</td><td><input type="text" name="habit"></td><td>足球</td></tr>
            <tr><td>学费</td><td><input type="text" name="money"></td><td>8000</td></tr>
            <tr><td>父亲姓名</td><td><input type="text" name="baba"></td><td>李四</td></tr>
            <tr><td>父亲工作</td><td><input type="text" name="babaGongzuo"></td><td>某厂职工</td></tr>
            <tr><td>父亲手机号</td><td><input type="text" name="babatel"></td><td>18888888888</td></tr>
            <tr><td>母亲姓名</td><td><input type="text" name="mama"></td><td>王五</td></tr>
            <tr><td>母亲工作</td><td><input type="text" name="mamaGongzuo"></td><td>某厂职工</td></tr>
            <tr><td>母亲手机号</td><td><input type="text" name="mamatel"></td><td>18888888888</td></tr>
            <tr><td>家庭电话</td><td><input type="text" name="hometel"></td><td>18888888888</td></tr>
            <tr><td>家庭地址</td><td><input type="text" name="homeadd"></td><td>某省某市某街道</td></tr>
            <tr><td>在京联系人姓名</td><td><input type="text" name="beijing"></td><td>赵六</td></tr>
            <tr><td>在京联系人工作</td><td><input type="text" name="beijingGongzuo"></td><td>某厂职工</td></tr>
            <tr><td>在京联系人手机号</td><td><input type="text" name="beijingtel"></td><td>18888888888</td></tr>
            <tr><td>宿舍号</td><td><input type="text" name="dor"></td><td>学十925</td></tr>
            <tr><td>宿舍长</td><td><input type="text" name="dorP"></td><td>刘七</td></tr>
        </table>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>

    效果如下图所示:
    这里写图片描述

    2,配置数据库设置。在项目路径下执行python manage.py startapp *** 新建一个引用。然后修改里面的 models.py文件,其实就是新建一个类,对应于数据库的表。类的每一个属性对应于表中的每一个字段。类定义如下图所示,其实就是要采集的信息。

    class XinXiCaiJi(models.Model):
        xingming = models.CharField(max_length=20)
        xuehao = models.CharField(max_length=20)
        daoshi = models.CharField(max_length=20)
        dsdianhua = models.CharField(max_length=20)
        brdianhua = models.CharField(max_length=20)
        eMail = models.CharField(max_length=30)
        weixin = models.CharField(max_length=20)
        QQ = models.CharField(max_length=20)
        weight = models.CharField(max_length=20)
        height = models.CharField(max_length=20)
        size = models.CharField(max_length=20)
        huochezhan = models.CharField(max_length=20)
        habit = models.CharField(max_length=400)
        money = models.CharField(max_length=20)
        baba = models.CharField(max_length=20)
        babaGongzuo = models.CharField(max_length=20)
        babatel = models.CharField(max_length=20)
        mama = models.CharField(max_length=20)
        mamaGongzuo = models.CharField(max_length=20)
        mamatel = models.CharField(max_length=20)
        hometel = models.CharField(max_length=20)
        homeadd = models.CharField(max_length=200)
        beijing = models.CharField(max_length=20)
        beijingGongzuo = models.CharField(max_length=20)
        beijingtel = models.CharField(max_length=20)
        dor = models.CharField(max_length=20)
        dorP = models.CharField(max_length=20)

    然后执行python manage.py migrate 就可以生成对应的数据库了。在此之前你需要在settings.py文件中设置数据库信息和本应用app的信息,具体参见菜鸟教程 的文章,注意,有的教程生成数据库的命令用的是python manage.py syncdb。这是老版本,新版的django都已经改成migrate。还有就是可能你的项目部署之后可能会提醒你数据库的表并未建立,此时应该执行以下两个命令,重新建立数据表。

    python manage.py makemigrations
    python manage.py migrate

    3,页面和数据库都有了,接下来就是页面之间跳转和页面内操作的定义。首先定义urls.py文件。初始登录hello页面,指向前面写的HTML模板,当点击提交按钮后,跳转到xinxicaiji页面,指向caijiwangcheng函数。

        url(r'^hello/$', hello),
        url(r'^xinxicaiji/$', search.caijiwancheng),

    caijiwancheng函数定义如下:主要功能是判断信息填写是否完整并将该条数据插入数据库中;

    def caijiwancheng(request):
        request.encoding = 'utf-8'
        message = ''
        for key in request.GET:
            if request.GET[key] == '':
                message = '请填写完整信息'
                break
        if 'xingming' in request.GET and message == '':
            message = request.GET['xingming'].encode('utf-8') + '同学,你的信息录入完成。谢谢配合~'
            test1 = XinXiCaiJi(xingming = request.GET['xingming'], xuehao = request.GET['xuehao'], daoshi = request.GET['daoshi'],
                               dsdianhua = request.GET['dsdianhua'], brdianhua = request.GET['brdianhua'], eMail = request.GET['eMail'],
                               weixin = request.GET['weixin'], QQ = request.GET['QQ'], weight = request.GET['weight'], height = request.GET['height'],
                               size = request.GET['size'], huochezhan = request.GET['huochezhan'], habit = request.GET['habit'],
                               money = request.GET['money'], baba = request.GET['baba'], babaGongzuo = request.GET['babaGongzuo'], babatel = request.GET['babatel'],
                               mama = request.GET['mama'], mamaGongzuo = request.GET['mamaGongzuo'], mamatel = request.GET['mamatel'], hometel = request.GET['hometel'],
                               homeadd = request.GET['homeadd'], beijing = request.GET['beijing'], beijingGongzuo = request.GET['beijingGongzuo'],
                               beijingtel = request.GET['beijingtel'], dor = request.GET['dor'], dorP = request.GET['dorP'])
            test1.save()
        return HttpResponse(message)

    这样基本的功能模块都已完成,就可以上线部署了。很简单,执行python manage.py runserver 0.0.0.0:8000 即可。注意,这里必须是0。0。0。0,只有这样别人才可以访问你的网页。我是放在自己电脑上,然后校内网可以访问。如果要部署到外网上还要买域名空间之类的,没有尝试。
    这样大家填写完成之后,你就可以把数据库导出来做成excel表了。代码请参考github网站。

    展开全文
  • python实现信息采集及命令操作

    千次阅读 2019-04-08 15:29:07
    一、获取信息 包括 IP、MAC、CPU信息(总/占用率)、内存信息(总/占用率)、磁盘信息(linux:文件系统;windows:空间占用) 二、其他信息获取及命令操作 包括,虚拟机服务器对虚拟机的操作、docker服务器对...
  • 学生信息管理系统代码全篇

    千次阅读 2020-10-11 20:59:37
    /*学生信息管理系统*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include<winbase.h> #include<time.h> #include<conio.h> #...
  • 学生信息管理系统 完整代码

    千次阅读 2020-08-10 00:50:29
    学生信息管理系统 一、开发语言:C语言 二、开发要求:每人提交一份系统研发报告和源代码,基于课程设计报告格式,可以建立小组讨论。2020年08月10日前上交。 三、开发主要功能如下 系统功能包括:用户登陆、信息...
  • Javaweb学生信息管理系统

    千次阅读 多人点赞 2019-06-29 02:39:14
    功能描述: 实现管理员对学生信息的基本管理,学生信息的增删查改以及实现分页功能。 本文章值得学习,希望你们从中学习到东西。 页面展示 点击获取源码 提取码:qmgr ...
  • 用c#编写一个学生信息添加程序,学生信息包括学号,姓名,性别,有不用数据库做出来的吗,之是一个简单的小程序
  • Python 学生信息管理系统

    千次阅读 2020-04-17 10:01:30
    这是一个学生信息管理系统的完整的源代码,如有其它更好的建议欢迎大家评论! 这是主方法调用的源代码文件: from 学生信息管理系统 import Student_Tools def mian(): while True: # 捕获异常,防止意外异常...
  • 学生信息管理系统总结(一)

    千次阅读 热门讨论 2016-06-01 14:19:36
    学生信息管理系统——自己接触到的第一个系统,我们要学着站在巨人的肩膀上学习,所以这个系统基本是照着源码敲下来的,但是源码中也有错误,我很喜欢这样,源码里的核心知识以及错误正式我们要学习的地方,所以感觉...
  • javaWeb学生信息查询

    千次阅读 2019-10-28 09:11:57
    学生成绩查询系统欢迎浏览项目目录com.zz.actioncom.zz.action.studentcom.zz.action.testcom.zz.controllercom.zz.daocom.zz.pojocom.zz.utilsrcdblibWEB-INFWebContent效果图 欢迎浏览 你好!这一篇文章是为了巩固...
  • 学生信息管理系统·用例

    千次阅读 2020-03-17 11:55:04
    一 学校的老师使用(尤其是招生组、学工处等需要分析同学信息的老师):有这样的一个系统可以方便他们更好地分析; 二 企业用信息管理系统收集员工的信息采集和管理。 ...
  • 学生信息管理系统——顺序表

    千次阅读 2019-09-20 10:20:07
    定义一个包含学生信息(学号,姓名,成绩)的的 顺序表,使其具有如下功能: 1.1根据指定学生个数,逐个输入学生信息; 1.2逐个显示学生表中所有学生的相关信息; 1.3根据姓名进行查找,返回此学生的学号和成绩; ...
  • 今日起至5月31日,北京市义务教育入学服务平台将开展信息采集工作,各位家长可以在开放时间内完成小学和初中入学信息采集。入学采集服务系统怎么用?小编带您一步一步来操作↓↓壹、小学时间安排 2020.5.1 开通义务...
  • SSM学生信息管理系统

    千次阅读 热门讨论 2020-03-18 14:36:26
    闲着没事做,搞了个学生管理系统,会了ssm框架只有会sql就可以写项目。 写项目比写算法简单多了,写算法你认真写你都不一定会,而项目就跟搬砖一样,刷着剧,摸着鱼搞了1天半。、 这个博客不怎么用了需要代码的...
  • 需要的工具:ps 和 python 第一...最终上传图像采集系统通过 img1 = img[:2200:,:] cv2.imwrite("./DSC2.JPG",img1) cv2.imshow("img",img1) cv2.waitKey(0) cv2.destroyAllWindows() 实测,本人上传的图像已通过认证。
  • 基于SSM框架的学生信息管理系统

    千次阅读 2020-03-28 10:27:50
    基于SSM框架的学生信息管理系统 一、主要功能介绍: 根据使用需求,系统用户分为系统管理员与学生用户。 1.系统管理员: (1)基本模块:可以在该模块中实施管理员对学生基本信息进录入,查看,和更改操作。学生基本...
  • 2、请根据最新的宗地信息“parcelnew.tif”进行地块数据采集,存储为矢量面要素parcelnew,并在属性表中建立字段记录地块的类型; 3、试分析parcel图层和parcelnew图层,提取被更新的宗地数据,命名为update_; 4、...
  • 基于php学生信息管理系统设计

    千次阅读 2019-04-13 23:42:47
    若干年前,各个学校的学生成绩管理基本上都是靠手工进行,随着学校的规模增大,有关学生信息管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生信息管理。但手工管理具有效率底、易出错、检索...
  • {asp.net2.0}信息采集系统(附全部源码)

    千次阅读 热门讨论 2006-06-12 21:01:00
    更多开源和破解请访问:http://overred.cnblogs.com 网上的一个信息采集系统,我把他反编译后,并转换为.net2.0,奉献给大家. 软件简介: 一套免费软件,功能完全无限制,功能特点: 1.仿动网风格,界面精美;2.系统采用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,056
精华内容 5,622
关键字:

学生信息采集网