学生管理系统 订阅
学生信息管理系统是针对学校学生处的大量工作处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用手机和计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。 展开全文
学生信息管理系统是针对学校学生处的大量工作处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用手机和计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。
信息
针    对
学校学生处的大量工作处理
安全管理
支持精准定位
开    发
管理软件
奖学金管理
:支持学生成绩绩点、任职分值
中文名
学生管理系统
外文名
Student management system
学生管理系统产生背景
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依*人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。
收起全文
精华内容
下载资源
问答
  • 学生管理系统
    千次阅读
    2021-11-28 15:02:41

    学生管理系统

    正文

    运行系统:
    提示:欢迎来到学生管理系统
    系统列表展示

    (1)查看所有学生 封装方法
    (2)添加学生 封装方法
    (3)删除学生 封装方法
    (4)修改学生 封装方法
    (5)退出系统 封装方法

    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.ArrayList;
    import java.util.Scanner;
    class Student {
    	private String sno;
    	private String name;
    	private int age;
    	private String home;
    	public String getSno() {
    		return sno;
    	}
    	public void setSno(String sno) {
    		this.sno = sno;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getHome() {
    		return home;
    	}
    	public void setHome(String home) {
    		this.home = home;
    	}
    
    	//重写了hashCode()
    	@Override
    	public int hashCode() {
    		final int prime = 31;
    		int result = 1;
    		result = prime * result + age;
    		result = prime * result + ((home == null) ? 0 : home.hashCode());
    		result = prime * result + ((name == null) ? 0 : name.hashCode());
    		result = prime * result + ((sno == null) ? 0 : sno.hashCode());
    		return result;
    	}
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Student other = (Student) obj;
    		if (age != other.age)
    			return false;
    		if (home == null) {
    			if (other.home != null)
    				return false;
    		} else if (!home.equals(other.home))
    			return false;
    		if (name == null) {
    			if (other.name != null)
    				return false;
    		} else if (!name.equals(other.name))
    			return false;
    		if (sno == null) {
    			if (other.sno != null)
    				return false;
    		} else if (!sno.equals(other.sno))
    			return false;
    		return true;
    	}
    	@Override
    	public String toString() {
    		return "Student [sno=" + sno + ", name=" + name + ", age=" + age + ", home=" + home + "]";
    	}	
    }
    public class StudentManageMent {
    //	定义学生数组长度,初始长度=0;
    	public static int length=0;	
    //	展示学生
    	public static void showStudents(ArrayList<Student> student,int length){
    		Student s=new Student();
    		if(student.isEmpty()){
    			System.out.println("没有学生");
    			theShow(student,length);
    			System.out.println("请选择其他功能");
    		}else{
    			for(int j=0;j<length;j++){
    //				System.out.println(student.get(j).toString());
    				System.out.println("学生"+(j+1)+"的年龄是: "+student.get(j).getAge()+" 名字是: "+student.get(j).getName()+
    						" 学号是: "+student.get(j).getSno()+" 家庭住址是: "+student.get(j).getHome());
    				
    			}
    			theShow(student,length);
    		}
    	}	
    //	添加学生
    	public static void addStudents(ArrayList<Student> student,int length){
    		System.out.println("请输入学号");
    		Scanner inSno =new Scanner(System.in);
    		String sno =inSno.next();
    		for(int b=0;b<length;b++){
    			if(sno.equals(student.get(b).getSno())){
    				System.out.println("你输入的学号已经被占用,请重新输入");
    				addStudents(student,length);
    			}	
    		}
    		Student stu=new Student();
    		stu.setSno(sno);
         	System.out.println("请输入姓名");
    		Scanner inName =new Scanner(System.in);
    		String name =inSno.next();
    		stu.setName(name);	
    		System.out.println("请输入年龄");
    		Scanner Inage =new Scanner(System.in);
    		int age =inSno.nextInt();
    		stu.setAge(age);	
    		System.out.println("请输入居住地");
    		Scanner inHome =new Scanner(System.in);
    		String home =inSno.next();
    		stu.setHome(home);
    		student.add(stu);
    		length++;
    		theShow(student,length);
    	}	
    //	删除学生
    	public static void delStudents(ArrayList<Student> a,int length){
    		System.out.println("选择要删除学生的学号");		
    		Scanner inSno =new Scanner(System.in);
    		String sno =inSno.next();
    		int time =0;//锁
    		for(int b=0;b<length;b++){
    			if(sno.equals(a.get(b).getSno())){
    				System.out.println("你输入的学号存在");
    				a.remove(b);
    				length--;
    				time =1;
    			}			
    		}
    		if(time ==1){
    			System.out.println(",已经删除");			
    		}		
    		theShow(a,length);
    		System.out.println("请选择其他功能");			
    	}	
    //	修改学生
    	public static void setStudents(ArrayList<Student> student,int length){
    		System.out.println("选择要修改学生的学号");		
    		Student stu =new Student();
    		Scanner inSno =new Scanner(System.in);
    		String sno =inSno.next();
    		int time =0;//锁
    		for(int b=0;b<length;b++){
    			if(sno.equals(student.get(b).getSno())){
    				System.out.println("你输入的学号存在");
    				student.remove(b);
    				time =1;
    				stu.setSno(sno);			
    				System.out.println("请输入姓名");
    				Scanner inName =new Scanner(System.in);
    				String name =inSno.next();
    				stu.setName(name);		
    				System.out.println("请输入年龄");
    				Scanner Inage =new Scanner(System.in);
    				int age =inSno.nextInt();
    				stu.setAge(age);		
    				System.out.println("请输入居住地");
    				Scanner inHome =new Scanner(System.in);
    				String home =inSno.next();
    				stu.setHome(home);
    				student.add(stu);			
    			}	
    			if(time ==1){
    				System.out.println("修改成功");
    			}		
    		}		
    		theShow(student,length);
    		System.out.println("请选择其他功能");		
    	}
    //	退出系统
    	public static void outOfTheSystem(ArrayList<Student> a){	
    	}
    //	theShow()操作系统的小入口,会被多次调用
    	public static void theShow(ArrayList<Student> student,int length){
    		
    		while(true){
    			Scanner sc=new Scanner(System.in);
    			int in=sc.nextInt();
    			switch(in){
    			case 1:
    				showStudents(student,length);
    			    break;
    			case 2:
    				addStudents(student,length++);
    			    break;
    			case 3:
    				delStudents(student,length);
    				break;
    			case 4:
    				setStudents(student,length);
    				break;
    			case 5:
    				return ;					
    			}		
    			return ;
    		}		
    	}	
    //	主界面
    	public static void managementView(){
    		System.out.println("=====欢迎来到学生管理系统=====");
    		System.out.println("|(1)查看所有学生                       |");
    		System.out.println("|(2)添加学生                              |");
    		System.out.println("|(3)删除学生                              |");
    		System.out.println("|(4)修改学生                              |");
    		System.out.println("|(5)退出系统                              |");
    		System.out.println("===========================");
    	}	
    //	主函数
    	public static void main(String[] args) {
    		ArrayList<Student> student=new ArrayList<>();	
    		managementView();
    		theShow(student,length);	
    	}	
    }
    
    
    更多相关内容
  • Python界面版学生管理系统

    千次下载 2018-10-27 15:45:18
    前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下载
  • Python学生管理系统(web网页版)

    热门讨论 2018-11-02 11:28:27
    Python学生管理系统(web网页版),前面发布了python的控制台版本的学生管理系统和使用tkinter界面版的学生管理系统,这次是使用Django开发基于学生的实体类的增删改查,里面包含项目演示录屏和完整的项目源码与...
  • 用Java实现学生管理系统【简化版】基础

    千次阅读 多人点赞 2022-06-04 20:54:41
    * 标准的IO版学生管理系统 * * * 分析: * 1.定义学生类 * 2.学生管理系统主界面的代码编写 * 3.学生管理系统的查看所有学生的代码编写 * 4.学生管理系统的添加学生的代码编写 * 5.学生管理系统的...

     🎉博客首页:痛而不言笑而不语的浅伤

    📢欢迎关注🥳点赞 👍 收藏 ⭐留言 📝 欢迎讨论!

    🔮本文由痛而不言笑而不语的浅伤原创,CSDN首发!

    🌋系列专栏:《Java每日一练》

    🧿首发时间:2022年6月4日

    ❤:热爱Java学习,期待一起交流!

    🙏🏻作者水平有限,如果发现错误,求告知,多谢!

    🥰有问题可以私信交流!!!

    目录

    运行展示

    界面初始化

    查看所有学生

     添加学生

    删除学生

    修改学生

    退出系统

     完整源代码 


     

    2df4d93be38d42318f77570a98672283.gif

     * 标准的IO版学生管理系统
     * 
     * * 分析:
     *         1.定义学生类
     *         2.学生管理系统主界面的代码编写
     *         3.学生管理系统的查看所有学生的代码编写
     *         4.学生管理系统的添加学生的代码编写
     *         5.学生管理系统的删除学生的代码编写
     *         6.学生管理系统的修改学生的代码编写

            其实挺简单的,就最基本的Java基础语法部分。很适合初学者练习。其实主要从Java面向对象和IO流的一个熟练掌握。最后是转换成jar文件,通过软件弄成了.exe的文件。执行exe文件就是如下运行结果。数据的保存是在同目录下的TXT文件,需要注意的是TXT文件和可执行的exe文件一定要放在同一文件夹内,不然会报错。

    运行展示

    界面初始化

    d7fcddbbd3ac470ea06cefff73aec892.gif

    public class StudentManagerTest_IO {
    	public static void main(String[] args) throws Exception {
    		File f1 = new File("‪G:\\学生管理系统\\Student1.txt");
    		// 创建持久相对路劲
    		String findName = f1.getName();
    		// 学生管理系统主界面的代码编写
    		// 死循环执行程序
    		while (true) {
    			System.out.println("----------欢迎使用老马教育学生管理系统----------");
    			System.out.println("请输入你要执行的操作:");
    			System.out.println("1 查看所有学生");
    			System.out.println("2 添加学生");
    			System.out.println("3 删除学生");
    			System.out.println("4 修改学生");
    			System.out.println("5 退出系统");

    查看所有学生

    d9b21edfba944a17b2d2823f1eda8bdd.gif

    // 学生管理系统的查看所有学生的代码编写
    	public static void findAllStudent(String findName) throws Exception {
    		// 创建集合对象存储学生数据
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 遍历集合到输出控制台
    		// 首先判断集合中是否有数据
    		if (array.size() == 0) {
    			System.out.println("不好意思,目前没有学生信息可供查询,请重新你的选择!");
    		} else {
    			System.out.println("所有学生信息如下:");
    			System.out.println("|-------|-------|-------|-------|");
    			System.out.println("|" + "学号" + "\t" + "|" + "姓名" + "\t" + "|" + "年龄" + "\t" + "|" + "地址" + "\t" + "|");
    			System.out.println("|-------|-------|-------|-------|");
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    
    				System.out.println("|" + s.getId() + "\t" + "|" + s.getName() + "\t" + "|" + s.getAges() + "\t" + "|"
    						+ s.getAddress() + "\t" + "|");
    				System.out.println("|-------|-------|-------|-------|");
    			}
    			System.out.println();
    			System.out.println();
    		}
    	}

     

     添加学生

    939c5ab9ee2041e489475d5e217726cb.gif

    // 学生管理系统的添加学生的代码编写
    	public static void addStudent(String findName) throws Exception {
    		// 创建存储数据的集合对象
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		String id;
    		// 判断该学号是否已被占用
    		while (true) {
    			// 定义标记
    			boolean flag = false;
    			// 添加学号
    			System.out.println("请您输入要添加的学生学号:");
    			id = sc.nextLine();
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    				if (s.getId().equals(id)) {
    					flag = true;
    					break;
    				}
    			}
    			if (flag) {
    				System.out.println("不好意思,你输入的学号已被占用,请你重新你的选择:");
    				break;
    			} else {
    				// 添加姓名
    				System.out.println("请您输入学生姓名:");
    				String name = sc.nextLine();
    				System.out.println("请您输入学生年龄:");
    				String ages = sc.nextLine();
    				System.out.println("请您输入学生居住地址:");
    				String address = sc.nextLine();
    				// 创建学生对象
    				Student s = new Student();
    				s.setId(id);
    				s.setName(name);
    				s.setAges(ages);
    				s.setAddress(address);
    				// 把学生对象作为元素添加到集合中
    				array.add(s);
    				// 调用写数据方法
    				writerData(findName, array);
    				// 添加成功的提示语
    				System.out.println("添加学生信息成功!");
    				break;
    			}
    		}
    	}
    

     

    删除学生

    cb91db98b57a4719995731d928af6a1c.gif

    // 学生管理系统的删除学生的代码编写
    	public static void deleteStudent(String findName) throws Exception {
    		// 创建学生数据存储的空集合
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		// 定义标记
    		int index = -1;
    		// 定义学号变量
    		String id;
    		// 删除学生信息
    		// 数据要删除学生信息的学生学号
    		System.out.println("请您输入要删除学生信息的学生学号:");
    		id = sc.nextLine();
    		for (int i = 0; i < array.size(); i++) {
    			Student s = array.get(i);
    			// 判断是否有要删除的这个学号
    			if (s.getId().equalsIgnoreCase(id)) {
    				index = i;
    				break;
    			}
    		}
    		if (index == -1) {
    			System.out.println("您想要删除的学生信息不存在,请重新您的选择!");
    		} else {
    			array.remove(index);
    			// 调用写文件方法
    			writerData(findName, array);
    			// 提示语
    			System.out.println("删除学生信息成功!");
    
    		}
    	}

     

    修改学生

    c05799c7693c49969972ac9df8d96144.gif

    // 学生管理系统的修改学生的代码编写
    	public static void alterStudent(String findName) throws Exception {
    		// 创建存储学生数据的空集合
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		// 定义标记
    		int index = -1;
    		// 定义学生学号变量
    		String id;
    		// 输入学号判断
    		while (true) {
    			// 输入学号
    			System.out.println("请您输入想要修改学生信息的学号:");
    			id = sc.nextLine();
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    				if (s.getId().equals(id)) {
    					index = i;
    				}
    			}
    			if (index == -1) {
    				System.out.println("您想要修改的学生信息不存在,请您重新输入学号:");
    			} else {
    				// 修改姓名
    				System.out.println("请您输入学生姓名:");
    				String name = sc.nextLine();
    				// 修改年龄
    				System.out.println("请您输入学生年龄:");
    				String ages = sc.nextLine();
    				// 修改居住地址
    				System.out.println("请您输入居住地址:");
    				String address = sc.nextLine();
    				// 创建学生对象
    				Student s = new Student();
    				s.setId(id);
    				s.setName(name);
    				s.setAges(ages);
    				s.setAddress(address);
    				// 添加到集合
    				array.set(index, s);
    				// 调用写文件方法
    				writerData(findName, array);
    				// 提示语
    				System.out.println("修改学生信息成功!");
    				break;
    			}
    		}
    	}
    }

    退出系统

    4f7c90a61d32455ab30cb6797cb4f818.gif

    // 退出系统
    				System.out.println("感谢您的使用,辛苦了!");
    				System.exit(0);
    				break;

     完整源代码 

    package com.laoma_02;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    /*
     * 标准的IO版学生管理系统
     * 
     * * 分析:
     * 		1.定义学生类
     * 		2.学生管理系统主界面的代码编写
     * 		3.学生管理系统的查看所有学生的代码编写
     * 		4.学生管理系统的添加学生的代码编写
     * 		5.学生管理系统的删除学生的代码编写
     * 		6.学生管理系统的修改学生的代码编写
     *
     * */
    public class StudentManagerTest_IO {
    	public static void main(String[] args) throws Exception {
    		File f1 = new File("‪G:\\学生管理系统\\Student1.txt");
    		// 创建持久相对路劲
    		String findName = f1.getName();
    		// 学生管理系统主界面的代码编写
    		// 死循环执行程序
    		while (true) {
    			System.out.println("----------欢迎使用老马教育学生管理系统----------");
    			System.out.println("请输入你要执行的操作:");
    			System.out.println("1 查看所有学生");
    			System.out.println("2 添加学生");
    			System.out.println("3 删除学生");
    			System.out.println("4 修改学生");
    			System.out.println("5 退出系统");
    
    			// 创建键盘录入对象
    			Scanner sc = new Scanner(System.in);
    			// 输入所匹配的序号并执行操作
    			String option = sc.nextLine();
    			switch (option) {
    			case "1":
    				// 查看所有学生信息
    				findAllStudent(findName);
    				break;
    			case "2":
    				// 添加学生信息
    				addStudent(findName);
    				break;
    			case "3":
    				// 删除学生信息
    				deleteStudent(findName);
    				break;
    			case "4":
    				// 修改学生信息
    				alterStudent(findName);
    				break;
    			case "5":
    				// 退出系统
    				System.out.println("感谢您的使用,辛苦了!");
    				System.exit(0);
    				break;
    			default:
    				System.out.println("您输入的选择不存在,请您重新输入!");
    				break;
    			}
    		}
    	}
    
    	// 把文件中的数据读到集合中
    	public static void readData(String findName, ArrayList<Student> array) throws Exception {
    		// 创建输入缓冲流对象
    		BufferedReader br = new BufferedReader(new FileReader(findName));
    		// 创建数组读取文本文件数据并按照执行格式分割,然后把读取的数据作为元素存储到集合,最后遍历集合到输出控制台
    		// 定义索引
    		String line;
    		while ((line = br.readLine()) != null) {
    			// 读取文本文件数据并按照执行格式分割
    			String[] strArray = line.split(",");
    			// 创建学生对象
    			Student s = new Student();
    			s.setId(strArray[0]);
    			s.setName(strArray[1]);
    			s.setAges(strArray[2]);
    			s.setAddress(strArray[3]);
    			// 把读取的数据作为元素存储到集合
    			array.add(s);
    		}
    		// 释放资源你
    		br.close();
    	}
    
    	// 把集合中的数据写入文件中
    	public static void writerData(String findName, ArrayList<Student> array) throws Exception {
    		// 创建输出缓冲流对象
    		BufferedWriter bw = new BufferedWriter(new FileWriter(findName));
    
    		for (int i = 0; i < array.size(); i++) {
    			Student s = array.get(i);
    			StringBuilder sb = new StringBuilder();
    			sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAges()).append(",")
    					.append(s.getAddress());
    			bw.write(sb.toString());
    			bw.newLine();
    			bw.flush();
    		}
    		// 释放资源
    		bw.close();
    	}
    
    	// 学生管理系统的查看所有学生的代码编写
    	public static void findAllStudent(String findName) throws Exception {
    		// 创建集合对象存储学生数据
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 遍历集合到输出控制台
    		// 首先判断集合中是否有数据
    		if (array.size() == 0) {
    			System.out.println("不好意思,目前没有学生信息可供查询,请重新你的选择!");
    		} else {
    			System.out.println("所有学生信息如下:");
    			System.out.println("|-------|-------|-------|-------|");
    			System.out.println("|" + "学号" + "\t" + "|" + "姓名" + "\t" + "|" + "年龄" + "\t" + "|" + "地址" + "\t" + "|");
    			System.out.println("|-------|-------|-------|-------|");
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    
    				System.out.println("|" + s.getId() + "\t" + "|" + s.getName() + "\t" + "|" + s.getAges() + "\t" + "|"
    						+ s.getAddress() + "\t" + "|");
    				System.out.println("|-------|-------|-------|-------|");
    			}
    			System.out.println();
    			System.out.println();
    		}
    	}
    
    	// 学生管理系统的添加学生的代码编写
    	public static void addStudent(String findName) throws Exception {
    		// 创建存储数据的集合对象
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		String id;
    		// 判断该学号是否已被占用
    		while (true) {
    			// 定义标记
    			boolean flag = false;
    			// 添加学号
    			System.out.println("请您输入要添加的学生学号:");
    			id = sc.nextLine();
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    				if (s.getId().equals(id)) {
    					flag = true;
    					break;
    				}
    			}
    			if (flag) {
    				System.out.println("不好意思,你输入的学号已被占用,请你重新你的选择:");
    				break;
    			} else {
    				// 添加姓名
    				System.out.println("请您输入学生姓名:");
    				String name = sc.nextLine();
    				System.out.println("请您输入学生年龄:");
    				String ages = sc.nextLine();
    				System.out.println("请您输入学生居住地址:");
    				String address = sc.nextLine();
    				// 创建学生对象
    				Student s = new Student();
    				s.setId(id);
    				s.setName(name);
    				s.setAges(ages);
    				s.setAddress(address);
    				// 把学生对象作为元素添加到集合中
    				array.add(s);
    				// 调用写数据方法
    				writerData(findName, array);
    				// 添加成功的提示语
    				System.out.println("添加学生信息成功!");
    				break;
    			}
    		}
    	}
    
    	// 学生管理系统的删除学生的代码编写
    	public static void deleteStudent(String findName) throws Exception {
    		// 创建学生数据存储的空集合
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		// 定义标记
    		int index = -1;
    		// 定义学号变量
    		String id;
    		// 删除学生信息
    		// 数据要删除学生信息的学生学号
    		System.out.println("请您输入要删除学生信息的学生学号:");
    		id = sc.nextLine();
    		for (int i = 0; i < array.size(); i++) {
    			Student s = array.get(i);
    			// 判断是否有要删除的这个学号
    			if (s.getId().equalsIgnoreCase(id)) {
    				index = i;
    				break;
    			}
    		}
    		if (index == -1) {
    			System.out.println("您想要删除的学生信息不存在,请重新您的选择!");
    		} else {
    			array.remove(index);
    			// 调用写文件方法
    			writerData(findName, array);
    			// 提示语
    			System.out.println("删除学生信息成功!");
    
    		}
    	}
    
    	// 学生管理系统的修改学生的代码编写
    	public static void alterStudent(String findName) throws Exception {
    		// 创建存储学生数据的空集合
    		ArrayList<Student> array = new ArrayList<Student>();
    		// 调用读数据方法
    		readData(findName, array);
    		// 创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		// 定义标记
    		int index = -1;
    		// 定义学生学号变量
    		String id;
    		// 输入学号判断
    		while (true) {
    			// 输入学号
    			System.out.println("请您输入想要修改学生信息的学号:");
    			id = sc.nextLine();
    			for (int i = 0; i < array.size(); i++) {
    				Student s = array.get(i);
    				if (s.getId().equals(id)) {
    					index = i;
    				}
    			}
    			if (index == -1) {
    				System.out.println("您想要修改的学生信息不存在,请您重新输入学号:");
    			} else {
    				// 修改姓名
    				System.out.println("请您输入学生姓名:");
    				String name = sc.nextLine();
    				// 修改年龄
    				System.out.println("请您输入学生年龄:");
    				String ages = sc.nextLine();
    				// 修改居住地址
    				System.out.println("请您输入居住地址:");
    				String address = sc.nextLine();
    				// 创建学生对象
    				Student s = new Student();
    				s.setId(id);
    				s.setName(name);
    				s.setAges(ages);
    				s.setAddress(address);
    				// 添加到集合
    				array.set(index, s);
    				// 调用写文件方法
    				writerData(findName, array);
    				// 提示语
    				System.out.println("修改学生信息成功!");
    				break;
    			}
    		}
    	}
    }
    

    最后呢?文章到这里就结束啦,你们学废了吗?

     

    好啦!今天的练习就到这里。看吧这么努力的你又学到了很多,新的一天加油鸭!!!


    你的点赞是对我最大的鼓励。

    你的收藏是对我文章的认可。

    你的关注是对我创作的动力。

     

     

    展开全文
  • 学生管理系统

    万次阅读 多人点赞 2021-02-21 10:12:24
    学生管理系统 功能:增加、删除、保存、刷新、查询、修改、显示学生信息 模块思想,将每一个功能写成一个函数 将每个学生基本信息定义一个结构体 N为宏定义,最大学生数 struct STU { char num[100]; //学号 ...

    学生管理系统

    • 功能:增加、删除、保存、刷新、查询、修改、显示学生信息
    • 模块思想,将每一个功能写成一个函数
    • 将每个学生基本信息定义一个结构体
      N为宏定义,最大学生数
    struct STU {
        char num[100];    //学号
        char name[100];   //姓名
        char sex[10];   //性别
        int age;    //年龄
        float score[3];   //成绩*3[C语言,高数,英语]
    }stu[N];
    
    • 函数声明
    void menu();  //打印菜单
    void help();  //打印使用帮助
    void increase();  //增加学生信息
    void search();  //搜索学生信息
    void dlt();  //删除学生信息
    void save();  //保存学生信息
    void display();  //显示学生信息
    void modify();  //修改学生信息
    void flush();  //刷新学生信息
    void exit();  //退出
    
    • main函数
      在对每一个函数命名时尽量做到见名知意
      当t为真时,循环运行,t为假时,循环结束
    int main()
    {
        int number;
        while (t)
        {
            menu();
            printf("请输入菜单编号:");
            scanf("%d", &number);
            switch (number)
            {
            case 1:help(); break;    //使用帮助
            case 2:increase(); break;    //增加学生信息
            case 3:search(); break;    //查询学生信息
            case 4:dlt(); break;    //删除学生信息
            case 5:save(); break;    //保存当前信息
            case 6:display(); break;    //显示当前信息
            case 7:modify(); break;    //修改学生信息
            case 8:flush(); break;    //刷新学生信息
            case 9:exit(0); break;    //退出
            default:printf("输入有误!");
            }
        }
    }
    
    • menu函数
    void menu()    //显示菜单
    {
        printf("\n");
        printf("*****************************************************\n");
        printf("*                 学生信息管理系统                  *\n");
        printf("*****************************************************\n");
        printf("********************系统功能菜单*********************\n");
        printf("-----------------------     -------------------------\n");
        printf("*****************************************************\n");
        printf("**    1、使用帮助       *     2、增加学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    3、查询学生信息   *     4、删除学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    5、保存当前信息   *     6、显示当前信息      **\n");
        printf("*****************************************************\n");
        printf("**    7、修改学生信息   *     8、刷新学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    9、退出系统       *                          **\n");
        printf("*************************                            \n");
        printf("-----------------------     -------------------------\n");
    }
    
    • help函数
      • system(“pause”); 让系统暂停
    void help()    //使用帮助
    {
        printf("\n这是一个学生管理系统,为方便您更快了解它,请先阅读以下注意事项:\n");
        printf("\n                  注意事项:                    \n ");
        printf("\n       1、请根据提示进行操作!\n");
        printf("\n       2、初次使用请先选择增加学生信息!\n");
        printf("\n       3、修改或者增加学生信息后切记保存!\n");
        printf("\n       4、如果数据有错误,请先修改再保存!\n");
        printf("\n       5、若您之前使用过,下次进入系统请先刷新学生信息!\n");
        printf("\n       6、在添加学生时,用两个字符代表不同的性别,比如男用‘M’代替,女用‘W’代替!\n");
        printf("\n       7、保存或者刷新时,输入的文件名后缀请使用.txt,比如: stu.txt,系统会在源程序\n");
        printf("\n          “学生管理系统.exe”的相同目录建立一个.txt文件来保存学生信息,您可以查看\n");
        printf("\n          该文件,但非专业人员不要轻易改动,否则会造成刷新数据异常或刷新失败!\n");
        printf("\n       8、学生信息包括:姓名、学号、性别、年龄、C语言成绩、高数成绩、英语成绩等!\n");
        printf("\n       9、使用遇到任何问题请与我们联系,电话:12345678\n");
        printf("\n       10、最后感谢您的使用!\n");
        system("pause");    //让系统暂停
    }
    
    • increase函数(增加学生信息)
      • 定义flag,判断学生信息是否存在
      • n为已存在的学生信息数量
    void increase()    //增加学生信息
    {
        int m, flag, i = n, j;
        printf("请输入待添加的学生人数:\n");
        scanf("%d", &m);
        if (m > 0)
        {
            do
            {
                flag = 1;
                while (flag != 0)
                {
                    flag = 0;
                    printf("请输入第%d位学生的学号:\n", i + 1);
                    getchar();
                    gets(stu[i].num);
                    for (j = 0; j < i; j++)
                    {
                        if (strcmp(stu[i].num, stu[j].num) == 0)
                        {
                            printf("该学号已存在,请重新输入!\n");
                            flag = 1;
                            break;
                        }
                    }
                }
                printf("请输入第%d位学生姓名:\n", i + 1);
                gets(stu[i].name);
                printf("请输入第%d位学生性别:\n", i + 1);
                gets(stu[i].sex);
                printf("请输入第%d位学生年龄:\n", i + 1);
                scanf("%d", &stu[i].age);
                printf("请输入第%d位学生C语言成绩:\n", i + 1);
                scanf("%f", &stu[i].score[0]);
                printf("请输入第%d位学生高等数学成绩:\n", i + 1);
                scanf("%f", &stu[i].score[1]);
                printf("请输入第%d位学生大学英语成绩:\n", i + 1);
                scanf("%f", &stu[i].score[2]);
                i++;
            } while (i < m + n);
            n += m;
            printf("添加完成!");
            system("pause");
        }
    }
    
    • search函数
      • 打印时使用\t,让打印出来的格式整齐
      • 定义flag,判断学生信息是否存在
      • 由于用户操作次数不同,所以在外层套一个循环
      • case 3:return;表示在用户输入3时,退出该循环,返回主函数
    void search()    //查询学生信息
    {
        int number, flag, i;
        char s1[100];
        printf("*****************************\n");
        printf("**-------1.按学号查询------**\n");
        printf("**-------2.按姓名查询------**\n");
        printf("**-------3.退出本菜单------**\n");
        printf("*****************************\n");
        while (1)
        {
            flag = 0;
            printf("请输入要执行的操作序号:\n");
            scanf("%d", &number);
            switch (number)
            {
            case 1:
                printf("请输入需要查找学生的学号:\n");
                scanf("%s",s1);
                for (i = 0; i < n; i++)
                {
                    if (strcmp(stu[i].num, s1) == 0)
                    {
                        flag = 1;
                        printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
                        printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
                    }
                }break;
            case 2:
                printf("请输入需要查找学生的姓名:\n");
                scanf("%s",s1);
                for (i = 0; i < n; i++)
                {
                    if (strcmp(stu[i].name, s1) == 0)
                    {
                        flag = 1;
                        printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
                        printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
                    }
                }break;
            case 3:return;
            default:printf("请在1--3之间输入!\n");
            }
            if (flag == 0)
                printf("找不到该学生,请重新输入!\n");
        }
    }
    
    • dlt函数(删除学生信息)
      • 删除后,将n–,表示,学生总数减一
      • 定义flag,判断是否找到对应的学生信息
    void dlt()   //删除信息
    {
        int flag, i, j;
        char s1[100];
        printf("请输入要删除学生的学号:\n");
        getchar();
        gets(s1);
        flag = 0;
        for (i = 0; i < n; i++)
        {
            if (strcmp(stu[i].num, s1) == 0)
            {
                flag = 1;
                for (j = i; j < n - 1; j++)
                {
                    stu[j] = stu[j + 1];
                }
            }
            if (flag == 1) break;
        }
        if (flag == 0) printf("未找到该学生!\n");
        if (flag == 1)
        {
            printf("删除成功!\n");
            n--;
        }
        system("pause");
    }
    
    • save函数(保存学生信息)
    void save()    //保存学生信息
    {
        FILE* fp;
        char filename[100];
        int i;
        printf("请输入要保存的文件名:\n");
        scanf("%s", filename);
        if ((fp = fopen(filename, "w")) == NULL)
        {
            printf("打开文件失败!\n");
            exit(0);
        }
        for (i = 0; i < n; i++)
        {
            if (fwrite(&stu[i], sizeof(struct STU), 1, fp) != 1)
                printf("保存失败!\n");
        }
        printf("保存成功!\n");
        fclose(fp);
        system("pause");
    }
    
    • display函数(显示当前信息)
      • n为目前学生总数
    void display()    //显示当前信息
    {
        int i;
        if (n == 0)
            printf("您好,现在暂无学生信息,请先添加学生信息!\n");
        else
        {
            printf("现在共有%d名学生\n", n);
            printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
            for (i = 0; i < n; i++)
            {
                printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
            }
        }
        system("pause");
    }
    
    • modify函数(修改学生信息)
      • 定义flag,判断需要修改的学生信息是否存在
    void modify()    //修改学生信息
    {
        int flag, age, num, i;
        char number[100], sex[10];
        float score1, score2, score3;
        char s1[100];
        printf("请输入需要修改的学生姓名:\n");
        getchar();
        gets(s1);
        while (1)
        {
            flag = 0;
            for (i = 0; i < n; i++)
            {
                if (strcmp(s1, stu[i].name) == 0)
                {
                    flag = 1;
                    printf("***************************************************\n");
                    printf("*----1.修改学号--------  -  -----2.修改性别-------*\n");
                    printf("*----3.修改年龄--------  -  -----4.修改C语言成绩--*\n");
                    printf("*----5.修改高数成绩----  -  -----6.修改英语成绩---*\n");
                    printf("*-------------------7.退出本菜单------------------*\n");
                    printf("***************************************************\n\n");
                    printf("请输入菜单编号:\n");
                    scanf("%d", &num);
                    switch (num)
                    {
                    case 1:
                        printf("请输入新学号:\n");
                        getchar();
                        gets(number);
                        strcpy(stu[i].num, number);
                        break;
                    case 2:
                        printf("请输入性别:\n");
                        getchar();
                        gets(sex);
                        strcpy(stu[i].sex, sex);
                        break;
                    case 3:
                        printf("请输入年龄:\n");
                        scanf("%d", &age);
                        stu[i].age = age;
                        break;
                    case 4:
                        printf("请输入C语言成绩:\n");
                        scanf("%f", &score1);
                        stu[i].score[0] = score1;
                        break;
                    case 5:
                        printf("请输入高数成绩:\n");
                        scanf("%f", &score2);
                        stu[i].score[1] = score2;
                        break;
                    case 6:
                        printf("请输入英语成绩:\n");
                        scanf("%f", &score3);
                        stu[i].score[2] = score3;
                        break;
                    case 7:return;
                    default:printf("请输入1--7之间的数字!\n");
                    }
                    if (num > 0 && num < 8)
                        printf("修改成功!\n");
                    break;
                }
            }
            if (flag == 0)
            {
                printf("未找到该学生,请重新输入学生姓名:\n");
                gets(s1);
            }
        }
        system("pause");
    }
    
    • flush函数(刷新学生信息)
      • fread(&stu[i], sizeof(struct STU), 1, fp) == 1表示函数成功执行,刷新成功
    void flush()    //刷新学生信息
    {
        FILE* fp;
        char filename[100];
        int i, k = 0;
        printf("请输入需要刷新的文件名:\n");
        getchar();
        gets(filename);
        if ((fp = fopen(filename, "r")) == NULL)
        {
            printf("打开文件失败!\n");
            exit(0);
        }
        for (i = 0; i < N; i++)
        {
            if (fread(&stu[i], sizeof(struct STU), 1, fp) == 1)
            {
                k++;
            }
        }
        n = k;
        if (k == 0) printf("刷新失败!\n");
        else printf("刷新成功!\n");
        fclose(fp);
        system("pause");
    }
    

    完整代码如下

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define N 50
    void menu();
    void help();
    void increase();
    void search();
    void dlt();
    void save();
    void display();
    void modify();
    void flush();
    void exit();
    int n = 0, t = 1;    //n为总人数,t控制循环
    struct STU {
        char num[100];    //学号
        char name[100];   //姓名
        char sex[10];   //性别
        int age;    //年龄
        float score[3];   //成绩*3
    }stu[N];
    int main()
    {
        int number;
        while (t)
        {
            menu();
            printf("请输入菜单编号:");
            scanf("%d", &number);
            switch (number)
            {
            case 1:help(); break;    //使用帮助
            case 2:increase(); break;    //增加学生信息
            case 3:search(); break;    //查询学生信息
            case 4:dlt(); break;    //删除学生信息
            case 5:save(); break;    //保存当前信息
            case 6:display(); break;    //显示当前信息
            case 7:modify(); break;    //修改学生信息
            case 8:flush(); break;    //刷新学生信息
            case 9:exit(0); break;    //退出
            default:printf("输入有误!");
            }
        }
    }
    void menu()    //显示菜单
    {
        printf("\n");
        printf("*****************************************************\n");
        printf("*                 学生信息管理系统                  *\n");
        printf("*****************************************************\n");
        printf("********************系统功能菜单*********************\n");
        printf("-----------------------     -------------------------\n");
        printf("*****************************************************\n");
        printf("**    1、使用帮助       *     2、增加学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    3、查询学生信息   *     4、删除学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    5、保存当前信息   *     6、显示当前信息      **\n");
        printf("*****************************************************\n");
        printf("**    7、修改学生信息   *     8、刷新学生信息      **\n");
        printf("*****************************************************\n");
        printf("**    9、退出系统       *                          **\n");
        printf("*************************                            \n");
        printf("-----------------------     -------------------------\n");
    
    }
    void help()    //使用帮助
    {
        printf("\n这是一个学生管理系统,为方便您更快了解它,请先阅读以下注意事项:\n");
        printf("\n                  注意事项:                    \n ");
        printf("\n       1、请根据提示进行操作!\n");
        printf("\n       2、初次使用请先选择增加学生信息!\n");
        printf("\n       3、修改或者增加学生信息后切记保存!\n");
        printf("\n       4、如果数据有错误,请先修改再保存!\n");
        printf("\n       5、若您之前使用过,下次进入系统请先刷新学生信息!\n");
        printf("\n       6、在添加学生时,用两个字符代表不同的性别,比如男用‘M’代替,女用‘W’代替!\n");
        printf("\n       7、保存或者刷新时,输入的文件名后缀请使用.txt,比如: stu.txt,系统会在源程序\n");
        printf("\n          “学生管理系统.exe”的相同目录建立一个.txt文件来保存学生信息,您可以查看\n");
        printf("\n          该文件,但非专业人员不要轻易改动,否则会造成刷新数据异常或刷新失败!\n");
        printf("\n       8、学生信息包括:姓名、学号、性别、年龄、C语言成绩、高数成绩、英语成绩等!\n");
        printf("\n       9、使用遇到任何问题请与我们联系,电话:12345678\n");
        printf("\n       10、最后感谢您的使用!\n");
        system("pause");    //让系统暂停
    }
    void increase()    //增加学生信息
    {
        int m, flag, i = n, j;
        printf("请输入待添加的学生人数:\n");
        scanf("%d", &m);
        if (m > 0)
        {
            do
            {
                flag = 1;
                while (flag != 0)
                {
                    flag = 0;
                    printf("请输入第%d位学生的学号:\n", i + 1);
                    getchar();
                    gets(stu[i].num);
                    for (j = 0; j < i; j++)
                    {
                        if (strcmp(stu[i].num, stu[j].num) == 0)
                        {
                            printf("该学号已存在,请重新输入!\n");
                            flag = 1;
                            break;
                        }
                    }
                }
                printf("请输入第%d位学生姓名:\n", i + 1);
                gets(stu[i].name);
                printf("请输入第%d位学生性别:\n", i + 1);
                gets(stu[i].sex);
                printf("请输入第%d位学生年龄:\n", i + 1);
                scanf("%d", &stu[i].age);
                printf("请输入第%d位学生C语言成绩:\n", i + 1);
                scanf("%f", &stu[i].score[0]);
                printf("请输入第%d位学生高等数学成绩:\n", i + 1);
                scanf("%f", &stu[i].score[1]);
                printf("请输入第%d位学生大学英语成绩:\n", i + 1);
                scanf("%f", &stu[i].score[2]);
                i++;
            } while (i < m + n);
            n += m;
            printf("添加完成!");
            system("pause");
        }
    }
    void search()    //查询学生信息
    {
        int number, flag, i;
        char s1[100];
        printf("*****************************\n");
        printf("**-------1.按学号查询------**\n");
        printf("**-------2.按姓名查询------**\n");
        printf("**-------3.退出本菜单------**\n");
        printf("*****************************\n");
        while (1)
        {
            flag = 0;
            printf("请输入要执行的操作序号:\n");
            scanf("%d", &number);
            switch (number)
            {
            case 1:
                printf("请输入需要查找学生的学号:\n");
                scanf("%s",s1);
                for (i = 0; i < n; i++)
                {
                    if (strcmp(stu[i].num, s1) == 0)
                    {
                        flag = 1;
                        printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
                        printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
                    }
                }break;
            case 2:
                printf("请输入需要查找学生的姓名:\n");
                scanf("%s", s1);
                for (i = 0; i < n; i++)
                {
                    if (strcmp(stu[i].name, s1) == 0)
                    {
                        flag = 1;
                        printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
                        printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
                    }
                }break;
            case 3:return;
            default:printf("请在1--3之间输入!\n");
            }
            if (flag == 0)
                printf("找不到该学生,请重新输入!\n");
        }
    }
    void dlt()   //删除信息
    {
        int flag, i, j;
        char s1[100];
        printf("请输入要删除学生的学号:\n");
        getchar();
        gets(s1);
        flag = 0;
        for (i = 0; i < n; i++)
        {
            if (strcmp(stu[i].num, s1) == 0)
            {
                flag = 1;
                for (j = i; j < n - 1; j++)
                {
                    stu[j] = stu[j + 1];
                }
            }
            if (flag == 1) break;
        }
        if (flag == 0) printf("未找到该学生!\n");
        if (flag == 1)
        {
            printf("删除成功!\n");
            n--;
        }
        system("pause");
    }
    void save()    //保存学生信息
    {
        FILE* fp;
        char filename[100];
        int i;
        printf("请输入要保存的文件名:\n");
        scanf("%s", filename);
        if ((fp = fopen(filename, "w")) == NULL)
        {
            printf("打开文件失败!\n");
            exit(0);
        }
        for (i = 0; i < n; i++)
        {
            if (fwrite(&stu[i], sizeof(struct STU), 1, fp) != 1)
                printf("保存失败!\n");
        }
        printf("保存成功!\n");
        fclose(fp);
        system("pause");
    }
    void display()    //显示当前信息
    {
        int i;
        if (n == 0)
            printf("您好,现在暂无学生信息,请先添加学生信息!\n");
        else
        {
            printf("现在共有%d名学生\n", n);
            printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
            for (i = 0; i < n; i++)
            {
                printf("%s\t\t%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
            }
        }
        system("pause");
    }
    void modify()    //修改学生信息
    {
        int flag, age, num, i;
        char number[100], sex[10];
        float score1, score2, score3;
        char s1[100];
        printf("请输入需要修改的学生姓名:\n");
        getchar();
        gets(s1);
        while (1)
        {
            flag = 0;
            for (i = 0; i < n; i++)
            {
                if (strcmp(s1, stu[i].name) == 0)
                {
                    flag = 1;
                    printf("***************************************************\n");
                    printf("*----1.修改学号--------  -  -----2.修改性别-------*\n");
                    printf("*----3.修改年龄--------  -  -----4.修改C语言成绩--*\n");
                    printf("*----5.修改高数成绩----  -  -----6.修改英语成绩---*\n");
                    printf("*-------------------7.退出本菜单------------------*\n");
                    printf("***************************************************\n\n");
                    printf("请输入菜单编号:\n");
                    scanf("%d", &num);
                    switch (num)
                    {
                    case 1:
                        printf("请输入新学号:\n");
                        getchar();
                        gets(number);
                        strcpy(stu[i].num, number);
                        break;
                    case 2:
                        printf("请输入性别:\n");
                        getchar();
                        gets(sex);
                        strcpy(stu[i].sex, sex);
                        break;
                    case 3:
                        printf("请输入年龄:\n");
                        scanf("%d", &age);
                        stu[i].age = age;
                        break;
                    case 4:
                        printf("请输入C语言成绩:\n");
                        scanf("%f", &score1);
                        stu[i].score[0] = score1;
                        break;
                    case 5:
                        printf("请输入高数成绩:\n");
                        scanf("%f", &score2);
                        stu[i].score[1] = score2;
                        break;
                    case 6:
                        printf("请输入英语成绩:\n");
                        scanf("%f", &score3);
                        stu[i].score[2] = score3;
                        break;
                    case 7:return;
                    default:printf("请输入1--7之间的数字!\n");
                    }
                    if (num > 0 && num < 8)
                        printf("修改成功!\n");
                    break;
                }
            }
            if (flag == 0)
            {
                printf("未找到该学生,请重新输入学生姓名:\n");
                gets(s1);
            }
        }
        system("pause");
    }
    void flush()    //刷新学生信息
    {
        FILE* fp;
        char filename[100];
        int i, k = 0;
        printf("请输入需要刷新的文件名:\n");
        getchar();
        gets(filename);
        if ((fp = fopen(filename, "r")) == NULL)
        {
            printf("打开文件失败!\n");
            exit(0);
        }
        for (i = 0; i < N; i++)
        {
            if (fread(&stu[i], sizeof(struct STU), 1, fp) == 1)
            {
                k++;
            }
        }
        n = k;
        if (k == 0) printf("刷新失败!\n");
        else printf("刷新成功!\n");
        fclose(fp);
        system("pause");
    }
    
    展开全文
  • 使用Python编程语言 Django MySQL数据库开发的web版学生管理系统,里面附带环境搭建的详细过程和开发过程中遇到的一些bug的讲解
  • 学生管理系统Element UI版

    万次阅读 多人点赞 2022-03-16 10:05:37
    学生管理系统Element UI版 前后端分离 增删改查一套 免费获取

    • 💂 个人主页: 陶然同学
    • 🤟 版权: 本文由【陶然同学】原创、在CSDN首发、需要转载请联系博主
    • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
    • 💅 想寻找共同成长的小伙伴,请点击【Java全栈开发社区

    搭建环境

    • 创建vue项目:vue create day16_element_student

    • 安装第三方组件:axios、element

    npm install axios

    vue add elment

    SQL

    tb_class:

    CREATE TABLE `tb_class` (
      `c_id` varchar(32) NOT NULL COMMENT '班级ID',
      `c_name` varchar(50) DEFAULT NULL COMMENT '班级名称',
      `desc` varchar(200) DEFAULT NULL COMMENT '班级描述',
      PRIMARY KEY (`c_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    insert  into `tb_class`(`c_id`,`c_name`,`desc`) values ('c001','Java12班','花儿222'),('c002','Java34班','艺术223'),('c003','虚拟的班级','111'),('c004','222','22');
    

    tb_student:

    CREATE TABLE `tb_student` (
      `s_id` varchar(32) NOT NULL COMMENT '学生ID',
      `sname` varchar(50) DEFAULT NULL COMMENT '姓名',
      `age` int(11) DEFAULT NULL COMMENT '年龄',
      `birthday` datetime DEFAULT NULL COMMENT '生日',
      `gender` char(1) DEFAULT NULL COMMENT '性别',
      `c_id` varchar(32) DEFAULT NULL,
      PRIMARY KEY (`s_id`),
      KEY `c_id` (`c_id`),
      CONSTRAINT `tb_student_ibfk_1` FOREIGN KEY (`c_id`) REFERENCES `tb_class` (`c_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    
    insert  into `tb_student`(`s_id`,`sname`,`age`,`birthday`,`gender`,`c_id`) values ('s001','赵三',19,'2001-01-17 00:00:00','1','c001'),('s002','刘悦11',60,'1998-10-08 00:00:00','0','c002'),('s003','孙五',18,'2002-03-15 00:00:00','1','c001'),('s004','李三',19,'2001-04-14 00:00:00','0','c002'),('s005','梁桐',35,'2001-02-02 00:00:00','1','c002'),('s006','刘悦22',60,'2022-02-07 00:00:00','0','c002'),('s21','小红',20,'2022-03-20 00:00:00','0','c002');
    
    

    tb_user:

    DROP TABLE IF EXISTS `tb_user`;
    
    CREATE TABLE `tb_user` (
      `u_id` varchar(32) NOT NULL COMMENT '用户编号',
      `user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
      `password` varchar(32) DEFAULT NULL COMMENT '密码',
      `gender` bit(1) DEFAULT NULL COMMENT '性别,1表示男,0表示女',
      PRIMARY KEY (`u_id`),
      UNIQUE KEY `user_name` (`user_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
    insert  into `tb_user`(`u_id`,`user_name`,`password`,`gender`) values ('1','jack','1234',''),('10','jack5','1234',''),('2','rose','1234','\0'),('3','张三','1234',''),('4','tom','1234',''),('5','jack2','1234',''),('6','jack1','1234',''),('7','jack3','1234',''),('8','jack4','1234',''),('cd0d2523b5024589af142787de8a7b2a','jack6','1234','');
    

    后端

    链接:https://pan.baidu.com/s/1FAb2WUSUwpRuwIB9Spy3oQ 
    提取码:1234

    关键代码

    ClassesController:

    package com.czxy.controller;
    
    import com.czxy.domain.Classes;
    import com.czxy.service.ClassesService;
    import com.czxy.vo.BaseResult;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * @Author 刘嘉俊
     * @Date 2022/2/21
     */
    @RestController
    @RequestMapping("/classes")
    @CrossOrigin
    public class ClassesController {
    
        @Resource
        private ClassesService classesService;
    
        @GetMapping
        public BaseResult<List<Classes>> list(){
            List<Classes> list = classesService.selectAll();
            return BaseResult.ok("查询成功",list);
        }
    
        @PostMapping
        public BaseResult add(@RequestBody Classes classes){
            boolean result = classesService.add(classes);
    
            if(result){
                return BaseResult.ok("添加成功");
            }
    
            return BaseResult.error("添加失败");
        }
    
        @GetMapping("/{cid}")
        public BaseResult<Classes> selectById(@PathVariable("cid") String cid){
            Classes classes = classesService.selectById(cid);
    
            return BaseResult.ok("查询详情成功",classes);
        }
    
        @PutMapping
        public BaseResult update(@RequestBody Classes classes){
            try {
                boolean result = classesService.update(classes);
    
                if(result){
                    return BaseResult.ok("查询成功");
                }
                return BaseResult.error("更新失败");
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    
        @DeleteMapping("/{classesId}")
        public BaseResult delete(@PathVariable("classesId") String classesId){
            boolean result = classesService.deleteById(classesId);
    
            if(result){
                return BaseResult.ok("删除成功");
            }
            return BaseResult.error("删除失败");
        }
    }
    

    StudentController:

    package com.czxy.controller;
    
    import com.czxy.domain.Student;
    import com.czxy.service.StudentService;
    import com.czxy.vo.BaseResult;
    import com.czxy.vo.StudentVo;
    import com.github.pagehelper.PageInfo;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * @Author 刘嘉俊
     * @Date 2022/2/21
     */
    @RestController
    @RequestMapping("/student")
    @CrossOrigin
    public class StudentController {
    
        @Resource
        private StudentService studentService;
    
        @PostMapping("/condition/{pageSize}/{pageNum}")
        public BaseResult condition(
                @PathVariable("pageSize") Integer pageSize,
                @PathVariable("pageNum") Integer pageNum,
                @RequestBody StudentVo studentVo) {
    
            // 查询
            PageInfo<Student> pageInfo = studentService.condition(pageSize,pageNum,studentVo);
    
            // 返回结果
            return BaseResult.ok("查询成功", pageInfo);
        }
    
        @GetMapping("/{sid}")
        public BaseResult selectById(@PathVariable("sid") String sid){
            Student student = studentService.selectById(sid);
    
            return BaseResult.ok("查询成功",student);
        }
    
        @PutMapping
        public BaseResult update(@RequestBody Student student){
            System.out.println(student);
            try {
                boolean result = studentService.update(student);
                if(result){
                    return BaseResult.ok("更新成功");
                }else{
                    return BaseResult.error("更新失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    
        @DeleteMapping("/{sid}")
        public BaseResult delete(@PathVariable("sid")String sid){
            System.out.println("sid" + sid);
            try {
                boolean result = studentService.delete(sid);
                if(result){
                    return BaseResult.ok("删除成功");
                }
                return BaseResult.error("删除失败");
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    
        @PostMapping
        public BaseResult addStudent(@RequestBody Student student){
            try {
                boolean result = studentService.addStudent(student);
                if(result){
                    return BaseResult.ok("添加成功");
                }
                return BaseResult.error("添加失败");
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    
        @PostMapping("/save")
        public BaseResult save(@RequestBody Student student){
            try {
                boolean result = studentService.saveOrUpdate(student);
                if(result){
                    return BaseResult.ok("编辑 | 添加 成功");
                }else{
                    return BaseResult.error("编辑 | 添加 失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    
        @PostMapping("/batchDelete")
        public BaseResult deleteIds(@RequestBody List<String> ids){
            try {
                studentService.deleteIds(ids);
    
                return BaseResult.ok("删除成功");
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResult.error(e.getMessage());
            }
        }
    }
    

    UserController:

    package com.czxy.controller;
    
    import com.czxy.domain.User;
    import com.czxy.service.UserService;
    import com.czxy.vo.BaseResult;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    
    /**
     * @Author 刘嘉俊
     * @Date 2022/3/16
     */
    
    @RestController
    @RequestMapping("/user")
    @CrossOrigin
    public class UserController {
    
        @Resource
        private UserService userService;
    
        @PostMapping("/login")
        public BaseResult login(@RequestBody User user){
            User loginUser = userService.login(user);
    
            if(loginUser != null){
                return BaseResult.ok("登录成功",loginUser);
            }else{
                return BaseResult.error("用户名或密码不匹配");
            }
        }
    
        @PostMapping("/check")
        public BaseResult check(@RequestBody User user){
            User findUser = userService.findByUsername(user.getUsername());
    
            if(findUser == null){
                return BaseResult.ok("用户名可用");
            }else{
                return BaseResult.error("用户名已存在");
            }
        }
    }
    

    查询所有前端

    显示页面

     创建页面

     配置路由

    const routes = [
      {
        path: '/studentList',
        name: '学生列表',
        component: () => import('../views/StudentList.vue')
      }
    ]

    访问路径

    http://localhost:8080/studentList

    ajax操作

    <template>
      <div>
        {{studentPage}}
      </div>
    </template>
    
    <script>
    // 导入axios
    import axios from 'axios'
    export default {
      data() {
        return {
          studentVo: {    //条件查询
    
          },
          studentPage: {    //分页数据
            pageNum: 1,
            pageSize: 3
          }
        }
      },
      methods: {
        async condition() {
          // ajax查询
          var url = `http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`
          let {data:baseResult} = await axios.post(url, this.studentVo)
          // 保存结果
          this.studentPage = baseResult.data
        }
      },
      mounted() {
        // 查询
        this.condition()
      },
    }
    </script>
    
    <style>
    
    </style>

    整合element ui

    <template>
      <div>
        <!-- 表单start -->
        <el-form :inline="true" :model="studentVo" size="mini" >
          <el-form-item label="班级">
            <el-select v-model="studentVo.cid" placeholder="请选择班级" clearable>
              <el-option label="Java12班" value="c001"></el-option>
              <el-option label="Java56班" value="c003"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="姓名">
            <el-input v-model="studentVo.sname" placeholder="请输入姓名" clearable></el-input>
          </el-form-item>
          <el-form-item label="年龄">
            <el-col :span="11">
              <el-input v-model="studentVo.startAge" placeholder="请输入开始年龄" clearable></el-input>
            </el-col>
            <el-col class="line" :span="2">-</el-col>
            <el-col :span="11">
              <el-input v-model="studentVo.endAge" placeholder="请输入结束年龄" clearable></el-input>
            </el-col>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="condition(1)">查询</el-button>
          </el-form-item>
        </el-form>
        <!-- 表单end -->
        <!-- 表格start -->
        <el-table
          :data="studentPage.list"
          @selection-change="handleSelectionChange"
          style="width: 100%">
          <el-table-column
            type="selection"
            width="55">
          </el-table-column>
          <el-table-column
            prop="sid"
            label="编号"
            width="180">
          </el-table-column>
          <el-table-column
            prop="sname"
            label="姓名"
            width="180">
          </el-table-column>
          <el-table-column
            prop="cid"
            label="班级"
            width="180">
          </el-table-column>
          <el-table-column
            prop="age"
            label="年龄"
            width="180">
          </el-table-column>
          <el-table-column
            prop="birthday"
            label="生日"
            width="180">
          </el-table-column>
          <el-table-column
            prop="gender"
            label="性别"
            width="180">
            <template slot-scope="scope">
              {{scope.row.gender == 1 ? "男" : "女"}}
            </template>
          </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button size="mini">编辑</el-button>
              <el-button size="mini" type="danger">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!-- 表格end -->
        <!-- 分页条start -->
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="studentPage.pageNum"
          :page-sizes="[1, 2, 3, 5, 10]"
          :page-size="studentPage.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="studentPage.total">
        </el-pagination>
        <!-- 分页条end -->
      </div>
    </template>
    
    <script>
    // 导入axios
    import axios from 'axios'
    export default {
      data() {
        return {
          studentVo: {    //条件查询
    
          },
          studentPage: {    //分页数据
            pageNum: 1,
            pageSize: 3
          }
        }
      },
      methods: {
        async condition(num) {
          if(num) {
            this.studentPage.pageNum = num
          }
          // ajax查询
          var url = `http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`
          let {data:baseResult} = await axios.post(url, this.studentVo)
          // 保存结果
          this.studentPage = baseResult.data
        },
        handleSelectionChange(val) {
          console.info('批量删除')
        },
        handleSizeChange(val) {
          console.log(`每页 ${val} 条`);
          this.studentPage.pageSize = val
          this.studentPage.pageNum = 1
          // 重新开始
          this.condition()
        },
        handleCurrentChange(val) {
          console.log(`当前页: ${val}`);
          this.studentPage.pageNum = val
          // 重新开始
          this.condition()
        }
      },
      mounted() {
        // 查询
        this.condition()
      },
    }
    </script>
    
    <style>
    
    </style>

    导航(嵌套路由)

    • 步骤1:创建页面

      • 创建登录页面(模板页面)

      • 编写首页Home(上中下布局),编写导航(首页、班级管理/班级列表、学生管理/学生列表)

      • 创建页面:ClassesList.vue

    • 步骤2:配置路由

    • 步骤3:编写布局容器和导航

    步骤1:创建页面

    • 创建登录页面(模板页面)

    • 编写首页Home(上中下布局),编写导航(首页、班级管理/班级列表、学生管理/学生列表)

    • 创建页面:ClassesList.vue

     步骤2:配置路由

    const routes = [
      {
        path: '/',
        redirect: '/home'    //重定向
      },
      {
        path: '/login',
        name: '登录',
        component: () => import('../views/Login.vue')
      },
      {
        path: '/home',
        name: '首页',
        component: () => import('../views/Home.vue'),
        children: [
          {
            path: '/studentList',
            name: '学生列表',
            component: () => import('../views/StudentList.vue')
          },
          {
            path: '/classesList',
            name: '班级列表',
            component: () => import('../views/ClassesList.vue')
          }
        ]
      },
      
    ]

    步骤3:编写布局容器和导航

    • 修改main.js,配置css加载顺序(配置重置样式)

    • 修改App.vue,配置样式,上下自动填充

     

    编写Home页面,完成导航和二级路由显示

    <template>
      <el-container>
        <el-header class="home-header">
          <!-- 导航start -->
          <el-menu
            :default-active="$route.path"
            router
            class="el-menu-demo"
            mode="horizontal"
            background-color="#545c64"
            text-color="#fff"
            active-text-color="#ffd04b">
            <el-menu-item index="/home">首页</el-menu-item>
            <el-submenu index="/classes">
              <template slot="title">班级管理</template>
              <el-menu-item index="/classesList">班级列表</el-menu-item>
            </el-submenu>
            <el-submenu index="/student">
              <template slot="title">学生管理</template>
              <el-menu-item index="/studentList">学生列表</el-menu-item>
            </el-submenu>
          </el-menu>
          <!-- 导航end -->
        </el-header>
        <el-main>
          <!-- 二级路由 -->
          <router-view></router-view>
        </el-main>
        <el-footer>学生管理系统Element UI 版</el-footer>
      </el-container>
    </template>
    
    <script>
    export default {
    
    }
    </script>
    
    <style>
      .el-container {
        height: 100%;
      }
      .home-header {
        padding: 0;
      }
      .el-header, .el-footer {
        background-color: #B3C0D1;
        color: #333;
        text-align: center;
        line-height: 60px;
      }
    </style>

    编辑学生(弹出框)

    分析

    • 页面布局:

      • 添加一个“添加”按钮,点击可以显示弹出层

      • 拷贝添加的弹出框Dialog,且要求表单(班级列表、id、名称、年龄、生日、性别)

    • 提供student变量,用于表单数据的绑定

    • ajax操作

      • 查询班级列表

      • 添加按钮绑定事件,进行ajax提交(成功:刷新列表关闭弹出框,失败:错误提示,但不关闭弹出框)

    页面布局

    页面布局:

    添加一个“添加”按钮,点击可以显示弹出层

    拷贝添加的弹出框Dialog,且要求表单(班级列表、id、名称、年龄、生日、性别)

     <!-- 添加的弹出框start -->
        <el-dialog title="添加学生" :visible.sync="addStudentDialogVisible">
          <el-form :model="student" label-width="80px">
            <el-form-item label="班级列表" >
              <el-select v-model="student.cid" placeholder="请选择班级">
                <el-option label="区域一" value="shanghai"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="id" >
              <el-input v-model="student.sid"></el-input>
            </el-form-item>
            <el-form-item label="名称" >
              <el-input v-model="student.sname"></el-input>
            </el-form-item>
            <el-form-item label="生日" >
              <el-date-picker type="date" placeholder="选择生日" v-model="student.birthday" style="width: 100%;"></el-date-picker>
            </el-form-item>
            <el-form-item label="年龄" >
              <el-input v-model="student.age"></el-input>
            </el-form-item>
            <el-form-item label="性别" >
              <el-radio-group v-model="student.gender">
                <el-radio label="1">男</el-radio>
                <el-radio label="0">女</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="addStudentDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="addStudentDialogVisible = false">确 定</el-button>
          </div>
        </el-dialog>
        <!-- 添加的弹出框end -->

    提供student变量,用于表单数据的绑定

    添加:ajax操作

    查询班级列表

    添加按钮绑定事件,进行ajax提交(成功:刷新列表关闭弹出框,失败:错误提示,但不关闭弹出框)

    <template>
      <div>
        <!-- 表单start -->
        <el-form :inline="true" :model="studentVo" size="mini" >
          <el-form-item label="班级">
            <el-select v-model="studentVo.cid" placeholder="请选择班级" clearable>
              <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="姓名">
            <el-input v-model="studentVo.sname" placeholder="请输入姓名" clearable></el-input>
          </el-form-item>
          <el-form-item label="年龄">
            <el-col :span="11">
              <el-input v-model="studentVo.startAge" placeholder="请输入开始年龄" clearable></el-input>
            </el-col>
            <el-col class="line" :span="2">-</el-col>
            <el-col :span="11">
              <el-input v-model="studentVo.endAge" placeholder="请输入结束年龄" clearable></el-input>
            </el-col>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="condition(1)">查询</el-button>
          </el-form-item>
        </el-form>
        <!-- 表单end -->
        <el-button type="primary" @click="openAddDialog" >添加</el-button>
        <!-- 添加的弹出框start -->
        <el-dialog title="添加学生" :visible.sync="addStudentDialogVisible">
          <el-form :model="student" label-width="80px">
            <el-form-item label="班级列表" >
              <el-select v-model="student.cid" placeholder="请选择班级">
                <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="id" >
              <el-input v-model="student.sid"></el-input>
            </el-form-item>
            <el-form-item label="名称" >
              <el-input v-model="student.sname"></el-input>
            </el-form-item>
            <el-form-item label="生日" >
              <el-date-picker type="date" placeholder="选择生日" v-model="student.birthday" style="width: 100%;"></el-date-picker>
            </el-form-item>
            <el-form-item label="年龄" >
              <el-input v-model="student.age"></el-input>
            </el-form-item>
            <el-form-item label="性别" >
              <el-radio-group v-model="student.gender">
                <el-radio label="1">男</el-radio>
                <el-radio label="0">女</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="addStudentDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="addStudent">确 定</el-button>
          </div>
        </el-dialog>
        <!-- 添加的弹出框end -->
        <!-- 表格start -->
        <el-table
          :data="studentPage.list"
          @selection-change="handleSelectionChange"
          style="width: 100%">
          <el-table-column
            type="selection"
            width="55">
          </el-table-column>
          <el-table-column
            prop="sid"
            label="编号"
            width="180">
          </el-table-column>
          <el-table-column
            prop="sname"
            label="姓名"
            width="180">
          </el-table-column>
          <el-table-column
            prop="cid"
            label="班级"
            width="180">
          </el-table-column>
          <el-table-column
            prop="age"
            label="年龄"
            width="180">
          </el-table-column>
          <el-table-column
            prop="birthday"
            label="生日"
            width="180">
          </el-table-column>
          <el-table-column
            prop="gender"
            label="性别"
            width="180">
            <template slot-scope="scope">
              {{scope.row.gender == 1 ? "男" : "女"}}
            </template>
          </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button size="mini">编辑</el-button>
              <el-button size="mini" type="danger">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!-- 表格end -->
        <!-- 分页条start -->
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="studentPage.pageNum"
          :page-sizes="[1, 2, 3, 5, 10]"
          :page-size="studentPage.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="studentPage.total">
        </el-pagination>
        <!-- 分页条end -->
      </div>
    </template>
    
    <script>
    // 导入axios
    import axios from 'axios'
    export default {
      data() {
        return {
          studentVo: {    //条件查询
    
          },
          studentPage: {    //分页数据
            pageNum: 1,
            pageSize: 3
          },
          addStudentDialogVisible: false,     //添加弹出框的控制变量
          student: {        //添加表单对象
    
          },
          classesList: [],  // 所有班级
        }
      },
      methods: {
        async condition(num) {
          if(num) {
            this.studentPage.pageNum = num
          }
          // ajax查询
          var url = `http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`
          let {data:baseResult} = await axios.post(url, this.studentVo)
          // 保存结果
          this.studentPage = baseResult.data
        },
        handleSelectionChange(val) {
          console.info('批量删除')
        },
        handleSizeChange(val) {
          console.log(`每页 ${val} 条`);
          this.studentPage.pageSize = val
          this.studentPage.pageNum = 1
          // 重新开始
          this.condition()
        },
        handleCurrentChange(val) {
          console.log(`当前页: ${val}`);
          this.studentPage.pageNum = val
          // 重新开始
          this.condition()
        },
        async selectAllClasses() {
          // ajax 查询所有的班级
          var url = `http://localhost:8888/classes`
          let { data: baseResult } = await axios.get(url)
          // 保存结果
          this.classesList = baseResult.data
        },
        openAddDialog() {
          // 打开弹出框
          this.addStudentDialogVisible = true
          // 清空表单数据
          this.student = {}
          // 查询班级列表
          this.selectAllClasses()
        },
        async addStudent() {
          // 添加学生ajax
          var url = `http://localhost:8888/student/saveOrUpdate`
          let { data: baseResult } = await axios.post(url, this.student)
          // 处理结果
          if(baseResult.code == 20000) {
            // 成功:刷新页面,成功提示,关闭弹出框
            this.condition()
            this.$message.success(baseResult.message)
            this.addStudentDialogVisible = false
          } else {
            // 失败:失败提示
            this.$message.error(baseResult.message)
          }
        }
      },
      mounted() {
        // 查询班级
        this.selectAllClasses()
        // 查询学生
        this.condition()
      },
    }
    </script>
    
    <style>
    
    </style>

    修改:ajax操作

    点击修改按钮,通过id查询详情,显示弹出框,并自动填充表单。

    <template>
      <div>
        <!-- 表单start -->
        <el-form :inline="true" :model="studentVo" size="mini" >
          <el-form-item label="班级">
            <el-select v-model="studentVo.cid" placeholder="请选择班级" clearable>
              <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="姓名">
            <el-input v-model="studentVo.sname" placeholder="请输入姓名" clearable></el-input>
          </el-form-item>
          <el-form-item label="年龄">
            <el-col :span="11">
              <el-input v-model="studentVo.startAge" placeholder="请输入开始年龄" clearable></el-input>
            </el-col>
            <el-col class="line" :span="2">-</el-col>
            <el-col :span="11">
              <el-input v-model="studentVo.endAge" placeholder="请输入结束年龄" clearable></el-input>
            </el-col>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="condition(1)">查询</el-button>
          </el-form-item>
        </el-form>
        <!-- 表单end -->
        <el-button type="primary" @click="openAddDialog" >添加</el-button>
        <!-- 添加的弹出框start -->
        <el-dialog :title="dialogTitle" :visible.sync="addStudentDialogVisible">
          <el-form :model="student" label-width="80px">
            <el-form-item label="班级列表" >
              <el-select v-model="student.cid" placeholder="请选择班级">
                <el-option v-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="id" >
              <el-input v-model="student.sid"></el-input>
            </el-form-item>
            <el-form-item label="名称" >
              <el-input v-model="student.sname"></el-input>
            </el-form-item>
            <el-form-item label="生日" >
              <el-date-picker type="date" placeholder="选择生日" v-model="student.birthday" style="width: 100%;"></el-date-picker>
            </el-form-item>
            <el-form-item label="年龄" >
              <el-input v-model="student.age"></el-input>
            </el-form-item>
            <el-form-item label="性别" >
              <el-radio-group v-model="student.gender">
                <el-radio label="1">男</el-radio>
                <el-radio label="0">女</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="addStudentDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="addStudent">确 定</el-button>
          </div>
        </el-dialog>
        <!-- 添加的弹出框end -->
        <!-- 表格start -->
        <el-table
          :data="studentPage.list"
          @selection-change="handleSelectionChange"
          style="width: 100%">
          <el-table-column
            type="selection"
            width="55">
          </el-table-column>
          <el-table-column
            prop="sid"
            label="编号"
            width="180">
          </el-table-column>
          <el-table-column
            prop="sname"
            label="姓名"
            width="180">
          </el-table-column>
          <el-table-column
            prop="cid"
            label="班级"
            width="180">
          </el-table-column>
          <el-table-column
            prop="age"
            label="年龄"
            width="180">
          </el-table-column>
          <el-table-column
            prop="birthday"
            label="生日"
            width="180">
          </el-table-column>
          <el-table-column
            prop="gender"
            label="性别"
            width="180">
            <template slot-scope="scope">
              {{scope.row.gender == 1 ? "男" : "女"}}
            </template>
          </el-table-column>
          <el-table-column label="操作">
            <template slot-scope="scope">
              <el-button size="mini" @click="openUpdateDialog(scope.row.sid)">编辑</el-button>
              <el-button size="mini" type="danger">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!-- 表格end -->
        <!-- 分页条start -->
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="studentPage.pageNum"
          :page-sizes="[1, 2, 3, 5, 10]"
          :page-size="studentPage.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="studentPage.total">
        </el-pagination>
        <!-- 分页条end -->
      </div>
    </template>
    
    <script>
    // 导入axios
    import axios from 'axios'
    export default {
      data() {
        return {
          studentVo: {    //条件查询
    
          },
          studentPage: {    //分页数据
            pageNum: 1,
            pageSize: 3
          },
          addStudentDialogVisible: false,     //添加弹出框的控制变量
          student: {        //添加表单对象
    
          },
          classesList: [],  // 所有班级
          dialogTitle: '',  // 弹出框的标题
        }
      },
      methods: {
        async condition(num) {
          if(num) {
            this.studentPage.pageNum = num
          }
          // ajax查询
          var url = `http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`
          let {data:baseResult} = await axios.post(url, this.studentVo)
          // 保存结果
          this.studentPage = baseResult.data
        },
        handleSelectionChange(val) {
          console.info('批量删除')
        },
        handleSizeChange(val) {
          console.log(`每页 ${val} 条`);
          this.studentPage.pageSize = val
          this.studentPage.pageNum = 1
          // 重新开始
          this.condition()
        },
        handleCurrentChange(val) {
          console.log(`当前页: ${val}`);
          this.studentPage.pageNum = val
          // 重新开始
          this.condition()
        },
        async selectAllClasses() {
          // ajax 查询所有的班级
          var url = `http://localhost:8888/classes`
          let { data: baseResult } = await axios.get(url)
          // 保存结果
          this.classesList = baseResult.data
        },
        openAddDialog() {
          // 设置标题
          this.dialogTitle = '添加学生'
          // 打开弹出框
          this.addStudentDialogVisible = true
          // 清空表单数据
          this.student = {}
          // 查询班级列表
          this.selectAllClasses()
        },
        async openUpdateDialog(sid) {
          // 设置标题
          this.dialogTitle = '修改学生'
          // 通过id查询详情
          var url = `http://localhost:8888/student/${sid}`
          let { data: baseResult } = await axios.get(url)
          this.student = baseResult.data
          // 查询班级列表
          this.selectAllClasses()
          // 打开弹出框
          this.addStudentDialogVisible = true
        },
        async addStudent() {
          // 添加学生ajax
          var url = `http://localhost:8888/student/saveOrUpdate`
          let { data: baseResult } = await axios.post(url, this.student)
          // 处理结果
          if(baseResult.code == 20000) {
            // 成功:刷新页面,成功提示,关闭弹出框
            this.condition()
            this.$message.success(baseResult.message)
            this.addStudentDialogVisible = false
          } else {
            // 失败:失败提示
            this.$message.error(baseResult.message)
          }
        }
      },
      mounted() {
        // 查询班级
        this.selectAllClasses()
        // 查询学生
        this.condition()
      },
    }
    </script>
    
    <style>
    
    </style>

    源码获取

     

    展开全文
  • 学生管理系统(软件工程)

    千次阅读 2022-01-19 13:51:41
    学生管理系统(软件工程)
  • c#学生管理系统

    热门讨论 2012-10-24 23:09:28
    c#学生管理系统,和毕业设计差不多了,大一时做的,里面有详细的文档说明,如果觉得可以,请评分 学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。 本文介绍了学生...
  • 学生管理系统UML图合集

    热门讨论 2011-11-27 15:49:15
    管理员,老师,学生三个角色。 老师可以录入成绩,查看课程,查看评教结果。 学生可以选课,评教,查看课表。 管理员拥有老师和学生的功能,另外还可以注册学生,对老师和学生的个人信息进行修改。
  • 学生成绩管理系统(SSMS),涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。该系统分为三大类:管理员、学生、教师。该项目是基于javaweb进行开发,很适合刚学完javaweb的...
  • Java实现学生管理系统

    千次阅读 2021-01-21 17:04:32
    针对目前所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘...
  • javaweb实现学生管理系统

    千次阅读 多人点赞 2021-08-04 21:51:20
    1.所用技术: jsp+servlet+jdbc+mysql+jquery+bootstrap+ajax 2.功能实现 ...用户输入网址,过滤器进行判断是否登录,没有登录则跳转到登录页面 ... ...首页进行分页显示所有学生信息: 4.条件查询 例如
  • 很多同学大概不知道可以用Python制作学校的管理系统,Python的应用范围真的很广呢,所以大家加油学起来吧,每天一个小知识,迟早变成Python大神! 喜欢记得点赞、评论、收藏哦~
  • java 学生管理系统源码

    热门讨论 2015-07-23 15:33:54
    很多Java初学者都梦寐自己做个学生管理系统,但不知道去哪儿找源码参考,上面给大家提供了Java学生管理系统源码!
  • 用Java代码实现学生管理系统

    万次阅读 多人点赞 2020-12-03 19:18:45
    学生管理系统 1.1 项目演示 1.2 学生管理系统实现思路 定义学生类 主界面的代码编写 添加学生的代码编写 查看学生的代码编写 删除学生的的代码编写 修改学生的代码编写 1.3 定义学生类 学生类: Student 成员...
  • Java基础——学生管理系统

    万次阅读 多人点赞 2019-05-13 17:28:14
    学生管理系统的主界面的代码编写 C. 学生管理系统的查看所有学生的代码编写 D. 学生管理系统的添加学生的代码编写 E. 学生管理系统的删除学生的代码编写 F. 学生管理系统的修改学生的代码编写 代码: 学生类:...
  • 用Java实现简单的学生管理系统

    千次阅读 2021-08-12 20:29:15
    大家好,今天我和大家分享一下用Java中的数组和ArrayList集合分别来实现简单的学生管理系统。过几期,我和大家分享一下用Java和数据库来实现学生管理系统。 一个简单的学生管理系统应该包括:学生对象,对学生对象...
  • Java实现学生管理系统(完整代码)

    千次阅读 多人点赞 2021-11-26 15:55:28
    完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘录入要修改学生...
  • Python实现学生管理系统(功能全面)

    万次阅读 多人点赞 2019-07-08 13:20:47
    标题Python实现学生管理系统 功能描述 1.分为两个界面:(1)登录和注册界面 (2)学生管理系统界面 2.登录功能和之前发布的图书管理系统相同,登录成功后可进入学生管理系统界面,这里不再叙述 3.系统功能(1)...
  • 系统初始界面;登陆界面设计 ;学生信息录入;学生信息修改;学生信息查询;学生成绩录入;修改学生成绩;学生成绩查询 ;用户管理 该项目用PyCharm 可直接打开,数据库内嵌,可直接用
  • 学生管理系统(Java版)

    千次阅读 多人点赞 2021-10-05 10:37:42
    学生管理系统(Java版) 前言:这个是大二做的课设(还是学生管理系统…),理论上虽然是4个人一组一起做的,但是,注意这个“但是”,还是我一个人承担了所有…代码和文档基本都是我一个人写的,当初直接肝得吐血,...
  • Vue项目:学生管理系统

    万次阅读 多人点赞 2022-02-28 21:54:54
    Vue项目:学生管理系统 增删改查一套 免费获取
  • java学生管理系统界面设计

    万次阅读 多人点赞 2019-07-05 13:16:30
    关于学生管理系统的界面设计:代码如下: 数据库设计 DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `stuId` int(11) NOT NULL AUTO_INCREMENT, `stuName` varchar(30) DEFAULT NULL, `stuSex` varchar(30) ...
  • 学生管理系统 增删改查

    千次阅读 多人点赞 2019-02-07 15:49:22
    学生管理系统 步骤如下: A:定义学生类 B:学生管理系统的主界面的代码编写 C:学生管理系统的查看所有学生的代码编写 D:学生管理系统的添加学生的代码编写 E:学生管理系统的删除学生的代码编写 F:学生管理系统的修改...
  • Android 学生管理系统

    千次阅读 2021-06-29 10:21:50
    Android学生管理系统 由android + mysql实现 1.需求分析 功能需求和页面需求两天没有细想,想到啥功能写啥功能想到啥界面写啥界面 2.系统设计 总体界面结构参照了微信的设计结构,主要功能包括管理员的注册和登录,...
  • C++课程设计:学生管理系统设计

    千次阅读 多人点赞 2021-09-06 12:19:16
    遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,了解当前常用的软件开发工具(Visual 2017),培养学生解决实际问题的能力。 二、考核方式及办法: 完成包括从概要设计、详细设计、代码编写、程序...
  • mfc简易的学生管理系统

    千次阅读 多人点赞 2020-07-02 00:33:52
    最近选修了mfc课程,因为疫情原因就写个小管理系统提交即可,忙了几天用vs2013和access写了简易的学生管理系统,第一次写个小系统并且临近期末作业较多这个难免会有些bug,仅供参考,没有安装Vs2013和access数据库的...
  • 用eclipse写的学生管理系统

    千次阅读 2020-12-04 10:33:15
    ##写一个学生管理系统 定义一个学生类 Student package e; /* 这是我的学生类 */ public class Student { //学号 private String id; //姓名 private String name; //年龄 private String age; //居住地 private ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 344,291
精华内容 137,716
关键字:

学生管理系统

友情链接: prg6_15.zip