精华内容
下载资源
问答
  • 学生综合管理系统源码 源码描述: 学生综合信息管理系统,针对学生学籍管理,学分管理,缴费管理,平时表现 等在校所有信息的管理! 主要功能包括 教务管理,学分管理,财务管理,信息查询,学籍管理,学生管理,...
  • 老师可在网络中录入、修改学生成绩,老师、学生学生家长登录系统,可查询某一个或多个班的成绩情况,自动排名,自动生成平均分、最高分、最低分;同时可比较多次考试中某个学生的一门或多门程成绩情况(可生成柱状...
  • 才子信息学生综合管理系统为在线多用户管理系统,采用PHP MYSQL AJAX开发,支持在单机、局域网、虚拟主机上运行。   共分四个部分(功能模块) 学籍管理 成绩管理 评价(学生素质管)管理 家校沟通管理 ...
  • 内容索引:VB源码,数据库应用,测评,管理系统 VB6学生综合测评管理系统(MSSQL),是一个毕业设计,含论文及设计文档。功能主要有系统管理、课程成绩管理、综合测评成绩管理与查询、数据备份与恢复、课程设置、奖学金...
  • 2、系统管理中可设置单位信息,系统中字段信息,公告信息,及系统参数设置。 3、教师管理中可以添加、修改、删除教室信息、批量把教师信息按任意条件导出为excel格式、把excel格式的教师信息导入数据库中;可以查看...
  • 年级与班级管理员只能管理本年级或本班学生,且记录的添加修改删除等操作权限可以自由分配,并可以锁定登录。满足多角色的需要,给系统带来更多的实用、便利与安全! 11、可根据用户的要求进行修改、定制各类软件及...
  • 顾名思义,学生信息综合管理系统就是对学生综合信息进行管理的系统。用户可以以各种身分登录系统,而每种身份都有不同的权限。本程序一共设置了两种用户身份,分别是普通用户和管理员。普通用户只拥有对学生的基本...
  • 系统参考了各类学生信息管理软件的精华,溶入了各自的优点并采纳了众多在学校工作的朋友的宝贵意见,真正地从用户的需要出发,极人性化的设计理念为客户需要而设计。现已广泛应用于各级各类学校,特别是中小学。 ...
  • 学生管理系统需求: 库表: 学生表(t_student),字段: id、int 主键、自增 name、 字符串 password、 字符串 sex、 字符串 borndate、date Phone 字符串 (所有字段不允许为空) 功能: 学生信息添加功能(学号...

    学生管理系统需求:
    库表:
    学生表(t_student),字段:
    id、int 主键、自增
    name、 字符串
    password、 字符串
    sex、 字符串
    borndate、date
    Phone 字符串
    (所有字段不允许为空)
    功能:
    学生信息添加功能(学号自动生成)
    学生信息删除功能
    学生信息修改功能(除学号以外,其他均可修改)
    学生登录功能
    学生信息查询功能(单个学生、所有学生)
    以上功能都应具有操作后的提示消息(如:登录成功, 添加成功 、 删除成功、 修改成功、未查询到该学生信息)

    数据库连接:
    数据库驱动、数据库URL、用户名、密码,应从配置文件中读取

    开发项目的步骤:
    1.库表设计
    2.新建项目
    3.导入项目相关Jar包
    4.创建各个职责代码所在的包结构
    0.utils
    1.entity
    2.dao
    3.dao.impl
    4.service
    5.service.impl
    6.test
    5.准备db.properties配置文件,DBUtils
    6.工具类
    7.开发Entity
    8.开发DAO接口、实现类
    9.开发Service接口、实现类
    10.开发Test
    提示:基本应用到所有 JDBC 的知识内容、还有日期工具类

    package com.qf.Service.Impl; 
    import com.qf.DAo.Impl.T_StuDaoImpl; 
    import com.qf.Entity.T_Student;
    import com.qf.Util.DBUtil; 
    import java.util.List; 
    public class T_StuServerImpl { 
        private T_StuDaoImpl sd = new T_StuDaoImpl(); 
        //学生信息添加功能 
        public String stuInsert(T_Student stu) { 
        int i = sd.insert(stu);
        if (i > 0) {
            return "添加成功"; 
        } else { 
            return "添加失败"; 
               } 
    	} 
    	//学生信息删除功能 
    	public String stuDel(int id) { 
            int i = sd.delete(id);
            if (i > 0) { 
                return "删除成功"; 
            } else {
                return "删除失败"; 
            } 
        } 
        // 学生信息修改功能(除学号以外,其他均可修改) 
        public String stuUpdare(T_Student stu,int id){ 
            T_Student stu2 = sd.seleect(id);
            if(stu2 == null){ 
                return "用户不存在";
            } 
            int i = sd.update(stu,id); 
            if(i>0) { 
                return "修改成功"; 
            }else{ 
                return "修改失败"; 
            } 
        } // 学生登录功能 
        public String login(int id,String password){
            if (sd.seleect(id) == null){ 
                return "用户不存在";
            } if(sd.seleect(id).getPassword().equals(password)){ 
                return "登陆成功";
            }else{ 
                return "密码错误"; 
            }
        } 
        // 学生信息查询功能单个学生
        public String stuSelect(int id){ 
            T_Student stu = sd.seleect(id); 
            if(stu != null){
                return "查询到学生信息为" + stu.toString();
            }else{ 
                return "未查询到该学生信息"; 
            } 
        } // 学生信息查询功能所有学生 
        public List stuSelects(){ 
            List<T_Student> stu = sd.selectAll(); 
            if(stu == null){ 
                return null; 
            } 
            return stu;
        } 
    }
    
    package com.qf.DAo.Impl; 
    import com.qf.DAo.dao;
    import com.qf.Entity.T_Student; 
    import com.qf.Util.Daoutil; 
    import com.qf.Util.DateUtil; 
    import com.qf.adv.IMpl.StuMapperImpl; 
    import com.qf.adv.StuMapper;
    import java.sql.Connection; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 
    import java.util.List; 
    public class T_StuDaoImpl implements dao { 
        private Daoutil<T_Student> du = new Daoutil<T_Student>(); 
      
        public int insert(T_Student stu) {
            String sql = "insert into t_student(name,password,sex,borndate,phone)values(?,?,?,?,?)"; 
            return du.commupdate(sql,stu.getName(), stu.getPassword(), stu.getSex(), stu.getBorndate(), stu.getPhone());
        } 
        
        public int delete(int id) { 
            return du.commupdate("delete from t_student where id = ?", id); 
        } 
       
        public int update(T_Student stu,int id) {
            String sql = "update t_student set name = ?,password=?,sex=?,borndate=?,phone = ? where id = ?"; 
            return du.commupdate(sql,stu.getName(),stu.getPassword(),stu.getSex(),stu.getBorndate(),stu.getPhone(),id); 
        } 
      
        public T_Student seleect(int id) { 
            StuMapper<T_Student> sm = new StuMapperImpl(); List<T_Student> l = du.selects("select * from t_student where id = ?",sm,id);
            if(l != null){ 
                return l.get(0); 
     		 } 
            return null;
        } 
       
        public List<T_Student> selectAll() {
            StuMapper<T_Student> sm = new StuMapperImpl(); 
            return du.selects("select * from t_student",sm);
        } 
    }
    
    package com.qf.adv.IMpl;
    import com.qf.Entity.T_Student; 
    import com.qf.adv.StuMapper;
    import java.sql.ResultSet; 
    import java.sql.SQLException;
    public class StuMapperImpl implements StuMapper<T_Student> { 
        public T_Student getRow(ResultSet re) { 
            T_Student stu = null;
            try {
                stu = new T_Student(re.getInt("id"),re.getString("name"),re.getString("password"),re.getString("sex"),re.getDate("borndate"),re.getString("phone"));
            } catch (SQLException e) {
                e.printStackTrace(); 
            } 
            return stu; 
        }
    } 
    
    package com.qf.Util; 
    import com.qf.Entity.T_Student; 
    import com.qf.adv.StuMapper; 
    import java.sql.Connection; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet;
    import java.sql.SQLException; 
    import java.util.ArrayList; 
    import java.util.List; 
    public class Daoutil<T> { 
        public int commupdate(String sql, Object... args) { 
            Connection conn = null; 
            PreparedStatement pre = null; 
            try { 
                conn = DBUtil.getConnection(); 
                pre = conn.prepareStatement(sql); 
                for (int i = 0; i < args.length; i++) { 
                    pre.setObject(i + 1, args[i]); 
                } 
                return pre.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally { 
                DBUtil.close(null, pre, null);
            } return 0; 
        }
        public List<T> selects(String sql, StuMapper<T> sturow,Object... args){ 
            Connection conn = null;
            PreparedStatement pre = null; 
            ResultSet re = null; List<T> list = new ArrayList<T>();
            try {
                conn = DBUtil.getConnection();
                pre = conn.prepareStatement(sql);
                if(args != null) { 
                    for (int i = 0; i < args.length; i++) { 
                        pre.setObject(i + 1, args[i]);
                    } 
                } 
                re = pre.executeQuery(); 
                while(re.next()){
                    T t = sturow.getRow(re); list.add(t);
                } 
            }catch (SQLException e) { 
                e.printStackTrace();
            } finally { 
            } 
            return list; 
        } 
    } 
    
    package com.qf.Util;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    public class DateUtil { 
        private static final SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
        public static java.util.Date strToUtil(String str){ 
            try {
                return sim.parse(str);
            } catch (ParseException e) { 
                e.printStackTrace(); 
            } 
            return null; 
        } 
        public static java.sql.Date utilToSql(java.util.Date jud){ 
            return new java.sql.Date(jud.getTime());
        } 
    } 
    
    package com.qf.Util; 
    import com.sun.xml.internal.ws.org.objectweb.asm.ClassAdapter; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.sql.*; 
    import java.util.Properties;
    public class DBUtil { 
        private static final Properties properties = new Properties();
        private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<Connection>(); 
        static { 
            InputStream is = DBUtil.class.getResourceAsStream("/db.properties"); 
            try {
                properties.load(is); 
                Class.forName(properties.getProperty("driver")); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } 
        } 
        public static Connection getConnection(){ 
            Connection conn = THREAD_LOCAL.get();
            try { 
                if(conn == null){ conn = DriverManager.getConnection(properties.getProperty("url"),properties.getProperty("username"),properties.getProperty("password"));
                                 THREAD_LOCAL.set(conn); 
                                } 
            } catch (SQLException e) { 
                e.printStackTrace();
            } 
            return conn;
        } 
        public static void begin(){ 
            Connection conn = getConnection();
            try { 
                conn.setAutoCommit(false); 
            } catch (SQLException e) { 
                e.printStackTrace(); 
            } 
        } 
        public static void commit(){
            Connection conn = getConnection();
            try { 
                conn.commit();
            } catch (SQLException e) { 
                e.printStackTrace();
            } finally { 
                DBUtil.close(conn,null,null); 
            } 
        } 
        public static void rollback(){ 
            Connection conn = getConnection(); 
            try { 
                conn.rollback();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally { 
                DBUtil.close(conn,null,null); 
            }
        } 
        public static void close(Connection conn, Statement st, ResultSet re){
            try { 
                if(re != null){ 
                    re.close(); 
                } if(st != null){
                    st.close(); 
                } if(conn != null){ 
                    conn.close(); 
                } 
            } 
            catch (SQLException e) {
                e.printStackTrace();
            } 
        } 
    } 
    

    HTML综合案例

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>综合案例</title>
    	</head>
    	<body>
    		<!--头部-->
    		<div>
    			<table width="100%" align="center">
    				<tr>
    					<td align="left">
    						千锋教育-稀有的坚持全程面授品质的大型IT教育机构
    					</td>
    					<td align="right">
    						<a>好程序员特训营&nbsp;&nbsp;</a>
    						<a>JavaEE分布式开发&nbsp;&nbsp;</a>
    						<a>JavaSE核心基础&nbsp;&nbsp;</a>
    						<a>加入我们</a>
    					</td>
    				</tr>
    				<tr>
    					<td>
    						<img src="img/new_logo.png" />
    					</td>
    					<td align="right">
    						<img src="img/nav_r_ico.png" />
    					</td>
    				</tr>
    				<tr>
    					<td colspan="2" align="center">
    						<hr/>
    						<span>首页&nbsp;&nbsp;</span>
    						<span>课程培训&nbsp;&nbsp;</span>
    						<span>教学保障&nbsp;&nbsp;</span>
    						<span>免费视频&nbsp;&nbsp;</span>
    						<span>公开课&nbsp;&nbsp;</span>
    						<span>企业合作&nbsp;&nbsp;</span>
    						<span>就业喜报&nbsp;&nbsp;</span>
    						<span>学员天地&nbsp;&nbsp;</span>
    						<span>关于千锋&nbsp;&nbsp;</span>
    						<span>加入我们</span>
    						<hr />
    					</td>
    				</tr>
    				<tr>
    					<td colspan="2" align="right">
    						首页>课程培训>JavaEE列表
    					</td>
    				</tr>
    			</table>
    		</div>
    		<!--中间部分-->
    		<div>
    			<table>
    				<tr>
    					<td>
    						<h3>课程培训</h3>
    						<h4>共108种课程内容</h4>
    					</td>
    				</tr>
    				<tr>
    					<td>
    						<hr />
    						<img src="img/001.png" />
    					</td>
    				</tr>
    			</table>
    			<table align="center" width="100%">
    				<tr align="center">
    					<td>
    						<img src="img/002.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/003.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/004.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/005.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/006.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    				</tr>
    				<tr align="center">
    					<td>
    						<img src="img/007.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/008.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/009.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/010.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    					<td>
    						<img src="img/011.png" /><br />
    						<div align="center">书名:XXX</div>
    						<div align="center">售价:180</div>
    					</td>
    				</tr>
    			</table>
    		</div>
    		<!--底部-->
    		<div>
    			<table width="90%" align="center">
    				<tr>
    					<td><img src="img/012.png" /></td>
    				</tr>
    			</table>	
    		</div>
    	</body>
    </html>
    
    展开全文
  • 数据库系统设计综合实验 实验要求 假设有“教师”、“学生”、“课程”三个...系统包含两类用户,即管理员和学生管理登录系统后具有如下功能: ① 维护(添加、删除和修改等基本任务)学生基本信息、教师基本信息和

    C#& winform 学生信息管理系统

    实验报告下载

    三份实验报告都有
    链接: link

    关于实验

    建议先看老师发的视频(老师说不方便外传,这里就不发了),到某站搜c#学生信息管理系统,了解一下基本操作
    重要部分源码在实验报告和文章里面都有,现在已经被我改的面目全非了
    实验软件:
    vs 2019
    sql server
    Oracle 11g
    Visio(画流程图、E-R图)
    Navicat Premium 15(自动生成表间关系图)

    实验要求

    假设有“教师”、“学生”、“课程”三个实体,教师的基本信息包括:工号、姓名、职称、工资,课程的基本信息包括:课程号、课程名、学分数,学生的基本信息包括:学号、姓名、性别、年龄。系统必须满足以下要求:

    1. 一门课程只能有一个教师任课,一个教师可以上多门课程;
    2. 一个学生可以选修多门课程,一门课程可以由多个学生来选修,记录不同学生选修不同课程的成绩;
    3. 系统包含两类用户,即管理员和学生,管理员登录系统后具有如下功能:
      ① 维护(添加、删除和修改等基本任务)学生基本信息、教师基本信息和课程基本信息等工作;
      ② 管理员可以为学生重置密码;
      ③ 当学生选修了某门课程,课程成绩由管理员录入;
      ④ 能够统计不同职称的教师的数量、不同职称的教师的平均工资,可以统计每门课程的平均成绩、最高分、最低分;统计每个学生选修课程的总学分;
      ⑤ 修改密码和个人基本信息。
    4. 学生利用学号和密码登录系统后具有如下功能:
      ① 修改密码和个人基本信息;
      ② 选修课程、退选课程;
      ③ 查询选修课程的成绩;
      ④ 统计全部选修课程以及已经完成的(即60分以上)选修课程的总学分。

    根据上述描述,解答下列问题:

    1. 设计并画出E-R图,要求标注连通词(即联系类型);
    2. 将E-R图转化为关系模型,并指出各关系的主码和外码;
    3. 在MySql、SQL Server、Oracle中选择一个数据库管理系统,并设计数据库的物理结构;
    4. 选择一门熟悉的面向对象程序设计语言,完成系统开发。
      注:实验报告最低要求必须包括以下内容:
      (1)E-R图;
      (2)转变为关系模型得到的关系模式,即逻辑结构设计;
      (3)相关表的SQL语句,包括创建表的语句、创建相关视图的语句、创建相关索引的语句等。

    对于完成开发的同学,实验报告应该包括主要界面的功能测试(需要截图)以及相关的实现代码。

    实验报告内容

    在这里插入图片描述

    1.系统需求分析阶段

    1.1需求分析

    本次系统开发选取学生信息管理为主题,学生信息对于学校进行管理和调度具有十分重要的作用和价值。该系统的设计开发主要为学校对学生进行统一管理提供信息化的方法。
    另外,此学生信息管理系统记录了学生的基本信息及其相关的课程等信息,学生通过这个学生信息管理系统可以很方便地编辑,浏览以及查询学生和老师的基本信息情况。学校也可以通过这个系统便捷地管理学生的数据信息。

    1.2 功能设计

    (这里就是题目里的功能要求,然后我画了一个流程图)

    系统功能流程图如下:
    系统中共有三类用户,用户登录后先判断其身份,
    若为管理员,则可以使用维护(添加、删除和修改等基本任务)学生基本信息、教师基本信息和课程基本信息、重置密码、录入课程成绩、统计不同职称的教师的数量、不同职称的教师的平均工资、统计每门课程的平均成绩、最高分、最低分、统计每个学生选修课程的总学分等功能;
    若为学生,则可使用修改密码和个人基本信息、选修课程、退选课程、查询成绩、统计全部选修课程以及已经完成的(即60分以上)选修课程的总学分等功能;
    若为老师,则可以使用查看个人信息等功能,

    待用户操作结束后退出系统,流程停止

    在这里插入图片描述

    1.3 数据字典

    1.3.1 数据项

    在这里插入图片描述

    2.概念结构设计

    2.1 实体及其属性

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.2 全局E-R模型

    该模型中的实体有:学生、教师、课程
    实体间联系有:

    1. 一门课程只能有一个教师任课,一个教师可以上多门课程,课程与教师之间发生一对多联系;
    2. 一个学生可以选修多门课程,一门课程可以由多个学生来选修,课程与学生之间发生多对多联系。

    在这里插入图片描述

    3.逻辑结构设计

    3.1 表间关系分析

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里用数据库建好表之后连接到Navicat Premium 15,自动生成表间关系图在这里插入图片描述

    3.2 关系模式

    在这里插入图片描述

    3.3 关系用户子模式

    在这里插入图片描述
    在这里插入图片描述

    4.物理结构设计

    4.1 数据库存储结构

    在Orale数据库中不同类型的数据文件,数据文件是真实存在的,数据库为数据库中的所有数据,分配逻辑数据库空间。数据库空间分配的单位是数据块、区段和段。由很多块组成区,很多区组成段,很多段组成表空间。Oracle数据库至少由两个称为表空间的逻辑存储单元组成,它们共同存储数据库的所有数据。必须拥有SYSTEM和SYSAUX表空间,一个表空间由一个或多个名为datafiles的数据文件组成,这些文件是Oracle数据库运行的操作系统上的物理结构文件。数据是存储在组成数据库的每个表空间的数据文件的。

    4.2 评价物理结构

    freespace空闲空间可以自动管理,也可以手动管理,空闲空间在数据库段内自动管理。段内空闲/使用的空间使用位图跟踪,而不是使用空闲列表。自动分段空间管理提供了更好的空间利用率,特别是对于行大小差异很大的对象;更好地对并发访问中的变化进行运行时调整(并发:一个表能被多个用户使用)
    在性能/空间利用率方面,能更好的多实例行为(在创建本地管理的表空间时,指定自动分段空间管理。然后,该规范应用于随后在这个表空间中创建的所有段)。

    5.数据库的实施

    5.1 数据库软件

    本次实验使用相关软件为:
    Oracle 11g,Visual studio 2019,SQL server

    5.2 相关SQL语句

    5.2.1 创建表的语句

    
    create table student
    (
    sno varchar2(10) primary key,
    sname varchar2(20) not null unique,
    ssex char(3) check(ssex in('男','女')),
    sage smallint not null,
    pwd varchar(20) not null
    );
    
    create table teacher
    (
    tno varchar(7) primary key,
    tname varchar(20) not null unique,
    tposition varchar(20) not null,
    tsalary smallint not null,
    pwd varchar(20) not null
    );
    
    create table course
    (
    cno varchar(4) primary key,
    cname varchar(40) not null unique,
    ccredit smallint not null,
    tno varchar(7) not null,
    foreign key (tno) references teacher(tno)
    );
    
    create table sc
    (
    sno varchar(10) not null,
    cno varchar(4) not null,
    grade smallint not null,
    primary key(sno,cno),
    foreign key (sno) references student(sno),
    foreign key (cno) references course(cno)
    );
    

    5.2.2 插入数据

    insert into student(sname,ssex,sno, sage, pwd) values('哈拉木吉','男','1906300158',20,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('赵四','男','1906300020',19,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('lily','女','1906300195',18,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('薇薇','男','1906300140',19,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('欣欣子','女','1906300152',19,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('shy','男','1906300121',20,'123456');
    insert into student(sname,ssex,sno, sage, pwd) values('哞哞','女','1906300151',19,'123456');
    
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t001','梁老师','教授',20000,'123456');
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t002','谭乔','副教授',15000,'123456');
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t003','明世隐','教授',35000,'123456');
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t004','树梢','副教授',38000,'123456');
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t005','周瑜','副教授',42000,'123456');
    insert into teacher(tno,tname, tposition, tsalary, pwd) values('t006','小乔','教授',60000,'123456');
    
    insert into course values('6','数值分析',2,'t001');
    insert into course values('2','高等数学',4,'t002');
    insert into course values('7','C++语言',4,'t003');
    insert into course values('5','数据结构',4,'t004');
    insert into course values('1','数据库',4,'t003');
    insert into course values('3','汇编语言',3,'t006');
    insert into course values('4','操作系统',3,'t005');
    insert into course values('8','通往二仙桥的路',3,'t002');
    insert into course values('9','b站、微博哪个更好玩',4,'t003');
    
    insert into sc values('1906300158','1',92);
    insert into sc values('1906300158','2',85);
    insert into sc values('1906300158','3',88);
    insert into sc values('1906300020','2',90);
    insert into sc values('1906300020','3',81);
    insert into sc values('1906300195','4',60);
    insert into sc values('1906300195','5',98);
    insert into sc values('1906300140','5',60);
    insert into sc values('1906300140','7',90);
    insert into sc values('1906300152','8',95);
    insert into sc values('1906300152','2',87);
    
    select * from student;
    select * from course;
    select * from teacher;
    select * from sc;
    
    
    

    5.2.3 创建相关视图

    create view courseinfo as select course.cno 课程编号,course.cname 课程名称,teacher.tname 任课老师,course.ccredit 课程学分,countnum 选修人数,
    avg_grade 平均分,max_grade 最高分,min_grade 最低分 from teacher,
    course left outer join (select cname, count(*) countnum,avg(grade) avg_grade,max(grade) max_grade,min(grade) min_grade from sc,course 
    where course.cno=sc.cno group by cname)a1 on (course.cname=a1.cname) where teacher.tno=course.tno;
    
    create view studentinfo as select student.sno 学号,student.sname 姓名,(select sum(grade) from sc where sno=student.sno) 总分 ,
    (select sum(ccredit) from course where cno in (select cno from sc where sno=student.sno)) 总学分 ,
    (select max(grade) from sc where sc.sno in (student.sno)) 最高分,(select min(grade) from sc where sc.sno in (student.sno)) 最低分 from student;
    
    create view teacherinfo as select tposition 职位,count(tno) 在任人数,avg(tsalary) 平均工资 from teacher group by tposition;
    
    select * from studentinfo;
    select * from courseinfo;
    select * from teacherinfo1;
    select * from teacherinfo2;
    
    commit;
    

    5.3 实现源码及运行截图

    (这里我插一个嘴,连接的时候如果连不上的话把host=后面换成自己的IP地址,user id 填用sys创建的的用户名)

    // strCon
    Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id = ssunkia;Password = ssunkiapwd
    

    登录:

    //FrmLogin.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class FrmLogin : Form
    
        {
    
            public static string loginName = null; 
            public FrmLogin()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string username = tbUsername.Text;
                string pwd = tbPwd.Text;
                //string sql = string.Format("select * from student where sno='{0}' and pwd='{1}'", this.tbUsername.Text, this.tbPwd.Text);
                //消除sql语句--注释符号的影响
                string sql = "select sno,sname from student where sno=:sno and pwd=:pwd";
    
                OracleParameter[] para = new OracleParameter[]
                {
                    new OracleParameter(":sno",OracleDbType.Varchar2,10),
                    new OracleParameter(":pwd",OracleDbType.Varchar2,20)
                };
                para[0].Value = username;
                para[1].Value = pwd;
                
                OracleConnection con = new OracleConnection(Program.strCon);
             
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    cmd.Parameters.AddRange(para);
                    OracleDataReader odr = cmd.ExecuteReader();
                    if (odr.Read())
                    {
                       loginName = odr.GetString(0);
                       DialogResult = DialogResult.OK;
                        MessageBox.Show("登录成功!");
                       this.Close();
                    }
                    else
                        MessageBox.Show("登陆失败,账号或密码错误!");
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
            }
    
            private void radioButton1_CheckedChanged(object sender, EventArgs e)
            {
    
            }
    
            private void radioButton2_CheckedChanged(object sender, EventArgs e)
            {
    
            }
        }
    }
    
    

    (比较粉嫩,不喜勿喷)

    学生信息查询、删除

    //FrmStuQuery.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class FrmStuQuery : Form
        {
            public FrmStuQuery()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string sql = string.Format("select sno,sname,sage,ssex,pwd from student where sname like '{0}%'", textBox1.Text);
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    OracleDataReader odr = cmd.ExecuteReader();
                    if (odr.HasRows)
                    {
                        BindingSource bs = new BindingSource();
                        bs.DataSource = odr;
                        dataGridView1.DataSource = bs;
                    }
                    else dataGridView1.DataSource = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count == 0) return;
                if (MessageBox.Show("是否删除数据?", "请确认信息", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                    return;
                DataGridViewRow row = dataGridView1.SelectedRows[0];
                string sno = row.Cells[0].Value.ToString();
                string sql = string.Format("delete from student where sno='{0}'", sno);
                OracleConnection con = new OracleConnection(Program.strCon);
                try
                {
    
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("删除成功!");
                        dataGridView1.Rows.Remove(row);
                    }
                    else
                        MessageBox.Show("没有找到对应学生!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
            }
    
            private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.SelectedRows.Count == 0) return;
               
                FrmStuUpdate frm = new FrmStuUpdate();
                DataGridViewRow row = dataGridView1.SelectedRows[0];
    
                frm.tbSno.Text = row.Cells[0].Value.ToString();
                frm.tbSname.Text = row.Cells[1].Value.ToString();
                frm.tbSage.Text = row.Cells[2].Value.ToString();
                frm.tbSsex.Text = row.Cells[3].Value.ToString();
                frm.tbpwd.Text = row.Cells[4].Value.ToString();
                frm.ShowDialog(this);
            }
    
            private void label1_Click(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
        }
    }
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    学生信息修改

    //FrmStuUpdate.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class FrmStuUpdate : Form
        {
            public FrmStuUpdate()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                string sql = string.Format("update student set sname='{0}',ssex='{1}',sage={2},pwd='{3}' where sno='{4}'", tbSname.Text, tbSsex.Text, tbSage.Text,tbpwd.Text,tbSno.Text);
    
    
    
                OracleConnection con = new OracleConnection(Program.strCon);
                try
                {
    
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("修改成功!");
                        this.Close();
                    }
                    else
                        MessageBox.Show("没有找到对应学生!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
    
            }
        }
    }
    
    

    在这里插入图片描述

    学生信息插入

    //FrmStuInsert.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class FrmStuInsert : Form
        {
            public FrmStuInsert()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string sql = string.Format("Insert into student(sno,sname,ssex,sage,pwd) values('{0}','{1}','{2}','{3}','{4}')", tbSno.Text, tbSname.Text, tbSsex.Text, tbSage.Text, tbpwd.Text);
                OracleConnection con = new OracleConnection(Program.strCon);
               
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("插入成功!");
                    }
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
            }
        }
    }
    
    

    在这里插入图片描述

    课程信息查询、删除

    //FrmCourseQuery.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace db_yj
    {
        public partial class FrmCourseQuery : Form
        {
            public FrmCourseQuery()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    this.dataGridView1.DataSource = Course.SelectCourse(this.textBox1.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex < 0) return;
                DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
                Course c = (Course)row.DataBoundItem;
                try
                {
                    if (e.ColumnIndex == 4)
                    {
                        if (MessageBox.Show("确认删除?", "请确认信息", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
                        if (Course.DeleteCourse(c.Cno) == 1)
                            MessageBox.Show("删除成功!");
                        else MessageBox.Show("没有找到对应课程!");
    
                    }
                    else if (e.ColumnIndex == 5)
                    {
                        FrmCourseUpdate frm = new FrmCourseUpdate();
                        frm.tbCno.Text = c.Cno;
                        frm.tbCname.Text = c.Cname;
                        frm.tbCcredit.Text = c.Ccredit.ToString();
                        frm.tbTno.Text = c.tno;
                        frm.ShowDialog(this);
    
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
            }
        }
    }
    
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    课程信息修改

    //FrmCourseUpdate.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace db_yj
    {
        public partial class FrmCourseUpdate : Form
        {
            public FrmCourseUpdate()
            {
                InitializeComponent();
            }
    
            private void label1_Click(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Course c = new Course();
                c.Cno = tbCno.Text;
                c.Cname = tbCname.Text;
                c.Ccredit = Convert.ToInt32(tbCcredit.Text);
                c.tno = tbTno.Text;
                try
                {
                    if (Course.UpdateCourse(c) == 1)
                    {
                        MessageBox.Show("修改成功!");
                        this.Close();
    
                    }
                    else
                    {
                        MessageBox.Show("没有找到对应课程!");
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
    
    

    在这里插入图片描述

    课程信息插入

    //FrmCourseInsert.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace db_yj
    {
        public partial class FrmCourseInsert : Form
        {
            public FrmCourseInsert()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Course c = new Course();
                c.Cno = tbCno.Text;
                c.Cname = tbCname.Text;
                c.Ccredit = Convert.ToInt32(tbCcredit.Text);
                c.tno = tbTno.Text;
                try
                {
                    Course.InertCourse(c);
                    MessageBox.Show("插入成功!");
                   
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
            }
        }
    }
    
    

    在这里插入图片描述

    统计每个学生总分、最高分、最低分、总学分
    统计每门课程选修人数、最高分、最低分、平均分
    统计每名教师授课学生总人数
    统计教师不同职称的教师的数量、不同职称的教师的平均工资

    //FrmStatistics.cs
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class FrmStatistics : Form
        {
            public FrmStatistics()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                string sql = "select * from studentinfo";
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    OracleDataReader odr = cmd.ExecuteReader();
                    if (odr.HasRows)
                    {
                        BindingSource bs = new BindingSource();
                        bs.DataSource = odr;
                        dataGridView1.DataSource = bs;
                    }
                    else dataGridView1.DataSource = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                
                string sql = "select * from teacherinfo1";
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    OracleDataReader odr = cmd.ExecuteReader();
                    if (odr.HasRows)
                    {
                        BindingSource bs = new BindingSource();
                        bs.DataSource = odr;
                        dataGridView1.DataSource = bs;
                    }
                    else dataGridView1.DataSource = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
               
    
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
    
                string sql = "select * from Courseinfo";
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    OracleDataReader odr = cmd.ExecuteReader();
                    if (odr.HasRows)
                    {
                        BindingSource bs = new BindingSource();
                        bs.DataSource = odr;
                        dataGridView1.DataSource = bs;
                    }
                    else dataGridView1.DataSource = null;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
    
            }
    
            private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
    
            }
        }
    }
    
    

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    窗口显示欢迎语:

    //mainfrm.cs
    
            private void mainfrm_Load(object sender, EventArgs e)
            {
                this.Text = "你好," + FrmLogin.loginName + ",欢迎登录信息管理系统!";
            }
    

    在这里插入图片描述
    附:

    //mainfrm.cs
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public partial class mainfrm : Form
        {
            public mainfrm()
            {
                InitializeComponent();
            }
    
            private void 查询学生ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmStuQuery frm = new FrmStuQuery();
                frm.MdiParent = this;
                frm.Show();
            }
    
            private void 添加学生ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmStuInsert frm = new FrmStuInsert();
                frm.MdiParent = this;
                frm.Show();
            }
    
            private void 课程管理ToolStripMenuItem_Click(object sender, EventArgs e)
            {
    
            }
    
            private void 查询课程ToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                FrmCourseQuery frm = new FrmCourseQuery();
                frm.MdiParent = this;
                frm.Show();
            }
    
            private void 添加课程ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmCourseInsert frm = new FrmCourseInsert();
                frm.MdiParent = this;
                frm.Show();
            }
    
            private void 统计信息ToolStripMenuItem_Click(object sender, EventArgs e)
            {
    
            }
    
            private void 统计基本信息ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmStatistics frm = new FrmStatistics();
                frm.MdiParent = this;
                frm.Show();
            }
    
            private void mainfrm_Load(object sender, EventArgs e)
            {
                this.Text = "你好," + FrmLogin.loginName + ",欢迎登录信息管理系统!";
            }
                /*
                 xxx.visible = false;
                 
                 
                 
                 */
            
    
            private void 查询教师ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FrmTeacherQuery frm = new FrmTeacherQuery();
                frm.MdiParent = this;
                frm.Show();
            }
        }
    }
    
    
    //course.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Oracle.ManagedDataAccess.Client;
    
    namespace db_yj
    {
        public class Course
        {
            public string Cno { get; set; }
            public string Cname { get; set; }
            public int Ccredit { get; set; }
            public string tno { get; set; }
    
            public static List<Course> SelectCourse(string cname)
            {
                string sql = "select cno,cname,ccredit,tno from Course where cname like:cname";
                OracleParameter[] para = new OracleParameter[] { new OracleParameter(":cname", OracleDbType.Varchar2, 40) };
                para[0].Value = cname + "%";
                List<Course> list = new List<Course>();
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    cmd.Parameters.AddRange(para);
                    OracleDataReader odr = cmd.ExecuteReader();
                    while (odr.Read())
                    {
                        Course c = new Course();
                        c.Cno = odr.GetString(0);
                        c.Cname = odr.GetString(1);
                        c.Ccredit = odr.GetInt32(2);
                        c.tno = odr.GetString(3);
                        list.Add(c);
    
                    }
                }
                finally
                {
                    con.Close();
                }
                return list;
            }
    
            public static int DeleteCourse(string cno)
            {
                int result = 0;
                string sql = "delete from course where cno=:cno";
                OracleParameter[] para = new OracleParameter[] { new OracleParameter(":cno", OracleDbType.Varchar2, 4) };
                para[0].Value = cno;
                OracleConnection con = new OracleConnection(Program.strCon);
    
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    cmd.Parameters.AddRange(para);
                    result = cmd.ExecuteNonQuery();
                }
                finally
                {
                    con.Close();
                }
                return result;
            }
    
            public static int UpdateCourse(Course c)
            {
                int result = 0;
                string sql = "update course set cno=:cno,Cname=:Cname,Ccredit=:Ccredit,tno=:tno where cno=:cno";
                OracleParameter[] para = new OracleParameter[]
                { 
                    new OracleParameter(":Cno", OracleDbType.Varchar2, 4),
                    new OracleParameter(":Cname", OracleDbType.Varchar2, 40),
                    new OracleParameter(":Ccredit", OracleDbType.Int32), 
                    new OracleParameter(":tno", OracleDbType.Varchar2, 7) 
                };
                para[0].Value = c.Cno;
                para[1].Value = c.Cname;
                para[2].Value = c.Ccredit;
                para[3].Value = c.tno;
    
                OracleConnection con = new OracleConnection(Program.strCon);
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    cmd.Parameters.AddRange(para);
                    result = cmd.ExecuteNonQuery();
                }
                finally
                {
                    con.Close();
                }
                return result;
            }
    
            public static int InertCourse(Course c)
            {
                int result = 0;
                string sql = "insert into course(Cno,Cname,Ccredit,tno) values(:Cno,:Cname,:Ccredit,:tno)";
                OracleParameter[] para = new OracleParameter[] 
                { 
                    new OracleParameter(":Cno", OracleDbType.Varchar2, 4), 
                    new OracleParameter(":Cname", OracleDbType.Varchar2, 40), 
                    new OracleParameter(":Ccredit", OracleDbType.Int32, 38), 
                    new OracleParameter(":tno", OracleDbType.Varchar2, 7) 
                };
                para[0].Value = c.Cno;
                para[1].Value = c.Cname;
                para[2].Value = c.Ccredit;
                para[3].Value = c.tno;
                OracleConnection con = new OracleConnection(Program.strCon);
     
                try
                {
                    con.Open();
                    OracleCommand cmd = new OracleCommand(sql, con);
                    cmd.Parameters.AddRange(para);
                    result = cmd.ExecuteNonQuery();
                }
    
                finally
                {
                    con.Close();
                }
                return result;
            }
    
    
    
        }
    
    }
    
    

    6.数据库的运行和维护

    6.1 数据库的转储和恢复

    数据库的转储与恢复是系统正式运行后最重要的维护工作之一。

    6.2 数据库的安全性、完整性控制

    在数据库运行过程中,由于应用环境的变化,对安全性的要求也会发生变化,系统中用户的密级也会改变,需要数据库管理员不断修正以满足用户要求。

    6.3 数据库性能的监督、分析和改造

    在数据库运行过程中,监督系统运行,对监测数据进行分析。

    6.4数据库的重组织与重构造

    数据库运行一段时间后,由于记录不断增删改,将会使数据库的物理存储情况变坏,降低数据的存取效率,使数据库性能下降,这时数据库管理员就要对数据库进行重组织或部分重组织(只对频繁增、删的表进行重组织)。关系数据库管理系统一般都提供数据重组织的实用程序,在重组织过程中,按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系统性能。

    7.实验总结

    实验还有很多未解决的问题,在统计的过程中,在sql中视图显示正常,dataGridvView1中无法正常输出,全部转换成类,然后导入dataGridView1中,才可以输出;由于没有单独创建管理员类,管理员登录时只能特判;没有考虑输入数据是空值的情况,容易出错;没有修改创建学生类,在执行sql语句时容易出错;没有实现学生选课功能。
    通过本次实验,了解概念结构设计的基本方法,理解逻辑结构设计的基本方法,理解物理结构设计的基本方法,对数据库的设计有了初步的认识。在老师教学视频的帮助下,成功的运用在VS2019的编译环境下用C#语言编写了一个学生信息管理数据库系统,该系统在查询,添加,修改,删除信息的时候会连接数据库,提高了数据的存储和查询的效率。在完成实验报告的基本要求后,为了管理系统的界面友好,又添加控件管理以及个人中心等功能。在完成本次综合实验的过程中,实验从一开始束手无策到逐渐成形,感谢老师对我们的认真指导和教诲,
    希望时间充裕时可以进一步完善。

    有问题的地方请多多指教~

    展开全文
  • **名称:**计算机类2020级学生成绩管理系统 **功能:**用户登录、注册、密码修改,退出 学生信息的录入、查询(按学号、按姓名)、 排序(按学号、按姓名字典顺序、按总分)、修改、删除 源代码 #include <stdio....

    名称:计算机类2020级学生成绩管理系统
    功能实现:用户登录、注册、密码修改,退出
    学生信息的录入、查询(按学号、按姓名)、
    排序(按学号、按姓名字典顺序、按总分)、修改、删除

    源代码

    (非独立完成,小组合作结果)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    #include <windows.h>
    
    typedef struct Student
    {
    	char ID[20];
    	char name[20];
    	double Mc;
    	double Ec;
    	double Cc;
    	double Sc;
    	double stusum;
    }student;
    
    typedef struct Denglu
    {
    	char account[7];
    	char password[7];
    }denglu;
    
    void welcome();//欢迎界面
    void BeginMeau1();//开始菜单1 
    void signin();//用户登录
    void signup();//用户注册
    void BeginMeau2();//开始菜单2
    void changepassword();//密码修改(登陆后)
    void MainMeau();//主菜单
    void InputInformation();//录入成绩
    void inquiry();//主菜单->查询成绩 
    void sort();//主菜单->成绩排序
    void amend();//主菜单->信息修改
    void delet();//主菜单->信息删除 
    void quit();//退出界面
     
    
    int main()
    {
    	system("color FD");
    	welcome();
    	return 0;
    }
    
    void welcome()//欢迎界面 
    {
    	printf("\n");
    	printf("\n");
    	printf("\n");
    	printf("\t\t*******************ooOoo******************\n");
    	printf("\t\t#\t\t\t\t\t #\n");
    	printf("\t\t#\t!欢迎使用学生信息管理系统!\t #\n");
    	printf("\t\t#\t\t\t\t\t #\n");
    	printf("\t\t******************************************\n");
    	printf("\n");
    	printf("\n");
    	printf("\n");
    
    	system("pause");
    	BeginMeau1();
    }
    
    void BeginMeau1()//开始菜单1 
    {
    	int n;
    	do//开始菜单1界面 
    	{
    		system("cls");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇\t\t\t开始菜单\t\t\t◇\n");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t\t★1-----登录\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t★2-----注册\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t\t★3-----退出系统\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    		printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
    		printf("\t\t\t\t 您的选择是:");
    		fflush(stdin);
    		scanf("%d", &n);
    		if (n != 1 && n != 2 && n != 3)
    		{
    			printf("无效输入!请重新输入!\n");
    			system("pause");
    		}
    		else
    		{
    			continue;
    		}
    	} while (n != 1 && n != 2 && n != 3);
    	if (n == 1)
    	{
    		signin();//登录 
    	}
    	else if (n == 2)
    	{
    		signup();//注册 
    	}
    	else if (n == 3)
    	{
    		quit();//退出系统 
    	}
    }
    
    void signin()//用户登录
    {
    	system("cls");
    	denglu a;
    	int i,j;
    	printf("请输入6位账号:");
    	for(i=0;i<6;i++)
    	{
    		a.account[i]=getche();
    	}
    	a.account[i] = '\0';
    	printf("\n");
    	printf("请输入6位密码:");
    	for(i=0;i<6;i++)
    	{
    		a.password[i]=getch();
    		printf("*");
    	}
    	a.password[i] = '\0';
    	denglu s[10];
    	FILE *fp = fopen("D://dengluxinxi.txt","r");
    	for(i=0;!feof(fp);i++)
    	{
    		fread(&s[i],sizeof(denglu),1,fp);
    	}
    	fclose(fp);
    	j = i;
    	int flag=0;
    	for(i=0;i<j-1;i++)
    	{
    		if(strcmp(a.account,s[i].account)==0)
    		{
    			if(strcmp(a.password,s[i].password)==0)
    			{
    				flag = 1;
    			}
    		}
    	}
    	if(flag==1)
    	{
    		printf("\n\n欢迎回来,");
    		for(i=0;i<6;i++)
    		{
    			printf("%c",a.account[i]);
    		}
    		printf("!");
    		Sleep(500);
    		printf("\n为您跳转开始界面...");
    		Sleep(1000);
    		BeginMeau2();
    	}
    	else
    	{
    		system("cls");
    		printf("\n\n");
    		printf("\t\t****************************\n");
    		printf("\t\t对不起,您输入的账号密码有误\n");
    		printf("\t\t为确保安全,请系统将自动退出\n");
    		printf("\t\t****************************\n");
    		Sleep(3000);
    		quit();
    	}
    }
    
    void signup()//用户注册
    {
    	FILE *fp;
    	denglu a;
    	int i;
    	fp = fopen("D://dengluxinxi.txt","a");
    	printf("请输入注册的6位账号:");
    	for(i=0;i<6;i++)
    	{
    		a.account[i]=getche();
    	}
    	a.account[i] = '\0';
    	printf("\n");
    	printf("请输入注册的6位密码:");
    	for(i=0;i<6;i++)
    	{
    		a.password[i]=getch();
    		printf("*");
    	}
    	a.password[i] = '\0';
    	fwrite(&a,sizeof(denglu),1,fp);
    	fclose(fp);
    	printf("\n\n注册成功!\n");
    	printf("为您跳转登陆界面!......");
    	Sleep(500);
    	signin();
    }
    
    void BeginMeau2()//开始菜单2
    {
    	int n;
    	do//开始菜单2界面 
    	{
    		system("cls");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇\t\t开始菜单\t\t◇\n");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t★1-----进入系统\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t★2-----修改密码\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t★3-----退出系统\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    		printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
    		printf("\t\t\t\t 您的选择是:");
    		fflush(stdin);
    		scanf("%d", &n);
    		if (n != 1 && n != 2 && n != 3)
    		{
    			printf("无效输入!请重新输入!\n");
    			system("pause");
    		}
    		else
    		{
    			continue;
    		}
    	} while (n != 1 && n != 2 && n != 3);
    
    	if (n == 1)
    	{
    		MainMeau();//功能主菜单 
    	}
    	if(n == 2)
    	{
    		changepassword();//修改密码 
    	}
    	else if (n == 3)
    	{
    		quit();//退出系统 
    	}
    }
    
    void changepassword()//密码修改(登陆后) 
    {
    	system("cls");	
    	denglu s[10];
    	denglu a;
    	int j,i,k;
    	FILE *fp = fopen("D://dengluxinxi.txt","r");
    	FILE *ftemp;
    	for(i=0;!feof(fp);i++)
    	{
    		fread(&s[i],sizeof(denglu),1,fp);
    	}
    	fclose(fp);
    	j = i;
    	printf("请输入你要修改密码的账号:");
    	for(i=0;i<6;i++)
    	{
    		a.account[i]=getche();
    	}
    	a.account[i] = '\0';
    	int index;
    	for(i=0;i<j-1;i++)
    	{
    		if(strcmp(a.account,s[i].account)==0)
    		{
    			index = i;
    			break;
    		}
    	}
    	if(i == j-1)
    	{
    		printf("\n找不到该账号,请重新输入\n");
    		Sleep(1500);
    		changepassword();
    	}
    	printf("\n请输入修改的密码:");
    	for(i=0;i<6;i++)
    	{
    		a.password[i]=getche();
    	}
    	a.password[i] = '\0';
    	
    	strcpy(s[index].password,a.password);
    	ftemp=fopen("D://tempdengluxinxi.txt","w");
    	for (k=0;k<j-1;k++)
    	{
    		fwrite(&s[k],sizeof(denglu),1,ftemp);
    	}
    	fclose(ftemp);
    	remove("D://dengluxinxi.txt");
    	rename("D://tempdengluxinxi.txt", "D://dengluxinxi.txt");
    	printf("\n修改成功!");
    	Sleep(1000);
    	signin();
    }
    
    void MainMeau()//主菜单 
    {
    	int n;
    	do
    	{
    		system("cls");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇\t\t欢迎使用学生成绩管理系统\t\t◇\n");
    		printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    		printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    		printf("\t\t\t\t◆\t\t★1-----录入成绩\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t★2-----修改成绩\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t★3-----查询成绩\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t★4-----排序成绩\t\t\t◇\n");
    		printf("\t\t\t\t◆\t\t★5-----删除成绩\t\t\t◆\n");
    		printf("\t\t\t\t◇\t\t★6-----退出\t\t\t\t◇\n");
    		printf("\t\t\t\t◆∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◆\n");
    		printf("\t\t\t\t 您的选择是:");
    		fflush(stdin);
    		scanf("%d", &n);
    		if (n != 1 && n != 2 && n != 3 && n != 4 && n != 5 && n != 6 && n != 7)
    		{
    			printf("无效输入!请重新输入!\n");
    			system("pause");
    		}
    		else
    		{
    			continue;
    		}
    
    	} while (n != 1 && n != 2 && n != 3 && n != 4 && n != 5 && n != 6 && n != 7);
    	switch (n)
    	{
    	case 1:
    		InputInformation();
    		break;
    	case 2:
    		amend();
    		break;
    	case 3:
    		inquiry();
    		break;
    	case 4:
    		sort();
    		break;
    	case 5:
    		delet();
    	case 6:
    		quit();
    	default:
    		;
    	}
    }
    
    void InputInformation()//主菜单->录入成绩 
    {
    	int n;
    	do
    	{	
    		system("cls");
    		printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
    		printf("\t\t\t│\t\t\t录入成绩\t\t\t│\n");
    		printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
    		printf("\t\t\t│\t\t1.首次录入\t\t\t\t│\n");
    		printf("\t\t\t│\t\t2.添加成绩\t\t\t\t│\n");
    		printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
    		printf("\t\t\t│\t\t\t\t\t\t\t│\n");
    		printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
    		printf("\t\t\t请选择:"); 
    		fflush(stdin);
    		scanf("%d",&n) ;
    	}while(n!=1&&n!=2&&n!=3);
    	if(n==1)
    	{
    		//InputInformation();
    		system("cls");
    		int i,n,y,k; 
    		int flag;
    		char id[20]; 
    		double sum;
    		FILE * fp;
    		printf("\t\t\t请输入本次录入人数:");
    		fflush(stdin);
    		scanf("%d",&n);
    		
    		student stu[60];
    		
    		for(i=0;i<n;i++)
    		{ 								
    			do
    			{		
    				printf("\n\t\t\t请输入第%d名学生学号:",i+1);
    				fflush(stdin);
    				scanf("%s",id);
    				for(k=0;k<n;k++)
    					{
    						y=strcmp(id,stu[k].ID);
    						if(y==0)
    						{
    							printf("\t\t\t学号重复!");			
    							break;
    						}
    						else
    						continue;			
    					}				
    			}while(y==0);			
    			if(k==n)
    			{
    					strcpy(stu[i].ID,id);		
    			}
    			fflush(stdin);
    			printf("\t\t\t请输入第%d名学生姓名:",i+1);
    			scanf("%s",stu[i].name);
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入第%d名数学成绩:",i+1);
    				flag=scanf("%lf",&stu[i].Mc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Mc)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入第%d名英语成绩:",i+1);
    				flag=scanf("%lf",&stu[i].Ec);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Ec)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入第%d名学生C语言成绩:",i+1);
    				flag=scanf("%lf",&stu[i].Cc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Cc)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入第%d名学生思修成绩:",i+1);
    				flag=scanf("%lf",&stu[i].Sc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Sc)!=1);		
    			stu[i].stusum=stu[i].Mc+stu[i].Ec+stu[i].Cc+stu[i].Sc;
    			//printf("%.2lf",stu[i].stusum);
    		}
    		if((fp=fopen("D://studentDate.txt","w"))==NULL)
    		{
    			printf("打开文件失败!");
    			exit(1);
    		}
    		else
    		{
    			//for(i=0;i<n;i++)
    			{
    				fwrite(stu,sizeof(student),n,fp);
    			}
    		}
    		
    		fclose(fp);
    		printf("\t\t\t录入完毕!");
    		system("pause");
    		MainMeau();
    	}
    	if(n==2)
    	{
    //		addInformation();
    	system("cls");
    		int j,n,y; 
    		int flag;
    		int i,k;//循环变量 
    		char id[20];
    		double sum;
    		FILE * fp;
    		/*printf("\t\t\t请输入本次添加人数:");
    			*/
    		student stu[60];	
    		if((fp=fopen("D://studentDate.txt","r"))==NULL)
    			{
    				printf("打开文件失败!");
    				exit(0);
    			}
    			else
    			{
    				for(i=0;!feof(fp);i++)
    				{
    					fread(&stu[i],sizeof(student),1,fp);
    				}
    			}
    			fclose(fp);
    			j=i;
    			i=0;		
    		//for(i=0;i<n;i++)
    		{				 		
    			do
    			{		
    				printf("\n\t\t\t请输入学生学号:");
    				fflush(stdin);
    				scanf("%s",id);
    				for(k=0;k<j-1;k++)
    					{
    						y=strcmp(id,stu[k].ID);
    						if(y==0)
    						{
    							printf("\t\t\t学号重复!");			
    							break;
    						}
    						else
    						continue;			
    					}				
    			}while(y==0);			
    			if(k==j-1)
    			{
    					strcpy(stu[i].ID,id);		
    			}		
    			fflush(stdin);
    			printf("\t\t\t请输入学生姓名:");
    			scanf("%s",stu[i].name);
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入数学成绩:");
    				flag=scanf("%lf",&stu[i].Mc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Mc)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入英语成绩:");
    				flag=scanf("%lf",&stu[i].Ec);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Ec)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入学生C语言成绩:");
    				flag=scanf("%lf",&stu[i].Cc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Cc)!=1);
    			
    			do
    			{
    			
    				fflush(stdin);
    				printf("\t\t\t请输入学生思修成绩:");
    				flag=scanf("%lf",&stu[i].Sc);
    				if(flag!=1)
    				{
    					printf("\t\t\t请输入正确的成绩!\n");
    				}
    				else
    				{
    					break;
    				}
    			}while(scanf("%lf",&stu[i].Sc)!=1);				
    			stu[i].stusum=stu[i].Mc+stu[i].Ec+stu[i].Cc+stu[i].Sc;
    			//printf("%.2lf",stu[i].stusum);
    		}
    		if((fp=fopen("D://studentDate.txt","a"))==NULL)
    		{
    			printf("打开文件失败!");
    			exit(1);
    		}
    		else
    		{
    			//for(i=0;i<n;i++)
    			{
    				fwrite(stu,sizeof(student),1,fp);
    			}
    		}
    		fclose(fp);
    		printf("\t\t\t添加完毕!\n");
    		//system("pause");
    		printf("\t\t\t按1返回主菜单\n"); 
    		fflush(stdin);
    		scanf("%d",&n);
    		if(n==1)
    		{
    			MainMeau();
    		}
    	}
    	else
    	{
    		MainMeau();
    	}
    }
    
    void inquiry()//主菜单->查询成绩 
    {
    	int j,i,n,m;
    	char id[20];
    	char tempname[20];
    	student stu[60];
    	FILE * fp;
    	system("cls");
    	printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
    	printf("\t\t\t│\t\t\t查询成绩\t\t\t│\n");
    	printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
    	printf("\t\t\t│\t\t1.学号查询\t\t\t\t│\n");
    	printf("\t\t\t│\t\t2.姓名查询\t\t\t\t│\n");
    	printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
    	printf("\t\t\t│\t\t\t\t\t\t\t│\n");
    	printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
    	printf("\t\t\t请选择:");
    	fflush(stdin); 
    	scanf("%d",&n) ;
    	
    	
    	if((fp=fopen("D://studentDate.txt","r"))==NULL)
    	{
    		printf("打开文件失败!");
    		exit(0);
    	}
    	else
    	{
    		for(i=0;!feof(fp);i++)
    		{
    			fread(&stu[i],sizeof(student),1,fp);
    		}
    	}
    	fclose(fp);
    	j=i;
    	
    	if(n==1)
    	{
    		printf("\t\t\t请输入要查询的学号:");
    		scanf("%s",id);
    		for(i=0;i<j-1;i++)
    		{
    			if(strcmp(id,stu[i].ID)==0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				break;
    			}			
    		}
    		if(i==j-1)
    		{
    			printf("\t\t\t暂无该学生资料!\n");			
    		}
    		printf("\t\t\t1.继续查询\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:");
    		fflush(stdin);
    		scanf("%d",&m);
    		if(m==1)
    		{
    			inquiry();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==2)
    	{
    		printf("\t\t\t请输入要查询的姓名:");
    		fflush(stdin);
    		scanf("%s",tempname);
    		for(i=0;i<j-1;i++)
    		{
    			if(strcmp(tempname,stu[i].name)==0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				break;
    			}			
    		}
    		if(i==j-1)
    		{
    			printf("\t\t\t暂无该学生资料!\n");			
    		}
    		printf("\t\t\t1.继续查询\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:");
    		scanf("%d",&m);
    		if(m==1)
    		{
    			inquiry();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==3)
    	{
    		MainMeau();
    	}
    	else
    	{
    		inquiry();
    	}
    }
    
    void sort()//主菜单->成绩排序 
    {
    	student stu[60];
    	int m,n;
    	int j;
    	int x;
    	int i,k;
    	student temp;
    	FILE * fp;
    	if((fp=fopen("D://studentDate.txt","r"))==NULL)
    	{
    		printf("打开文件失败!");
    		exit(0);
    	}
    	else
    	{
    		for(i=0;!feof(fp);i++)
    		{
    			fread(&stu[i],sizeof(student),1,fp);
    		}
    	}
    	fclose(fp);
    	j=i;
    	i=0;			
    	while(n!=1&&n!=2&&n!=3&&n!=4&&n!=5&&n!=6&&n!=7&&n!=8)
    	{
    	
    		system("cls");	
    		printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
    		printf("\t\t\t│\t\t\t查看成绩\t\t\t│\n");
    		printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
    		printf("\t\t\t│\t\t1.按总分排序\t\t\t\t│\n");
    		printf("\t\t\t│\t\t2.按学号排序\t\t\t\t│\n");	
    		printf("\t\t\t│\t\t3.按姓氏首字母\t\t\t\t│\n");		
    		printf("\t\t\t│\t\t4.按数学排序\t\t\t\t│\n");
    		printf("\t\t\t│\t\t5.按英语排序\t\t\t\t│\n");
    		printf("\t\t\t│\t\t6.按C语言排序\t\t\t\t│\n");
    		printf("\t\t\t│\t\t7.按思修排序\t\t\t\t│\n");
    		printf("\t\t\t│\t\t8.返回上一级\t\t\t\t│\n");
    		printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
    		
    		printf("\t\t\t请选择:"); 
    		fflush(stdin);
    		scanf("%d",&n);
    	}
    	if(n==1)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				if(stu[i].stusum<stu[k].stusum)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	
    	else if(n==2)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				x=strcmp(stu[i].ID,stu[k].ID);
    				if(x>0)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==3)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				x=strcmp(stu[i].name,stu[k].name);
    				if(x>0)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==4)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				if(stu[i].Mc<stu[k].Mc)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==5)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				if(stu[i].Ec<stu[k].Ec)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==6)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				if(stu[i].Cc<stu[k].Cc)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if(n==7)
    	{
    		for(i=0;i<j-1;i++)
    		{
    			for(k=i+1;k<j-1;k++)
    			{
    				if(stu[i].Sc<stu[k].Sc)
    				{
    					temp=stu[i];
    					stu[i]=stu[k];
    					stu[k]=temp;
    				}
    				else
    				continue;
    			}
    		}
    		while(m!=1&&m!=2)
    		{
    			system("cls");
    			printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
    			printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
    			for(i=0;i<j-1;i++)
    			{
    				printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
    			}
    			printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
    			printf("\t\t\t排序请按1");
    			printf("\n\t\t\t返回主菜单请按2");
    			printf("\n\t\t\t");
    			fflush(stdin);
    			scanf("%d",&m);
    		}
    		if(m==1)
    		{
    			sort();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}				
    	else
    	{
    		MainMeau();
    	}
    }
    
    void amend()//主菜单->信息修改
    {
    	int op, j, i, k, n, m, x;
    	char id[20];
    	char aid[20];
    	char name[20];
    	char aname[20];
    	double aMc;
    	double aEc;
    	double aCc;
    	double aSc;
    	char tempname[20];
    	student stu[60];
    	FILE* fp;
    	FILE* ftemp;
    
    	system("cls");
    	printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
    	printf("\t\t\t│\t\t\t修改信息\t\t\t│\n");
    	printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
    	printf("\t\t\t│\t\t1.通过学号\t\t\t\t│\n");
    	printf("\t\t\t│\t\t2.通过姓名\t\t\t\t│\n");
    	printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
    	printf("\t\t\t│\t\t\t\t\t\t\t│\n");
    	printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
    	printf("\t\t\t请选择:");
    	fflush(stdin);
    	scanf("%d", &n);
    
    	if ((fp = fopen("D://studentDate.txt", "r")) == NULL)
    	{
    		printf("打开文件失败!");
    		exit(0);
    	}
    	else
    	{
    		for (i = 0; !feof(fp); i++)
    		{
    			fread(&stu[i], sizeof(student), 1, fp);
    		}
    	}
    	fclose(fp);
    	j = i;
    
    	if (n == 1)
    	{
    		printf("\t\t\t请输入要修改学生的学号:");
    		fflush(stdin);
    		scanf("%s", id);
    		for (i = 0; i < j - 1; i++)
    		{
    			if (strcmp(id, stu[i].ID) == 0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				printf("\t\t\t是否修改该学生信息?\t1.是\t2.否\n");
    				printf("\t\t\t请选择:");
    				fflush(stdin);
    				scanf("%d", &x);
    				while (x != 1 && x != 2)
    				{
    					printf("\t\t\t请重新选择:");
    					fflush(stdin);
    					scanf("%d", &x);
    				}
    				if (x == 1)
    				{
    					if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
    					{
    						printf("打开文件失败!");
    						exit(1);
    					}
    					else
    					{
    						do
    						{
    							printf("\t\t\t请选择要修改的项:\n");
    							printf("\t\t\t1.学号\t2.姓名\t3.数学\n\t\t\t4.英语\t5.C语言\t6.思修\n");
    							printf("\t\t\t您的选择是:");
    							fflush(stdin);
    							scanf("%d", &op);
    						} while (op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6);
    						if (op == 1)
    						{
    							printf("\t\t\t请输入修改后的学号:");
    							fflush(stdin);
    							scanf("%s", aid);
    							strcpy(stu[i].ID, aid);
    
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 2)
    						{
    							printf("\t\t\t请输入修改后的姓名:");
    							fflush(stdin);
    							scanf("%s", aname);
    							strcpy(stu[i].name, aname);
    
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 3)
    						{
    							printf("\t\t\t请输入修改后的数学成绩:");
    							fflush(stdin);
    							scanf("%lf", &aMc);
    							stu[i].Mc = aMc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 4)
    						{
    							printf("\t\t\t请输入修改后的英语成绩:");
    							fflush(stdin);
    							scanf("%lf", &aEc);
    							stu[i].Ec = aEc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 5)
    						{
    							printf("请输入修改后的C语言成绩:");
    							fflush(stdin);
    							scanf("%lf", &aCc);
    							stu[i].Cc = aCc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else
    						{
    							printf("\t\t\t请输入修改后的思修成绩:");
    							fflush(stdin);
    							scanf("%lf", &aSc);
    							stu[i].Sc = aSc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    
    					}
    					fclose(ftemp);
    					remove("D://studentDate.txt");
    					rename("D://tempstudentDate.txt", "D://studentDate.txt");
    
    				}
    				else
    				{
    					amend();
    				}
    				break;
    			}
    		}
    		if (i == j - 1)
    		{
    			printf("\t\t\t暂无该学生资料!\n");
    		}
    		printf("\t\t\t修改成功!\n");
    		printf("\t\t\t1.继续修改\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:\n");
    		fflush(stdin);
    		scanf("%d", &m);
    		if (m == 1)
    		{
    			amend();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    
    	else if (n == 2)
    	{
    		printf("\t\t\t请输入要修改学生的姓名:");
    		fflush(stdin);
    		scanf("%s", name);
    		for (i = 0; i < j - 1; i++)
    		{
    			if (strcmp(name, stu[i].name) == 0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				printf("\t\t\t是否修改该学生信息?\t1.是\t2.否\n");
    				printf("\t\t\t请选择:");
    				scanf("%d", &x);
    				while (x != 1 && x != 2)
    				{
    					printf("\t\t\t请重新选择:");
    					fflush(stdin);
    					scanf("%d", &x);
    				}
    				if (x == 1)
    				{
    					if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
    					{
    						printf("打开文件失败!");
    						exit(1);
    					}
    					else
    					{
    						do
    						{
    							printf("\t\t\t请选择要修改的项:\n");
    							printf("\t\t\t1.学号\t2.姓名\t3.数学\n\t\t\t4.英语\t5.C语言\t6.思修\n");
    							printf("\t\t\t您的选择是:");
    							fflush(stdin);
    							scanf("%d", &op);
    						} while (op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6);
    						if (op == 1)
    						{
    							printf("\t\t\t请输入修改后的学号:");
    							fflush(stdin);
    							scanf("%s", aid);
    							strcpy(stu[i].ID, aid);
    
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 2)
    						{
    							printf("\t\t\t请输入修改后的姓名:");
    							fflush(stdin);
    							scanf("%s", aname);
    							strcpy(stu[i].name, aname);
    
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 3)
    						{
    							printf("\t\t\t请输入修改后的数学成绩:");
    							fflush(stdin);
    							scanf("%lf", &aMc);
    							stu[i].Mc = aMc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 4)
    						{
    							printf("\t\t\t请输入修改后的英语成绩:");
    							fflush(stdin);
    							scanf("%lf", &aEc);
    							stu[i].Ec = aEc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else if (op == 5)
    						{
    							printf("\t\t\t请输入修改后的C语言成绩:");
    							fflush(stdin);
    							scanf("%lf", &aCc);
    							stu[i].Cc = aCc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    						else
    						{
    							printf("\t\t\t请输入修改后的思修成绩:");
    							fflush(stdin);
    							scanf("%lf", &aSc);
    							stu[i].Sc = aSc;
    							stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
    							for (k = 0; k < j - 1; k++)
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    
    					}
    					fclose(ftemp);
    					remove("D://studentDate.txt");
    					rename("D://tempstudentDate.txt", "D://studentDate.txt");
    
    
    				}
    				else
    				{
    					MainMeau();
    				}
    				break;
    			}
    		}
    		if (i == j - 1)
    		{
    			printf("暂无该学生资料!");
    		}
    		printf("\t\t\t修改成功!\n");
    		printf("\t\t\t1.继续修改\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:\n");
    		fflush(stdin);
    		scanf("%d", &m);
    		if (m == 1)
    		{
    			amend();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    }
    
    void delet()//主菜单->信息删除
    {
    	int j, i, k, n, m, x;
    	char id[20];
    	char name[20];
    	char tempname[20];
    	student stu[60];
    	FILE* fp;
    	FILE* ftemp;
    
    	system("cls");
    
    	printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
    	printf("\t\t\t│\t\t\t删除信息\t\t\t│\n");
    	printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
    	printf("\t\t\t│\t\t1.通过学号\t\t\t\t│\n");
    	printf("\t\t\t│\t\t2.通过姓名\t\t\t\t│\n");
    	printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
    	printf("\t\t\t│\t\t\t\t\t\t\t│\n");
    	printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
    	printf("\t\t\t请选择:");
    	fflush(stdin);
    	scanf("%d", &n);
    
    	if ((fp = fopen("D://studentDate.txt", "r")) == NULL)
    	{
    		printf("打开文件失败!");
    		exit(0);
    	}
    	else
    	{
    		for (i = 0; !feof(fp); i++)
    		{
    			fread(&stu[i], sizeof(student), 1, fp);
    		}
    	}
    	fclose(fp);
    	j = i;
    
    	if (n == 1)
    	{
    		printf("\t\t\t请输入要删除学生的学号:");
    		scanf("%s", id);
    		for (i = 0; i < j - 1; i++)
    		{
    			if (strcmp(id, stu[i].ID) == 0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				printf("\t\t\t是否删除该学生信息?\t1.是\t2.否\n");
    				printf("\t\t\t请选择:");
    				fflush(stdin);
    				scanf("%d", &x);
    				while (x != 1 && x != 2)
    				{
    					printf("请重新选择:");
    					scanf("%d", &x);
    				}
    				if (x == 1)
    				{
    					if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
    					{
    						printf("打开文件失败!");
    						exit(1);
    					}
    					else
    					{
    						for (k = 0; k < j - 1; k++)
    						{
    							if (k == i)
    							{
    								continue;
    							}
    							else
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    					}
    					fclose(ftemp);
    					remove("D://studentDate.txt");
    					rename("D://tempstudentDate.txt", "D://studentDate.txt");
    
    				}
    				else
    				{
    					MainMeau();
    				}
    				break;
    			}
    		}
    		if (i == j - 1)
    		{
    			printf("\t\t\t暂无该学生资料!\n");
    		}
    		printf("\t\t\t删除成功!\n");
    		printf("\t\t\t1.继续删除\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:");
    		fflush(stdin);
    		scanf("%d", &m);
    		if (m == 1)
    		{
    			delet();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else if (n == 2)
    	{
    		printf("\t\t\t请输入要删除学生的姓名:");
    		fflush(stdin);
    		scanf("%s", name);
    		for (i = 0; i < j - 1; i++)
    		{
    			if (strcmp(name, stu[i].name) == 0)
    			{
    				printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
    				printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
    				printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
    				printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
    				printf("\t\t\t是否删除该学生信息?\t1.是\t2.否\n");
    				printf("\t\t\t请选择:");
    				fflush(stdin);
    				scanf("%d", &x);
    				while (x != 1 && x != 2)
    				{
    					printf("请重新选择:");
    					fflush(stdin);
    					scanf("%d", &x);
    				}
    				if (x == 1)
    				{
    					if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
    					{
    						printf("打开文件失败!");
    						exit(1);
    					}
    					else
    					{
    						for (k = 0; k < j - 1; k++)
    						{
    							if (k == i)
    							{
    								continue;
    							}
    							else
    							{
    								fwrite(&stu[k], sizeof(student), 1, ftemp);
    							}
    						}
    					}
    					fclose(ftemp);
    					remove("D://studentDate.txt");
    					rename("D://tempstudentDate.txt", "D://studentDate.txt");
    				}
    				else
    				{
    					MainMeau();
    				}
    				break;
    			}
    		}
    		if (i == j - 1)
    		{
    			printf("\t\t\t暂无该学生资料!\n");
    		}
    		printf("\t\t\t删除成功!\n");
    		printf("\t\t\t1.继续删除\t\t2.返回主菜单\n");
    		printf("\t\t\t请选择:");
    		fflush(stdin);
    		scanf("%d", &m);
    		if (m == 1)
    		{
    			delet();
    		}
    		else
    		{
    			MainMeau();
    		}
    	}
    	else
    	{
    		MainMeau();
    	}
    }
    
    void quit()//退出界面
    {
    	system("cls");
    	printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
    	printf("\t\t\t\t◇\t\t\t\t\t\t\t◇\n");
    	printf("\t\t\t\t◆\t\t    谢谢你的使用!\t\t\t◆\n");
    	printf("\t\t\t\t◇\t\t    正在退出系统......    \t\t◇\n");
    	printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
    	printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
    	Sleep(3000);
    	exit(0);
    }
    
    展开全文
  • 学生管理系统能够保存学生一些基本的信息,如:姓名、学号、身份证、户籍、班级、专业、学院等信息,同时能够添加、删除、修改学生的信息,还能够快速统计、分类查阅学生的信息,极大程度上减少了传统的方式录入...
  • 之前我们已经完成了登录和查询的操作,接下来我们完成学生信息添加的操作 一 分析 之前的博客我们已经把准备工作完成了,戳–>登录模块,查询模块<–查看 现在我们直接分析添加学生信息的逻辑: 二 代码 ...

    前言

    之前我们已经完成了登录和查询的操作,接下来我们完成学生信息添加的操作

    一 分析

    之前的博客我们已经把准备工作完成了,戳–>登录模块查询模块<–查看
    现在我们直接分析添加学生信息的逻辑:在这里插入图片描述

    二 代码

    AddUserServlet

    package com.itevent.web.servlet;
    
    import com.itevent.domain.Users;
    import com.itevent.service.UserService;
    import com.itevent.service.impl.UserServiceImpl;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.util.Map;
    import java.util.Set;
    
    @WebServlet("/addUserServlet")
    public class AddUserServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            //1.防止中文乱码,设置编码
            request.setCharacterEncoding("utf-8");
    
            //2.获取数据
            Map<String, String[]> map = request.getParameterMap();
    
            //3.封装user对象
            Users user = new Users();
    
            try {
                BeanUtils.populate(user,map);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    
            //4.调用service中的addUser方法
            UserService service = new UserServiceImpl();
            service.addUser(user);
    
            //5.重定向到findAllServlet
            response.sendRedirect(request.getContextPath()+"/findAllServlet");
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    add.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!-- HTML5文档-->
    <!DOCTYPE html>
    <!-- 网页使用的语言 -->
    <html lang="zh-CN">
    <head>
        <!-- 指定字符集 -->
        <meta charset="utf-8">
        <!-- 使用Edge最新的浏览器的渲染方式 -->
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
        width: 默认宽度与设备的宽度相同
        initial-scale: 初始的缩放比,为1:1 -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>添加用户</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
    </head>
    <body>
    <div class="container">
        <center><h3>添加学生信息页面</h3></center>
        <form action="${pageContext.request.contextPath}/addUserServlet" method="post">
            <div class="form-group">
                <label for="name">姓名:</label>
                <input type="text" class="form-control" id="name" name="name" placeholder="请输入姓名">
            </div>
    
            <div class="form-group">
                <label>性别:</label>
                <input type="radio" name="gender" value="男" checked="checked"/><input type="radio" name="gender" value="女"/></div>
    
            <div class="form-group">
                <label for="age">年龄:</label>
                <input type="text" class="form-control" id="age" name="age" placeholder="请输入年龄">
            </div>
    
            <div class="form-group">
                <label for="address">籍贯:</label>
                <select name="address" class="form-control" id="address">
                    <option value="北京">北京</option>
                    <option value="上海">上海</option>
                    <option value="山西">山西</option>
                </select>
            </div>
    
            <div class="form-group">
                <label for="cls">班级:</label>
                <input type="text" class="form-control" name="cls" placeholder="请输入所在班级"/>
            </div>
    
            <div class="form-group">
                <label for="tel">联系电话</label>
                <input type="text" class="form-control" name="tel" placeholder="请输入联系电话"/>
            </div>
    
    
            <div class="form-group" style="text-align: center">
                <input class="btn btn-primary" type="submit" value="提交"/ >
                <input class="btn btn-default" type="reset" value="重置" />
                <input class="btn btn-default" type="button" value="返回" />
            </div>
        </form>
    </div>
    </body>
    </html>
    

    Service

    UserService

     /**
         * 添加用户信息
         * @param user
         */
        void addUser(Users user);
    

    UserServiceImpl

     @Override
        public void addUser(Users user) {
            dao.addUser(user);
        }
    

    Dao

    UserDao

    void addUser(Users user);
    

    UserDaoImpl

     @Override
        public void addUser(Users user) {
    
            //1.定义一个添加的sql语句
            String sql = "insert into user values(null,?,?,?,?,?,?,null,null )";
            template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getCls(),user.getTel());
        }
    

    三 界面展示

    添加学生信息的页面

    在这里插入图片描述

    添加成功后的学生信息列表

    在这里插入图片描述
    已将源码上传到GitHub–>学生信息管理系统<–

    这是学生信息管理系统的第三个模块———添加模块,之后我还会陆续将其它模块给各位分享出来,如果你发现我的代码有什么错误或者可以改进的地方评论出来,大家共同进步!

    展开全文
  • 之前我们已经完成了登录,查询和添加的操作,接下来我们完成学生信息添加的操作 前三部分功能在我之前的博客已经完成了,戳–>登录模块,查询模块,添加模块<–查看 一 界面展示 首先是查询所有学生信息的...
  • 学生成绩管理系统

    2011-10-28 23:36:19
    管理系统功能能管理学生基本信息,具体包含如下功能: 1、基础数据:定义系统使用的基础数据,包括系统类别、系统常量;班级信息、学生信息、课程信息、教师信息等。 2、系统管理:注销、退出,系统数据备份 3、...
  • 之前我们已经完成了登录的逻辑操作,那么接下来我们完成学生信息查询的操作 一 分析 之前的博客我们已经把准备工作完成了,所以现在直接分析查询学生信息的逻辑,话不多说,直接上图: 二 代码 1. findAllServlet ...
  • 学生成绩管理系统是一个具有整合学生成绩的综合性系统,其功能包括对每个学生成绩的录入、修改、删除、查询等具体功能。学生成绩管理系统运用了结构体、链表、文件等的基本知识,并对各个模块的功能进行整合。作为...
  • 开发一个学生综合测评管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。一个高效的学生综合测评...
  • access,10个窗体以上,20个查询以上,有宏,7个数据表 窗体有登录、导航、教师信息、学生信息、选课信息、教师学生综合查询 数据表有教师档案、教师授课信息、课程、学生档案、学生选课、用户
  • 学生成绩管理系统是一个具有整合学生成绩的综合性系统,其功能包括对每个学生成绩的录入、修改、删除、查询等具体功能。学生成绩管理系统运用了结构体、链表、文件等的基本知识,并对各个模块的功能进行整合。作为...
  • 才子学生成绩管理系统现推出永久免费版本,无任何时间、功能限制,欢迎广大学校交流使用!如贵校感觉程序好用,请帮助共同宣传推广,谢谢! 1、学籍管理 2、成绩管理 3、作业管理(美术培训学校专用) 4、学生素质...
  • 学生档案管理系统 java课程设计

    热门讨论 2009-05-31 00:45:07
    同时在使用学生档案管理系统后,学校相关领导可以较为全面、准确的了解到同学们的综合信息,然后方便更具各种信息对学校的管理做出各种决策。 2. 设计要求 1.要求在前台主界面上显示数据库中存放的学生的基本信息,...
  • 这里写目录标题1、Vue 高级使用1.1、自定义组件1.2、Vue的生命周期1.3、Vue异步操作1.4、小结2、综合案例 学生管理系统2.1、效果环境的介绍2.2、登录功能的实现2.3、分页查询功能的实现2.4、添加功能的实现2.5、修改...
  • 《C/S程序综合设计》课题设计要求 实验课题一、人员档案的管理、物料档案管理 实验课题二、简单物料进仓/出仓信息管理(直接修改,存储过程,进出单号自动填写) 实验课题三、多物料进出仓信息管理(临时表) 实验...
  • 综合教务管理系统.zip

    2019-08-06 16:59:40
    学期末的实训是asp.net综合教务管理系统,本系统采用三层架构实现。主要功能有学生模块选课,成绩查询,修改密码等,教师模块有选课,取消选课,成绩录入,修改成绩等功能,管理员有用户管理,课程管理,学生信息...
  • 就业综合管理系统(V1.0)是山西翰达科技有限公司为高校毕业生就业工作部门量身定制开发的一套针对就业工作的系统。 由于近年来就业方式发生了很大的变化,为了满足数量剧增的毕业生的需求,及时为学生和企业建立...
  • Java实现学生信息管理系统_01

    千次阅读 2019-06-18 17:19:09
    综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发,了解系统开发的一般流程,初步了解MVC模式与...
  • 本大学会员分会管理系统可以说是一个综合性的大学会员分会管理系统,这它包含了会员管理,图书管理,活动管理等多种功能,因而具有一定的实用性。本站是一个B/S模式系统,开发采用了目前流行的asp.net技术。系统界面...
  • 1.登录验证功能:为了保证高等学校综合测评管理系统信息的安全性,进入系统时需要对用户身份进行验证,如果验证无误可成功进入系统,如果用户名或者密码不正确将返回错误提示要求重新输入。 2.班级管理功能:该功能...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 255
精华内容 102
关键字:

学生综合管理系统登录