精华内容
下载资源
问答
  • 学生基本信息查询java
  • 2019年11月5日【下载文档: python+mysql实现学生信息查询系统.txt 】(友情提示:右键点上行txt文档名->目标另存为)python+mysql实现学生信息查询系统本文实例为大家分享了python mysql学生信息查询系统的具体代码,...

    python+mysql实现学生信息查询系统

    来源:中文源码网 浏览: 次 日期:2019年11月5日

    【下载文档: python+mysql实现学生信息查询系统.txt 】

    (友情提示:右键点上行txt文档名->目标另存为)

    python+mysql实现学生信息查询系统本文实例为大家分享了python mysql学生信息查询系统的具体代码,供大家参考,具体内容如下

    import pymysql

    #import redis

    #pool = redis.ConnectionPool(host="IP地址", port=6379, decode_responses=True)

    while True:

    while True:

    # print("=" * 15)

    user = str(input("请输入用户名:"))

    passwd = str(input("请输入密码:"))

    # print("=" * 15)

    if passwd == "root":

    print("=" * 20, " 学生查询系统 "

    "1.学院类型信息 ")

    print("=" * 20)

    break

    else :

    print("--请重新输入密码--")

    num = int(input("请输入功能相对应的数字:"))

    print()

    db = pymysql.connect("IP地址","MySQL用户名","MySQL密码","数据库", charset="utf8")

    cursor = db.cursor()

    if num == 1:

    sql = "select type_id,name from school_type"

    cursor.execute(sql)

    results = cursor.fetchall()

    print("学院序号 学院名称")

    for row in results:

    print(row)

    print()

    num1 = int(input("请输入你想查看的学院对应数字:"))

    while True:

    if num1 == 1:

    print("-" * 15," 1 查看该学院介绍 "

    "2 查看该学院开设专业 "

    "0 返回上一层")

    print("-" * 15)

    num2 = int(input("请输入对应功能的数字:"))

    if num2 == 1:

    sql1 = "select name,introduction from school_type"

    cursor.execute(sql1)

    results1 = cursor.fetchall()

    print("学院名字 学院简介")

    for row1 in results1:

    print(row1)

    elif num2 == 2:

    sql2 = "select * from eie"

    cursor.execute(sql2)

    results2 =cursor.fetchall()

    print("序号 名字 班级数量")

    for row2 in results2:

    print(row2)

    break

    num3 = int(input("请输入想要查询专业名前所对应的数字:"))

    if num3 == 1:

    sql3 = "select class_id,classname,number,manager from class join class_manager on(class.class_id = class_manager_id)"

    cursor.execute(sql3)

    results3 = cursor.fetchall()

    print(" 名称 人数 班主任")

    for row3 in results3:

    print(row3)

    num4 = int(input("请输入想要查询班级前所对应的数字:"))

    while True:

    if num4 == 1:

    print("-" * 20," 1、查看班级所有人信息 "

    "2、添加学生信息 "

    "3、删除学生信息 "

    "4、修改学生信息 "

    "0、退出系统")

    print("-" * 20)

    num5 = int(input("请选择功能(序号):"))

    if num5 == 1:

    sql4 = "select student_name,sex,student_num,evaluation from cloud_one"

    cursor.execute(sql4)

    results4 = cursor.fetchall()

    print("姓名 性别 学号 评分")

    for row4 in results4:

    print(row4)

    elif num5 == 2:

    print("您选择了添加学生信息功能")

    name = str(input("请输入学生姓名:"))

    sex = str(input("请输入学生性别:"))

    studentnum = int(input("请输入学生学号(学号不可重复):"))

    pf = int(input("请输入学生评测分数:"))

    sql5 = "insert into cloud_one(student_name,sex,student_num,evaluation) values("%s","%s",%d,%d)" % (name,sex,studentnum,pf)

    print(sql5)

    try:

    cursor.execute(sql5)

    db.commit()

    except:

    db.rollback()

    print("******已添加成功******")

    elif num5 == 3:

    print("您选择了删除学生信息功能")

    num6 = int(input("请您输入要删除的学号:"))

    sql6 = "delete from cloud_one where student_num = %d"%num6

    try:

    cursor.execute(sql6)

    db.commit()

    except:

    db.rollback()

    print("******已删除成功******")

    elif num5 == 4:

    print("您选择了修改学生信息功能")

    num7 = int(input("请您输入要修改的学生学号"))

    sql7 = "select student_name,sex,student_num,evaluation from cloud_one where student_num=%d"%num7

    cursor.execute(sql7)

    results5 = cursor.fetchall()

    print(" 姓名 性别 学号 评分")

    print(results5)

    xm = str(input("请输入您要更改的姓名:"))

    xb = str(input("请输入您要更改的性别:"))

    xh = int(input("请输入您要更改的学号:"))

    pf = int(input("请输入您要更改的评分:"))

    sql8 = "update cloud_one set student_name="%s",sex="%s,student_num=%d,evaluation=%d" % (xm,xb,xh,pf)

    print(sql8)

    try:

    cursor.execute(sql8)

    db.commit()

    except:

    db.rollback()

    print("*****已更改成功****")

    elif num5 == 0:

    num8 = str(input("******你真的要离开宝宝吗******(Y/N):"))

    if num8 == "Y":

    break

    else:

    continue

    查看信息的时候,上面程序可以用pandas中的一种数据结构DataFrame优化一下。

    可以网上了解一下DataFrame!!!!

    这是我本人做的一些与上面程序有关的数据库。因为初学者,仅供参考

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

    亲,试试微信扫码分享本页! *^_^*

    展开全文
  • 有JAVA可视化界面,可连接ACESS数据库。实现添加,删除,修改等常用功能。简单好用
  • 学生管理系统包括:学生信息登录、注册、删除、添加、查询等功能。最关键的也就是查询系统的实现。至于界面的设计前端事情我们不管。 下面是效果图。 界面效果实在一般,不会前端设计,也不想copy,将就看吧。...

    学生管理系统包括:学生信息登录、注册、删除、添加、查询等功能。最关键的也就是查询系统的实现。至于界面的设计前端事情我们不管。

    下面是效果图。

    界面效果实在一般,不会前端设计,也不想copy,将就看吧。主要是核心实现方法。 代码如下,

    代码步骤即设计步骤。

    java代码严格按照了DAO设计模式进行:

    VO类

    package cn.web.vo;
    
    public class Student {
    
       private int id;
       private String name;
       private String adress;
       private float height;
       private float weight;
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    public String getAdress() {
    	return adress;
    }
    public void setAdress(String adress) {
    	this.adress = adress;
    }
    public float getHeight() {
    	return height;
    }
    public void setHeight(float height) {
    	this.height = height;
    }
    public float getWeight() {
    	return weight;
    }
    public void setWeight(float weight) {
    	this.weight = weight;
    }
       
    }

    DatabseConnection

    package cn.web.dbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class DatabaseConnection {
    	private static final String DBDRIVER="com.mysql.jdbc.Driver";
    	private static final String DBURL="jdbc:mysql://localhost:3306/demo";
    	private static final String DBUSER="root";
    	private static final String DBPASSWORD="root";
    	private static Connection conn=null;
    	
    	public DatabaseConnection() throws Exception{
    		//在构造方法中获得数据库的连接
    		Class.forName(DBDRIVER);
    		
    	this.conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
    		
    	}
    
    	public  Connection getConn() {
    		return DatabaseConnection.conn;
    	}
    
    	public  void close(Connection conn) throws Exception {
    		if(DatabaseConnection.conn!=null) {
    			DatabaseConnection.conn.close();
    		}
    	}
    	
    
    }

    DAO接口

    package cn.web.dao;
    
    import java.util.List;
    
    import cn.web.vo.Student;
    
    public interface IStudentDAO {
    	
    public List<Student> findAll() throws Exception;
    
    public List<Student> findAll(String keyWord) throws Exception;//模糊查询方法
    
    public Student findById(int id) throws Exception;
    
    public int findCount() throws Exception;
    
    public boolean doCreate(Student s) throws Exception;
    public List<Student> findByPage(int currentPage,int pageSize) throws Exception;
    
    }
    


    impl类

    package cn.web.impl;
    
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import cn.web.dao.IStudentDAO;
    
    import cn.web.vo.Student;
    
    public class StudentDAOImpl implements IStudentDAO {
    
    	private Connection conn=null;
    	private PreparedStatement pstmt=null;
    	
    	public StudentDAOImpl(Connection databaseConnection) {
    		//通过构造方法获得数据库的连接
    		this.conn=databaseConnection;
    		
    	}
    
    	@Override
    	public List<Student> findAll() throws Exception {
    		
    	     List<Student> all=new ArrayList<Student>();
    	     ResultSet rs=null;
    		 String sql="select * from student";
    		 pstmt=conn.prepareStatement(sql);
    		 rs =pstmt.executeQuery();
    		 while(rs.next()) {
    			 
    		 Student s=new Student();
    			 s.setId(rs.getInt(1));
    			 s.setName(rs.getString(2));
    			 s.setAdress(rs.getString(3));
    			 s.setHeight(rs.getFloat(4));
    			 s.setWeight(rs.getFloat(5));
    		  all.add(s);
    		 }
    		 pstmt.close();
    		 return all;
    		
    	}
    
    public List<Student> findAll(String keyWord) throws Exception {
    		List<Student> all=new ArrayList<Student>();
    	     ResultSet rs=null;
    		 String sql="select * from student where name like ? or adress like ?";//通过地址或姓名进行模糊查找
    		 pstmt=conn.prepareStatement(sql);
    		 pstmt.setString(1, "%"+keyWord+"%");
    		 pstmt.setString(2, "%"+keyWord+"%");
    		 rs =pstmt.executeQuery();
    		 while(rs.next()) {
    			  Student s=new Student();
    			 s.setId(rs.getInt(1));
    			 s.setName(rs.getString(2));
    			 s.setAdress(rs.getString(3));
    			 s.setHeight(rs.getFloat(4));
    			 s.setWeight(rs.getFloat(5));
    		  all.add(s);
    		 }
    		 pstmt.close();
    		 return all;
    		
    	}
    
    
    
    	public Student findById(int id) throws Exception {
    		Student ss=new Student();
    		 ResultSet rs=null;
    		 String sql="select * from student where id=?";
    		 pstmt=conn.prepareStatement(sql);
    		 pstmt.setInt(1, id);
    	      rs =pstmt.executeQuery();
    	      if(rs.next()) {
    		
    			 ss.setId(rs.getInt(1));
    			 ss.setName(rs.getString(2));
    			 ss.setAdress(rs.getString(3));
    			 ss.setHeight(rs.getFloat(4));
    			 ss.setWeight(rs.getFloat(5));
    	}
    	      pstmt.close();
    	       return ss;
    	
    	}
    
    	@Override
    	public boolean doCreate(Student s) throws Exception {
    		boolean flag=false;
    		String sql="insert into student (id,name,adress,height,weight) values (?,?,?,?,?)";
    		 pstmt=conn.prepareStatement(sql);
    		 pstmt.setInt(1,s.getId());
    		 pstmt.setString(2,s.getName());
    		 pstmt.setString(3,s.getAdress());
    		 pstmt.setFloat(4,s.getHeight());
    		 pstmt.setFloat(5,s.getWeight());
    		 if(this.pstmt.executeUpdate()>0) {
    			 flag=true;
    		 } 
    		 pstmt.close();
    		return flag;
    	}
    
    	
    	@Override
    	public List<Student> findByPage(int currentPage, int pageSize) throws Exception{
    		 List<Student> all=new ArrayList<Student>();
    		 ResultSet rs=null;
    		 String sql="select * from student limit ?,?";
    		 pstmt=conn.prepareStatement(sql);
    		 pstmt.setInt(1, currentPage);
    		 pstmt.setInt(2, pageSize);
    		 
    		 rs=pstmt.executeQuery();
    		 while(rs.next()) {
    			  Student s=new Student();
    			 s.setId(rs.getInt(1));
    			 s.setName(rs.getString(2));
    			 s.setAdress(rs.getString(3));
    			 s.setHeight(rs.getFloat(4));
    			 s.setWeight(rs.getFloat(5));
    		   all.add(s);
    		 }
    		 this.pstmt.close();
    		 return all;
    	}
    
    	@Override
    	public int findCount() throws Exception{
    		int count =0;
    		 String sql="select count(1) from student ";
    		 pstmt=conn.prepareStatement(sql);
    		 ResultSet rs=null;
    		 rs=pstmt.executeQuery();
    		 if(rs.next()) {
    			count=rs.getInt(1);
    		 }
    		pstmt.close();
    		return count;
    	}
    
    }

    proxy

    package cn.web.proxy;
    
    import java.util.List;
    
    import cn.web.dao.IStudentDAO;
    import cn.web.dbc.DatabaseConnection;
    import cn.web.impl.StudentDAOImpl;
    import cn.web.vo.Student;
    
    public class StudentDAOProxy implements IStudentDAO {
                    //代理类 调用前面的前面的类  ps:什么吊事也不用做,调用就完了
    	IStudentDAO dao=null;
    	DatabaseConnection dbc=null;
    	
    	public StudentDAOProxy() throws Exception{
    		this.dbc=new DatabaseConnection();
    		this.dao=new StudentDAOImpl(dbc.getConn());
    		
    		
    	}
    	
    	public List<Student> findAll() throws Exception {
    		List<Student> ss=null;
    		ss=this.dao.findAll();
    		return ss;
    	}
    
    	
    	public List<Student> findAll(String keyWord) throws Exception {
    		List<Student> ss=null;
    		ss=this.dao.findAll(keyWord);
    		return ss;
    	}
    
    	@Override
    	public Student findById(int id) throws Exception {
    		Student ss=null;
    		ss=this.dao.findById(id);
    		return ss;
    	}
    
    	@Override
    	public boolean doCreate(Student s) throws Exception {
    		boolean flag=false;
    		if(this.dao.findById(s.getId())!=null) {
    		flag=this.dao.doCreate(s);
    	}
    	 return flag;
    
    }
    
    	@Override
    	public List<Student> findByPage(int currentPage, int pageSize) throws Exception {
    	   List<Student> all;
    		all=dao.findByPage(currentPage, pageSize);
    		return all;
    	}
    
    	@Override
    	public int findCount() throws Exception {
    		
    		return dao.findCount();
    	}
    }

    DAO工厂

    package cn.web.factory;
    
    import cn.web.dao.IStudentDAO;
    import cn.web.proxy.StudentDAOProxy;
    
    public class StudentDAOFactory {
    	public static IStudentDAO getIStudentDAOInstance() throws Exception {
    		return new StudentDAOProxy();
    	}
    
    }
    

     下面是JSP代码

    <%@ page language="java" contentType="text/html; charset=gbk"
        pageEncoding="gbk"%>
    <%@page import="java.util.*" %>
    <%@page import="cn.web.vo.Student" %>
    
    <html>
    <head>
    <meta charset="gbk">
    <title>学生信息查询</title>
    </head>
    <body>
    <%request.setCharacterEncoding("GBK"); %>
    <jsp:useBean id="stud"  scope="request" class="cn.web.factory.StudentDAOFactory"/>
    <%
    List<Student> all=null;
    Student ss=null;
    
    %>
    <%int currentPage = 1 ;	// 为当前所在的页,默认在第1页
    int lineSize = 8 ;		// 每次显示的记录数
    int pageSize = 1 ;		// 表示全部的页数(尾页)
    %>
    <%    String s=request.getParameter("realPage");
          String keyWord=request.getParameter("query");
    if(s!=null){
    	  currentPage = Integer.parseInt(s);
    }
    if("".equals(keyWord)||keyWord==null||"全部".equals(keyWord)||"null".equals(keyWord)){
    	all=stud.getIStudentDAOInstance().findByPage((currentPage-1)*8, 8);
    }else{
    	all=stud.getIStudentDAOInstance().findAll(keyWord);
    }
    
    
    Iterator<Student>it=all.iterator();
    pageSize=stud.getIStudentDAOInstance().findCount()%lineSize==0?
    		stud.getIStudentDAOInstance().findCount()/lineSize:stud.getIStudentDAOInstance().findCount()/lineSize+1;
      
    %>
    
    <script language="javaScript">
     function go(num){
    	 document.getElementById("realPage").value = num;
    	 document.myform.submit();
    }
     
    </script>
    
    <center>
    <form name="myform" action="display.jsp" method="post">
    输入姓名或地址进行查询<input type="text" name="query" width="5" value="<%=keyWord%>">
    <input type="button"   value="查询" onclick="go(1)">
    <table border="1" width="60%">
    <tr>
    <td>学号</td>
    <td>姓名</td>
    <td>地址</td>
    <td>身高</td>
    <td>体重</td>
    </tr>
    
    <%while(it.hasNext()){
    	ss=it.next();%>
    <tr>
    <td><%=ss.getId() %></td>
    <td><%=ss.getName() %></td>
    <td><%=ss.getAdress() %></td>
    <td><%=ss.getHeight() %></td>
    <td><%=ss.getWeight() %></td>
    </tr>
    
    <%} %>
    <tr>
    <td><input type="button" value="首页"  onclick="go(<%=1%>)" 
    <%=currentPage==1?"DISABLED":""%>></td>
    <td><input type="button" value="上一页" onclick="go(<%=currentPage-1%>)"
    <%=currentPage==1?"DISABLED":""%>></td>
    <td><input type="button" value="下一页" onclick="go(<%=currentPage+1%>)"
    <%=currentPage==pageSize?"DISABLED":""%>></td>
    <td>跳转到<select name="jump" onchange="go(this.value)">
    		<%
    			for(int i=1;i<=pageSize;i++){
    		%>
    			<option value="<%=i%>" <%=i==currentPage?"SELECTED":""%>><%=i%></option>
    		<%
    			}
    		%>
    		</select>页</td>
    
    
    
    <td><input type="button" value="尾页" onclick="go(<%=pageSize%>)"
    <%=currentPage==pageSize?"DISABLED":""%>></td>
    
    </tr>
    </table>
    <input type="hidden" name="realPage" value="1">
    </form>
    </center>
    
    </body>
    </html>

     代码就这么多。按顺序看下来慢慢实现吧,不难理解,有疑问  添加QQ:  3492625357

    本来准备今晚写完整个管理系统,但是太困了,先设计完成了查询系统。由于DAO设计模式和代码耦合度低,便于日后完善设计,往后我会把完善后完整学生管理系统发出来。

    展开全文
  • 系统用socket实现了基于的客户端与服务器端通信,在客户端输入查询信息,即可从服务器端返回个人数据。
  • 学生成绩查询系统

    2021-04-05 18:34:58
    学生成绩查询系统是以asp+excel进行开发的成绩查询系统学生成绩从教学质量评价系统导出,去除第一行(如2015级2015-2016下学期期末学生成绩册)。放置到本目录内。查询数据以(*.xls)文件命名,可以有多个,系统...
  • C语言学生成绩管理系统代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    扫描下方公众号,发送 成绩系统 4个字,获取下载源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,但仍在更新补充中)

    以后有时间再给大家继续分享,有任何问题欢迎留言区交流。

    大学C语言实训课,C语言学生成绩管理系统。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    struct student
    	{
    		int num;
    		char name[20];
    		float pingshi;
    		float shiyan;
    		float kaoshi;
    		double zongping;
    	}stu[4];
    void main()
    {
    	void a();
    	void b();
    	void c();
    	void d();
    	void e();
    	int n;
    	while(n!=6)
    	{	printf("\t大学计算机基础成绩管理系统\n");
    		printf("1:输入一个班学生大学计算机基础成绩记录\n");
    		printf("2:显示所有成绩记录\n");
    		printf("3:计算并输出平均成绩,均方差\n");
    		printf("4:输出成绩与排名\n");
    		printf("5:结果存入文件chengji.txt\n");
    		printf("6:退出系统\n");
    		printf("输入选项代码:");
    		scanf("%d",&n);
    		switch(n)
    		{
    			case 1:a();break;
    			case 2:b();break;
    			case 3:c();break;
    			case 4:d();break;
    			case 5:e();break;
    			case 6:printf("\n*******************谢谢使用!*******************\n");break;
    			break;    
    		}	
    	}
    getchar();
    }
    /* 子  函  数*/
    void a() /* 输入一个班的学生记录*/
    
    {
    	int i;
    
    	for(i=0;i<4;i++)
    
    	{   
    
    		printf("请输入学号 姓名 平时成绩 实验成绩 考试成绩:");
    
    		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);
    		
    	}for(i=0;i<4;i++)
    stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;
    }
    void b()/* 显示所有记录*/
    
    {
    	int i;
    
    	printf("学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    }
    
    void c()/* 求出全班平均成绩,显示均方差*/
    {  
    	int a[4]={0,1,2,3};
        int i,j;
        double total=0,pfc=0,bzc=0;
        double ave;
        for(i=0;i<4;i++)
    	{
    		total=total+stu[i].zongping;
    	}
        ave=total/4.0;
        printf("总评平均成绩是%f\n",ave);
    	for(i=0;i<4;i++)
    	{
    		pfc=pow((stu[i].zongping-ave),2)/4;
    	}
    	bzc=sqrt(pfc);
    	printf("\n平方差是%f\n",pfc);
    	printf("\n标准差是%f\n",bzc);
    }
    void d()
    
    {
    	int a[4]={0,1,2,3};
    	int i,j,temp;
    	for(j=0;j<3;j++)
    	{
    		for(i=0;i<3-j;i++)
    		if(stu[a[i]].zongping>stu[a[i+1]].zongping)
    		{	
    			temp=a[i];a[i]=a[i+1];
    			a[i+1]=temp;
    
    		}
    	}
    
    	printf("顺序为:\n");
    
    	printf("学号     姓名      总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);
    
    	printf("\n");
    
    }
    
    void e()
    {int i;
    FILE *fp;
    fp=fopen("chengji.txt","w");
    
    	fprintf(fp,"学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    printf("\n\n*******************恭喜,保存完成!*******************\n\n");
    }
    

    简单记录。

    关注微信公众号“资料在线”,回复“C语言源码”,即可获得C语言源码包

    更多资源等着你

    最新文章:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

     

    展开全文
  • java、jsp学生信息,学生成绩管理查询系统,2019最新,
  • C语言之学生管理系统代码(完整)

    万次阅读 多人点赞 2016-06-30 16:53:15
    <span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #define FILENAME "student.dat" typedef enum{MAN, WOMAN} SEX; typedef struct tagStudent ... //学生...

    #include <stdio.h>
    #include <stdlib.h>
    
    #define FILENAME "student.dat"
    
    typedef enum{MAN, WOMAN} SEX;
    
    typedef struct tagStudent
    
    {
    
    	int num;		//学生的编号
    
    	char name[20];	//学生的姓名
    
    	SEX	sex;		//学生的性别
    
    	int age;		//学生的年龄
    
    	char major[20];	//学生的专业
    
    	struct tagStudent *next;//下一个节点的指针
    
    }STUDENT, *PSTUDENT;
    
    
    
    
    STUDENT g_head;	//头节点
    
    
    
    
    //1.显示菜单
    
    void ShowMenu();
    
    //2.获取用户选择的菜单的编号
    
    int GetMenuChoose();
    
    //3.创建一个节点,它会返回一个新创建的学生信息节点的指针
    
    PSTUDENT CreateStudent();
    
    //4.把学生信息节点加入到链表中
    
    int AddStudent(PSTUDENT pstu);
    
    //5.返回指定编号学生节点的上一个节点的指针
    
    PSTUDENT GetPrevAddr(int num);
    
    //6.显示所有学生信息
    
    void ShowAll();
    
    //7.显示信息数量
    
    int ShowStudentCount();
    
    //8.修改学生信息,参数为要修改的学生的编号
    
    void ModityStudent(int num);
    
    //9.获取用户的选择
    
    int Question(const char *pstr);
    
    //10.获取用户输入的学生的编号
    
    int GetInputNum();
    
    //11.删除编号为num的学生信息
    
    void DelStudent(int num);
    
    //12.删除所有的学生信息
    
    void DelAll();
    
    //13.把学生信息保存到文件当中
    
    void SaveToFile();
    
    //14.从文件中读取学生信息
    
    void LoadFromFile();
    
    

    #include <stdio.h>
    #include <stdlib.h>
    
    #define FILENAME "student.dat"
    
    typedef enum{MAN, WOMAN} SEX;
    
    typedef struct tagStudent
    
    {
    
    	int num;		//学生的编号
    
    	char name[20];	//学生的姓名
    
    	SEX	sex;		//学生的性别
    
    	int age;		//学生的年龄
    
    	char major[20];	//学生的专业
    
    	struct tagStudent *next;//下一个节点的指针
    
    }STUDENT, *PSTUDENT;
    
    
    
    
    STUDENT g_head;	//头节点
    
    
    
    
    //1.显示菜单
    
    void ShowMenu();
    
    //2.获取用户选择的菜单的编号
    
    int GetMenuChoose();
    
    //3.创建一个节点,它会返回一个新创建的学生信息节点的指针
    
    PSTUDENT CreateStudent();
    
    //4.把学生信息节点加入到链表中
    
    int AddStudent(PSTUDENT pstu);
    
    //5.返回指定编号学生节点的上一个节点的指针
    
    PSTUDENT GetPrevAddr(int num);
    
    //6.显示所有学生信息
    
    void ShowAll();
    
    //7.显示信息数量
    
    int ShowStudentCount();
    
    //8.修改学生信息,参数为要修改的学生的编号
    
    void ModityStudent(int num);
    
    //9.获取用户的选择
    
    int Question(const char *pstr);
    
    //10.获取用户输入的学生的编号
    
    int GetInputNum();
    
    //11.删除编号为num的学生信息
    
    void DelStudent(int num);
    
    //12.删除所有的学生信息
    
    void DelAll();
    
    //13.把学生信息保存到文件当中
    
    void SaveToFile();
    
    //14.从文件中读取学生信息
    
    void LoadFromFile();
    
    
    
    
    int main()
    
    {
    
    	int running = 1;
    
    	while(running)
    
    	{
    
    		switch(GetMenuChoose())
    
    		{
    
    			case 0:
    
    			running = 0;
    
    			break;
    
    			case 1:
    
    //			printf("你选择了菜单1\n");
    
    			AddStudent(CreateStudent());
    
    			break;
    
    			case 2:
    
    //			printf("你选择了菜单2\n");
    
    			DelStudent(GetInputNum());
    
    			break;
    
    			case 3:
    
    			printf("你选择了菜单3\n");
    
    			break;
    
    			case 4:
    
    //			printf("你选择了菜单4\n");
    
    			ModityStudent(GetInputNum());
    
    			break;
    
    			case 5:
    
    //			printf("你选择了菜单5\n");
    
    			DelAll();
    
    			break;
    
    			case 6:
    
    //			printf("你选择了菜单6\n");
    
    			ShowAll();
    
    			break;
    
    			case 7:
    
    //			printf("你选择了菜单7\n");
    
    			ShowStudentCount();
    
    			break;
    
    			case 8:
    
    //			printf("你选择了菜单8\n");
    
    			LoadFromFile();
    
    			break;
    
    			case 9:
    
    //			printf("你选择了菜单9\n");
    
    			SaveToFile();
    
    			break;
    
    		}		
    
    		system("pause");		
    
    	}
    
    	
    
    	return 0;
    
    }
    
    //1.显示菜单
    
    void ShowMenu()
    
    {
    
    	system("cls");
    
    	printf("-----------------------------学生管理系统--------------------------------\n");
    
    	printf("\n\t1.添加学生信息    2.删除某个学生信息    3.显示某个学生信息\n");
    
    	printf("\t4.修改学生信息    5.删除所有学生信息    6.显示所有学生信息\n");
    
    	printf("\t7.显示信息数量    8.读取文件学生信息    9.保存学生信息至文件\n");
    
    	printf("\t0.退出系统\n");
    
    	printf("\n-------------------------------------------------------------------------\n");
    
    }
    
    //2.获取用户选择的菜单的编号
    
    int GetMenuChoose()
    
    {
    
    	int num;//保存用户选择的菜单编号
    
    	ShowMenu();
    
    	printf("请选择菜单(0 ~ 9):");
    
    	while(1 != scanf("%d", &num) || num < 0 || num > 9)
    
    	{
    
    		ShowMenu();
    
    		printf("选择菜单错误,请重新选择(0 ~ 9):");
    
    		fflush(stdin);//清空输入缓冲区
    
    	}
    
    	return num;
    
    }
    
    //3.创建一个节点,它会返回一个新创建的学生信息节点的指针
    
    PSTUDENT CreateStudent()
    
    {
    
    	int sex;
    
    	PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息
    
    	if(!pstu)
    
    	{
    
    		printf("申请内存空间失败!\n");
    
    		return NULL;
    
    	}
    
    	printf("请输入学生的编号(整型):");
    
    	while(1 != scanf("%d", &pstu->num) || GetPrevAddr(pstu->num))
    
    	{
    
    		printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");
    
    		fflush(stdin);
    
    	}
    
    	printf("请输入学生的姓名(小于20字符):");
    
    	scanf("%20s", pstu->name);//(*pstu).name
    
    	printf("请选择学生的性别(1.男  2.女):");
    
    	while(1 != scanf("%d", &sex) || sex < 1 || sex > 2)
    
    	{
    
    		printf("性别选择错误,请重新选择学生的性别(1.男  2.女):");
    
    		fflush(stdin);
    
    	}
    
    	if(1 == sex)
    
    		pstu->sex = MAN;
    
    	else
    
    		pstu->sex = WOMAN;
    
    	printf("请输入学生的年龄(10 ~ 40):");
    
    	while(1 != scanf("%d", &pstu->age) || pstu->age < 10 || pstu->age > 40)
    
    	{
    
    		printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
    
    		fflush(stdin);
    
    	}
    
    	printf("请输入学生的专业(小于20字符):");
    
    	scanf("%20s", pstu->major);
    
    	pstu->next = NULL;
    
    	return pstu;	
    
    }
    
    //4.把学生信息节点加入到链表中
    
    int AddStudent(PSTUDENT pstu)
    
    {
    
    	PSTUDENT ps = &g_head;
    
    	if(!pstu)
    
    	{
    
    		return 0;
    
    	}
    
    	//判断一下该学生信息是不是已经存在
    
    	if(GetPrevAddr(pstu->num))
    
    	{
    
    		printf("编号为%d的学生信息已经存在!\n", pstu->num);
    
    		free(pstu);//释放该节点内存空间
    
    		return 0;
    
    	}
    
    	//while循环的作用是找到当前链表的最后一个节点
    
    	while(ps->next)
    
    		ps = ps->next;
    
    	//把新节点加入到最后那个节点的后面
    
    	ps->next = pstu;
    
    	pstu->next = NULL;
    
    	return 1;	
    
    }
    
    //5.返回指定编号学生节点的上一个节点的指针
    
    PSTUDENT GetPrevAddr(int num)
    
    {
    
    	PSTUDENT pstu = &g_head;
    
    	while(pstu->next)
    
    	{
    
    		if(pstu->next->num == num)
    
    			return pstu;
    
    		pstu = pstu->next;
    
    	}
    
    	return NULL;	
    
    }
    
    //6.显示所有学生信息
    
    void ShowAll()
    
    {
    
    	PSTUDENT pstu = &g_head;
    
    	printf("--------------------------------------------------------------------\n");
    
    	printf("  编号        姓名            性别     年龄               专业\n");
    
    	printf("--------------------------------------------------------------------\n");
    
    	while(pstu->next)
    
    	{
    
    		printf("  %-8d  ", pstu->next->num);
    
    		printf("%-20s", pstu->next->name);
    
    		printf("%-6s", pstu->next->sex == MAN ? "男" : "女");
    
    		printf("%4d", pstu->next->age);
    
    		printf("%20s\n", pstu->next->major);
    
    		pstu = pstu->next;//让指针指向下一个节点
    
    	}
    
    	printf("--------------------------------------------------------------------\n");	
    
    }
    
    //7.显示信息数量
    
    int ShowStudentCount()
    
    {
    
    	int count = 0;
    
    	PSTUDENT pstu = &g_head;
    
    	while(pstu->next)
    
    	{
    
    		++count;
    
    		pstu = pstu->next;
    
    	}
    
    	printf("\n当前共有%d位学生信息。\n", count);
    
    	return count;
    
    }
    
    //8.修改学生信息,参数为要修改的学生的编号
    
    void ModityStudent(int num)
    
    {
    
    	PSTUDENT pstu = GetPrevAddr(num);//获取要修改的学生节点的上一个节点
    
    	int choose;
    
    	if(!pstu)
    
    	{
    
    		printf("没有编号为%d的学生信息。\n", num);
    
    		return;
    
    	}
    
    	pstu = pstu->next;//将要修改的学员节点的指针改为指向自己的
    
    	printf("当前学生的姓名为%s,", pstu->name);
    
    	if(Question("确定要修改吗?"))
    
    	{
    
    		printf("请输入学生的姓名(小于20字符):");
    
    		scanf("%20s", pstu->name);
    
    	}
    
    	printf("当前学生的性别为%s,", pstu->sex == MAN ? "男" : "女");
    
    	if(Question("确定要修改吗?"))
    
    	{
    
    		printf("请输入学生的性别(1.男 2.女):");
    
    		while(1 != scanf("%d", &choose) || choose < 1 || choose > 2)
    
    		{
    
    			printf("输入错误,请重新输入学生的性别(1.男 2.女):");
    
    			fflush(stdin);
    
    		}
    
    		if(1 == choose)
    
    			pstu->sex = MAN;
    
    		else
    
    			pstu->sex = WOMAN;
    
    	}
    
    	printf("当前学生的年龄为%d,", pstu->age);
    
    	if(Question("确定要修改吗?"))
    
    	{
    
    		printf("请输入学生的年龄(10 ~ 40):");
    
    		while(1 != scanf("%d", &pstu->age) || pstu->age < 10 || pstu->age > 40)
    
    		{
    
    			printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
    
    			fflush(stdin);
    
    		}		
    
    	}
    
    	printf("当前学生的专业为%s,", pstu->major);
    
    	if(Question("确定要修改吗?"))
    
    	{
    
    		printf("请输入学生的专业(小于20字符):");
    
    		scanf("%20s", pstu->major);
    
    	}
    
    	printf("修改完毕!\n");	
    
    }
    
    //9.获取用户的选择
    
    int Question(const char *pstr)
    
    {
    
    	char answer;
    
    	printf("%s请选择(y or n):", pstr);
    
    	while(1 != scanf(" %c", &answer) || (answer != 'y' && answer != 'n'))
    
    	{
    
    		printf("输入错误!%s请重新选择(y or n):", pstr);
    
    		fflush(stdin);//清空输入缓冲区,C库函数
    
    	}
    
    	if('y' == answer)
    
    		return 1;
    
    	else
    
    		return 0;	
    
    }
    
    //10.获取用户输入的学生的编号
    
    int GetInputNum()
    
    {
    
    	int num;
    
    	printf("请输入学生的编号(整型):");
    
    	while(1 != scanf("%d", &num))
    
    	{
    
    		printf("编号输入错误!请重新输入学生的编号(整型):");
    
    		fflush(stdin);
    
    	}
    
    	return num;	
    
    }
    
    //11.删除编号为num的学生信息
    
    void DelStudent(int num)
    
    {
    
    	PSTUDENT pstu, ptmp;
    
    	if(pstu = GetPrevAddr(num))
    
    	{
    
    		if(!Question("确定要删除该学生信息吗?"))
    
    		{
    
    			return;
    
    		}
    
    		ptmp = pstu->next;
    
    		pstu->next = ptmp->next;
    
    		free(ptmp);
    
    		printf("删除了编号为%d的学生信息。\n", num);
    
    	}
    
    	else
    
    	{
    
    		printf("没有找到编号为%d的学生信息。\n", num);
    
    	}	
    
    }
    
    //12.删除所有的学生信息
    
    void DelAll()
    
    {
    
    	PSTUDENT pstu = g_head.next, ptmp;
    
    	int count = 0;
    
    	if(!Question("确定要删除当前所有的学生信息吗?"))
    
    	{
    
    		return;
    
    	}
    
    	while(pstu)
    
    	{
    
    		ptmp = pstu;
    
    		pstu = pstu->next;
    
    		free(ptmp);
    
    		++count;
    
    	}
    
    	printf("共删除了%d位学生信息。\n", count);
    
    	g_head.next = NULL;
    
    }
    
    //13.把学生信息保存到文件当中
    
    void SaveToFile()
    
    {
    
    	FILE *pf = fopen(FILENAME, "wb");
    
    	PSTUDENT pstu = &g_head;
    
    	int i = 0, count = ShowStudentCount();
    
    	if(!pf)
    
    	{
    
    		printf("打开待写入的文件失败!\n");
    
    		return;
    
    	}
    
    	if(!Question("确定要将当前学生信息保存到文件中吗?"))
    
    	{
    
    		fclose(pf);
    
    		return;
    
    	}
    
    	fwrite(&count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头
    
    	while(pstu->next)
    
    	{
    
    		fwrite(pstu->next, 1, sizeof(STUDENT), pf);//把每位学生信息写入文件
    
    		++i;
    
    		pstu = pstu->next;
    
    	}
    
    	fclose(pf);
    
    	if(i == count)
    
    	{
    
    		printf("成功的写入了%d条学生信息。\n", count);
    
    	}
    
    	else
    
    	{
    
    		printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);
    
    	}	
    
    }
    
    //14.从文件中读取学生信息
    
    void LoadFromFile()
    
    {
    
    	int i, count = 0, repeat = 0;
    
    	FILE *pf;
    
    	PSTUDENT pstu;
    
    	printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");
    
    	if((pf = fopen(FILENAME, "rb")) == NULL)
    
    	{
    
    		printf("文件还没有创建,请手工输入学生信息并保存吧!\n");
    
    		return;
    
    	}
    
    	DelAll();//删除之前的所有学生信息,然后从文件中读取
    
    	fread(&count, 1, sizeof count, pf);//获取学生信息的数量
    
    	for(i = 0; i < count; ++i)
    
    	{
    
    		pstu = (PSTUDENT)malloc(sizeof(STUDENT));
    
    		fread(pstu, 1, sizeof(STUDENT), pf);
    
    		if(!AddStudent(pstu))
    
    		{
    
    			++repeat;//保持有多少个和当前链表中相重复的学生信息
    
    		}
    
    	}
    
    	fclose(pf);
    
    	printf("文件读取完毕!新增学生信息%d条。\n", count - repeat);	
    
    }
    

    如果帮到你了,请赞赏支持:

    展开全文
  • 以下内容是本人将近一个星期的劳动成果C语言程序设计作为本学期最后一次实训 设计内容学生信息查询系统 可实现 1 录入学生信息 2 显示学生成绩 3 修改学生成绩 4 删除学生成绩 5 按学号查询学生信息 6 按学好显示...
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...
  • 学生成绩查询系统是以asp+excel进行开发的成绩查询系统。软件说明:1.数据源文件提取方式:学生成绩从教学质量评价系统导出,去除第一行(2015级2015-2016下学期期末学生成绩册)。放置到本目录内。查询数据以(*....
  • 学生成绩查询系统简介 学生成绩查询系统是以asp excel进行开发的成绩查询系统学生成绩从教学质量评价系统导出,去除第一行(如2015级2015-2016下学期期末学生成绩册)。放置到本目录内。查询数据以(*.xls)文件...
  • C++设计的学生学籍查询管理系统 里面论文代码都完整~~下载下来改个名字可以直接用~
  • 请教c语言高手~~~~ 设计一个学生成绩管理系统 功能: 1.学生成绩的录入.最低0.27元/天开通百度文库会员,可在文库查看完整内容> 原发布者:beibeifc 用C语言实现一个简单的学生成绩管理系统摘要:伴随着现代社会...
  • 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。 进一步要求*: (1) 能够实现增加、删除、修改功能; (2) 能够实现统计功能等。 思路简介: 要采用模块化思想,...
  • Java综合实践——学生成绩查询系统

    千次阅读 2020-12-18 15:47:43
    “学生成绩查询系统”中保存有学生姓名、课程名称以及学生的课程成绩。查询系统从控制台输入统计命令及参数,实现几种方式的成绩查询,如: avg:分别统计学生和课程的平均分 get song Java:获取学生song的Java课程...
  • 学生信息查询系统实现了学生登录功能和学籍信息的基本查询,添加,删除和修改,是做课程设计的很好的参考。
  • 25175 学生证书查询管理系统主要功能: 通过(学号/姓名)来查询查询值:验证码:  可查询到(姓名,笔名,学号,性别,年龄,学制, 学历,毕业类型,入学时间,毕业时间,专业,班级,联系,电话留言,其他,还有照片上传功能 ...
  • 基于JSP的数据查询系统——JSP+Mysql完成学生成绩查询web系统一、配置环境1. eclipse环境配置2. tomcat的下载安装和环境配置3. eclipse下载插件二、eclipse将项目部署到tomcat上1.配置elipse中tomcat环境2. 运行项目...
  • 学生管理系统代码

    2019-01-07 21:43:37
    (4)可以设查询条件:首先在组合框comboBox1中选择查询条件,并在textBox1中输入条件值(可以模糊查询,如按照姓名查询时,输入“王”,可以查所有姓王的同学的成绩),单击查询将结果显示在dataGridView1控件中。...
  • 简单学生成绩查询系统 按成绩排序 按姓名排序

    千次阅读 多人点赞 2018-08-07 23:40:16
    把 按成绩排序,和按姓名排序,封装了两个函数。 (排序都是,冒泡算法) 运用了 结构体 和结构体数组的知识。 源代码: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define N 3 //N...
  • 学生信息管理系统代码

    万次阅读 2018-11-14 00:00:56
    #!/usr/bin/python #!coding:utf-8 import sys #定义函数,系统菜单信息,帮助用户选择 ... print('**********学生信息查询系统***********') print(' 1.查询学生信息 ') print(' 2.增加学生信息 ...
  • Java学生管理系统代码

    2011-03-17 23:39:41
    在Java平台上编写学生管理系统代码,有较完善的图形界面,可以输入学生信息(姓名、学号等)
  • c语言学生学籍管理系统c语言学生学籍管理系统程序代码如下#include "stdio.h"#include "conio.h"#include "string.h"#include "stdlib.h"#define PF printf#define SF scanfstaticintn,i;structaddress_book{char ...
  • 人性化界面设计和丰富的功能 密码1234
  • c语言实现的学生信息查询系统

    千次阅读 2018-05-19 11:29:26
    #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&...//姓名需输入英文全拼,尽量不写汉字 //密码为yangjiantao typedef struct//结
  • 这资源主要包含两部分,第一个为直接通过代码实现学生成绩和信息的管理系统,第二部分为通过图形界面来实现的学生成绩信息的管理。主要实现功能包括学生成绩、信息的录入,学生信息,成绩的修改、删除、查询、再录入...
  • C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示。 完整代码如下: #include #include #include typedef struct person //定义结构体 { char num[10]; //学号 char name[20]...
  • 学生成绩查询系统实验要求实验步骤参考资料 实验要求 首先在Mysql中创建相应的学生成绩表,然后基于 JSP+Mysql 做一个简单的学生成绩查询web系统。 实验步骤 安装idea、Tomcat、Mysql 打开项目 配置jdk,web ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,416
精华内容 33,766
关键字:

学生姓名代码查询系统