精华内容
下载资源
问答
  • 学生学籍管理系统Java

    2009-06-08 15:09:04
    这是一个详尽的学生学籍管理系统,有可以直接运行的程序和相应的文档。可以用来作为数据库或Java语言的课程设计使用!
  • 毕业设计论文-基于JSP的学生学籍管理系统java毕业设计论文.rar
  • 学生在线学籍管理系统,采用了JSP开发,希望可以给大家参考。可运行,可两次开发。包含毕业设计+论文。数据库用的mysql,压缩包里含数据库文件。
  • 学生课程设计中简单的学生成绩管理系统,包括access数据库,简单的界面,课程设计,学生设计,入门示例
  • 课题 学生姓名学号专业班级系(院 指导教师职称二年月 毕业设计真实性承诺及指导教师声明 学生毕业设计真实性承诺 本人郑重声明:所提交的毕业设计是本人在指导教师的指导下,独立进行研究工作所取得的成果,内容真实...
  • Java + SQL Server2000 + MyEclipse6.0,作为计算机学院的课程设计已通过老师审核,Word文档,UML建模,代码,数据库文件一应俱全。
  • 数据库课程设计,这是一个半成熟的学籍管理系统,附上源码希 望可以帮到和我一样在道路上艰难前进的学子们。

    目录

    建立MySQL数据库

    java连接数据库

    项目文件结构

    页面展示

    源码

    友情提醒


    建立MySQL数据库


    在我们设计一个系统前首先要明确我们设计一个系统的目的是什么,数据库课设,就是要用到数据库,数据库才是根本,其他一切都是建立在我们的数据库的基础上的。MySQL的配置和安装,首先配置我们的MySQL,然后分析我们的需求,学生学籍管理系统,首先就应该是学籍信息,下面是我建立的三个表(当然如果不满意的话,你可以后续再完善),那个user本来是限制登录的,但是我还没用到。哦,这里提醒一下,MySQL自带四个数据库,我们最好不要删,因为后续可能会有错误,我误删了一个sys,虽然到现在为止没有出现数据库不能用的情况,但是建议大家不要引起不必要的麻烦,我当时也是紧张的折腾好久。

    使用命令describe <表名> 可以看到表的结构

     上面就是我建的两个表,里面的内容设计隐私,就不展示了,变得结构就是这样,其中grade的sno是外码,参照student,为了方便,处理成绩,其他数据都设置成字符串类型。


    java连接数据库

    mysql-connector-java-5.1.47下载

    链接:https://pan.baidu.com/s/1JtTCSb9FckNSL0-byJWbVQ
    提取码:0000

    工程项目下创建文件夹lib,直接把下载的mysql-connector-java-5.1.47复制到lib下,然后右键点击mysql-connector-java-5.1.47,点击Build Path>Add to Build Path。我这里是完成后的,所以没有Add to Bulid Path。

    这样就配置好了,然后就是写代码连接了,java连接数据库代码里,我放入了连接的代码,这个连接用的是查询语句作为例子,大家要活学活用。


    项目文件结构


     

    页面展示

    我这里用了beautyeye,所以如果你没有这个文件,可能会报错。beautyeye的使用,可以参考这篇文章,如果不想使用,直接删除相关报错代码即可。

    菜单界面

    没用beaytyeye之前是这样的

     

     入学管理界面,可以进行学籍信息的录入,这个界面的查询按钮是直接跳转到查询打印页面

    学籍管理界面,可以实现按不同信息查询,可以进行模糊查询和精确查询

     点击学籍管理方案,再点击确定,这里会根据成绩平均值输出学籍管理方案,这里用到了数据库中的聚集函数的知识

     点击学籍管理界面的修改,我们进入change界面,这里可以根据需求,对单一的数据进行修改。

     成绩管理界面,可以选择要录入成绩的学期和学年,点击确定进行录入。这里的成绩查询,是直接跳转到查询打印界面

     毕业管理界面,可以单独删除和批量删除,根据入学年份,直接批量删除入学超过四年的。

     

     查询打印界面,这个界面主要就是进行成绩的输出了,这里的打印功能暂时没有实现

     系统维护界面,需要对数据库进行备份,这个功能暂时没做出来

    源码

    因为涉及到可视化,源码太过冗长,有需要自取

    这是一个完整的工程,里面的src下是自己写的代码

    链接:https://pan.baidu.com/s/1MOwsIBo2hPxZkGFztecHWw
    提取码:gwx1

    如果有下载不下来或者别的获取问题的,可以及时联系我


    友情提醒

    1.数据库建表时可以用可视化工具,比如mysql workbench,更方便直接对表进行增删改查。

    2.由于每次查询都要有数据库的连接,所以你可以把数据库的连接封装成一个类,方便使用,但对我自己,我并没有封装。

    3.数据库原有的库不要删,我现在还没有恢复过来,因为课设任务紧,就没有管,暂时不影响本地数据库的使用。

    4.最好自己学习一下java数据库连接后增删改查实现的机制是怎样的,参数是怎样传递的,这样可以更好地灵活运用,而不是死搬硬套。

    5.我做的这个系统也并不完善,能力时间有限,仅做参考。

    6.学习过程中有问题可以探讨,说不定我也碰到过同样的问题。

    展开全文
  • 应用程序要发送数据包时,通常是通过 socket 接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的 socket 层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。 而对于接收网络包时,同样也...

    前言

    Linux 网络协议栈是根据 TCP/IP 模型来实现的,TCP/IP 模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。

    应用程序要发送数据包时,通常是通过 socket 接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的 socket 层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。

    而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。

    网络的速度往往跟用户体验是挂钩的,那我们又该用什么指标来衡量 Linux 的网络性能呢?以及如何分析网络问题呢?

    这次,我们就来说这些。

    01 分布式限流:Nginx+ZooKeeper

    1.1 分布式限流之Nginx

    • 请解释一下什么是 Nginx?

    • 请列举 x Nginx 的一些特性。

    • 请列举 x Nginx 和 和 Apache 之间的不同点

    • 请解释 x Nginx 如何处理 P HTTP 请求。

    • 在 x Nginx 中,如何使用未定义的服务器名称来阻止处理请求?

    • 使用 “ 反向代理服务器 ”

    • 请列举 x Nginx 服务器的最佳用途。

    • 请解释 x Nginx 服务器上的 r Master 和 和 r Worker 进程分别是什么?

    • 请解释你如何通过不同于 0 80 的端口开启 Nginx?

    • 请解释是否有可能将 x Nginx 的错误替换为 2 502 错误?

    • 在 x Nginx 中,解释如何在 L URL 中保留双斜线? ?

    • 请解释 e ngx_http_upstream_module 的作用是什么?

    • 请解释什么是 K C10K 问题?

    • 请陈述 s stub_status 和 和 r sub_filter 指令的作用是什么?

    • 解释 x Nginx 是否支持将请求压缩到上游?

    • 解释如何在 x Nginx 中获得当前的时间?

    • 用 x Nginx 服务器解释s -s 的目的是什么?

    • 解释如何在 x Nginx 服务器上添加模块?

    分布式限流之Nginx的答案解析如下:

    分布式限流之Nginx的答案解析

    for:Nginx+常见应用技术指南[Nginx++Tips]+第二版

    Nginx+常见应用技术指南[Nginx++Tips]+第二版

    1.2 分布式限流之ZooKeeper

    • ZooKeeper 是什么?

    • ZooKeeper 提供了什么?

    • Zookeeper 文件系统

    • 四种类型的 znode

    • Zookeeper 通知机制

    • Zookeeper 做了什么?

    • zk 的命名服务(文件系统)

    • zk 的配置管理(文件系统、通知机制)

    • Zookeeper 集群管理(文件系统、通知机制)

    • Zookeeper 分布式锁(文件系统、通知机制)

    • 获取分布式锁的流程

    • Zookeeper 队列管理(文件系统、通知机制)

    • Zookeeper 数据复制

    • Zookeeper 工作原理

    • zookeeper 是如何保证事务的顺序一致性的?

    • Zookeeper 下 Server 工作状态

    • zookeeper 是如何选取主 leader 的?

    • 分布式通知和协调

    • 机器中为什么会有 leader?

    • zk 节点宕机如何处理?

    • Zookeeper 同步流程

    • zookeeper 负载均衡和 nginx 负载均衡区别

    • zookeeper watch 机制

    分布式限流之ZooKeeper的答案解析如下

    分布式限流之ZooKeeper的答案解析

    for:ZK开发手册

    ZK开发手册

    02 分布式通讯:ActiveMQ+Kafka+RabbitMQ

    2.1 分布式通讯之ActiveMQ

    • 什么是 ActiveMQ?

    • ActiveMQ 服务器宕机怎么办?

    • 丢消息怎么办?

    • 持久化消息非常慢

    • 消息的不均匀消费。

    • 死信队列。

    • ActiveMQ 中的消息重发时间间隔和重发次数吗?

    分布式通讯之ActiveMQ的答案解析如下:

    分布式通讯之ActiveMQ的答案解析

    for:手写RocketMQ笔记

    手写RocketMQ笔记

    2.2 分布式通讯之kafka

    • Kafka 的设计时什么样的呢?

    • 数据传输的事物定义有哪三种?

    • Kafka 判断一个节点是否还活着有那两个条件?

    • producer 是否直接将数据发送到 broker 的 leader(主节点)?

    • Kafa consumer 是否可以消费指定分区消息?

    • Kafka 消息是采用 Pull 模式,还是 Push 模式?

    • Kafka 存储在硬盘上的消息格式是什么?

    • Kafka 高效文件存储设计特点:

    • Kafka 与传统消息系统之间有三个关键区别

    • Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中

    • Kafka 新建的分区会在哪个目录下创建

    • partition 的数据如何保存到硬盘

    • kafka 的 ack 机制

    • Kafka 的消费者如何消费数据

    • 消费者负载均衡策略

    • 数据有序

    • kafaka 生产数据时数据的分组策略

    分布式通讯之kafka的答案解析如下:

    kafka面试问题答案解析

    for:Kafka源码解析与实战

    Kafka源码解析与实战

    2.3 分布式通讯之RabbitMQ

    • RabbitMQ 中的 broker 是指什么?cluster 又是指什么?

    • 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?

    • RAM node 和 disk node 的区别?

    • RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?

    • RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?

    • vhost 是什么?起什么作用?

    • 在单 node 系统和多 node 构成的 cluster 系统中声明 queue、exchange ,以及进行 binding 会有什么不同?

    • 客户端连接到 cluster 中的任意 node 上是否都能正常工作?

    • cluster 中 node 的失效会对 consumer 产生什么影响?若是在 cluster 中创建了mirrored queue ,这时 node 失效会对 consumer 产生什么影响?

    • 能够在地理上分开的不同数据中心使用 RabbitMQ cluster 么?

    • 为什么 heavy RPC 的使用场景下不建议采用 disk node ?

    • 向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行consume 动作会发生什么?

    • routing_key 和 binding_key 的最大长度是多少?

    • RabbitMQ 允许发送的 message 最大可达多大?

    • 什么情况下 producer 不主动创建 queue 是安全的?

    • “dead letter”queue 的用途?

    • 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性,同时 message 具有 persistent 属性才行?

    • 什么情况下会出现 blackholed 问题?

    • 如何防止出现 blackholed 问题?

    • Consumer Cancellation Notification 机制用于什么场景?

    • Basic.Reject 的用法是什么?

    • 为什么不应该对所有的 message 都使用持久化机制?

    • RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?存在哪些问题?

    分布式通讯之RabbitMQ的答案解析如下:

    分布式通讯之RabbitMQ的答案解析

    for:RabbitMQ实战指南

    RabbitMQ实战指南

    03 分布式缓存:memcached+MongoDB+Redis

    3.1 分布式缓存之memcached

    • memcached 是怎么工作的?

    • memcached 最大的优势是什么?

    • memcached 和服务器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什么优缺点?

    • memcached 和 和 MySQL 的 的 query cache 相比,有什么优缺点?

    • memcached 的 的 cache 机制是怎样的?

    • memcached 如何实现冗余机制?

    • 我需要把 memcached 中的 item 批量导出导入,怎么办?

    • memcached 如何处理容错的?

    • 如何将 memcached 中 中 item 批量导入导出?

    • memcached 是如何做身份验证的?

    • memcached 的多线程是什么?如何使用它们?

    • memcached 能接受的 key 的最大长度是多少?

    • memcached 对 对 item 的过期时间有什么限制?

    • memcached 最大能存储多大的单个 item ?

    • 为什么单个 item 的大小被限制在 1M byte 之内?

    分布式缓存之memcached的答案解析如下:

    分布式缓存之memcached的答案解析

    3.2 分布式缓存之MongoDB

    • 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用NoSQL 数据库?说一说 NoSQL 数据库的几个优点?

    • NoSQL 数据库有哪些类型?

    • MySQL 与 MongoDB 之间最基本的差别是什么?

    • 你怎么比较 MongoDB、CouchDB 及 CouchBase?

    • MongoDB 成为最好 NoSQL 数据库的原因是什么?

    • 32 位系统上有什么细微差别?

    • journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?

    • 分析器在 MongoDB 中的作用是什么?

    • 名字空间(namespace)是什么?

    • 如果用户移除对象的属性,该属性是否从存储层中删除?

    • 能否使用日志特征进行安全备份?

    • 允许空值 null 吗?

    • 更新操作立刻 fsync 到磁盘?

    • 如何执行事务/加锁?

    • 为什么我的数据文件如此庞大?

    • 启用备份故障恢复需要多久?

    • 什么是 master 或 primary?

    • 什么是 secondary 或 slave?

    • 我必须调用 getLastError 来确保写操作生效了么?

    • 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?

    • 分片(sharding)和复制(replication)是怎样工作的?

    • 数据在什么时候才会扩展到多个分片(shard)里?

    • 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?

    • 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?

    • 我可以把 moveChunk 目录里的旧文件删除吗?

    • 我怎么查看 Mongo 正在使用的链接?

    • 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?

    • 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?

    • 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?

    • MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?

    • 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?

    • MongoDB 支持存储过程吗?如果支持的话,怎么用?

    • 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?

    分布式缓存之MongoDB的答案解析如下:

    分布式缓存之MongoDB的答案解析

    for:MongoDB权威指南

    MongoDB权威指南

    3.3 分布式缓存之Redis

    • redis 简介

    • 为什么要用 redis /为什么要用缓存(高性能、高并发)

    • 为什么要用 redis 而不用 map/guava 做缓存?

    • redis 和 memcached 的区别

    • redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)

    • redis 设置过期时间

    • redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)

    • redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)

    • redis 事务

    • Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)

    • 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)

    • Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)

    • 如何解决 Redis 的并发竞争 Key 问题

    • 如何保证缓存与数据库双写时的数据一致性?

    分布式缓存之Redis的答案解析如下:

    分布式缓存之Redis的答案解析

    for:Redis设计与实现

    Redis设计与实现

    最后

    码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

    又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,需要的可以戳这里免费领取,以下是部分内容截图
    Redis 的并发竞争 Key 问题

    • 如何保证缓存与数据库双写时的数据一致性?

    分布式缓存之Redis的答案解析如下:

    [外链图片转存中…(img-PgQk1swY-1621594466284)]

    for:Redis设计与实现

    [外链图片转存中…(img-QNmnch4a-1621594466284)]

    最后

    码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

    又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,需要的可以戳这里免费领取,以下是部分内容截图
    架构面试专题及架构学习笔记导图.png

    展开全文
  • Java课程设计-学生学籍管理系统Java课程设计-学生学籍管理系统Java课程设计-学生学籍管理系统Java课程设计-学生学籍管理系统
  • 学生学籍管理系统(JAVA实现) 学生学籍管理系统(JAVA实现) 学生学籍管理系统(JAVA实现)
  • java学生学籍管理系统 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 主类; import java.awt; import java.awt.event; ...
  • java学生学籍管理系统

    2021-06-16 19:06:50
    java做一个学生学籍管理系统代码怎么写 是一个大作业来着,求各位帮个忙
  • 学生学籍管理详细设计 学号_ 姓名_ 班级_ 一设计题目 学生学籍管理 二设计内容 设计GUI学生学籍管理界面用户可以加入学生信息并对基本信息进行修改添加查询删除 三设计要求 进行简单的学生信息管理 四总体设计 (1)...
  • 选课系统,图书管理系统,学生学籍管理系统,myeclipse,java
  • 用Struts+Jsp做的一个Java毕业设计,含有标准毕业论文,是一个学生学籍管理系统,功能非常强大。
  • Java开发,基于SQLServer的学生学籍管理系统,包括学生信息、课程信息、成绩的增删改、查询功能。简洁易懂。
  • "基于SSM+Redis+LayUI的大学生学籍信息管理系统-java学生学籍信息管理系统mysql数据源1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善开发环境:...

    "基于SSM+Redis+LayUI的大学生学籍信息管理系统-java学生学籍信息管理系统mysql数据源

    1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。

    2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善

    开发环境:

    Eclipse ,MYSQL,JDK1.7,Tomcat 7

    涉及技术点:

    MVC模式、SpringMvc、Mybatis、Spring、Redis、HTML、JavaScript、CSS、LayUI、JQUERY、log4j、Ajax等

    系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring框架进行整合。适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.7. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离

    主要功能:

    登录,注册,多角色多权限,学生信息管理、教师信息管理,班级信息管理、专业信息管理、学院信息管理、个人资料、修改密码、修改邮箱、各种炫酷报表

    ————————————————————————————————————

    近年来,随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。信息化以更快捷更方便为目标来融入各行各业。学校也不能例外。面对庞大的信息量需要有学生管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。当前,我国的学校正在加紧实施信息化建设,其中学生管理是相当重要的一部分。学生学籍管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识它已进入人类社会的各个领域并发挥着来越重要。

    ————————————————————————————————————

    具体功能这里不再赘述,请下方看系统详细演示图,如果大家有什么疑问或者什么不懂得可以在下方给我留言,或者你有更好的建议等等都可以的,也可以找我和我一起交流沟通,互相学习进步!伸手党别来找我!添加时请注明来意。

    好了下面让我来给大家展示一下这个项目的页面效果:

    ————————————————"

    51e27e35457a49aa7244146837654b2c.png

    64b726384a14468e180fd6dcb8ca4f94.png

    展开全文
  • 学生学籍管理详细设计 学号_ 姓名_ 班级_ 1设计题目 学生学籍管理 二设计内容 设计GUI学生学籍管理界面用户可以加入学生信息并对基本信息进行修改 加查询删除 三设计要求 进行简单的学生信息管理 四总体设计 (1)登陆...
  • 课程设计论文任务书 学院 理学院 专 业 信息与计算科学 学生姓名 孙康 班级学号 1309010224 课程名称 Java 程序设计课程设计 课程设计论文题目 学生学籍管理系统 设计题目 学生学籍管理系统java 语言编程知识和...
  • 学籍管理系统 java

    2010-03-31 21:06:19
    在学校时做的一个学籍管理系统Demo,里面实现了对学生管理的基本功能。
  • java+mysql学生学籍后台管理系统源码
  • java课程设计学生学籍管理系统

    热门讨论 2011-06-10 17:38:36
    学生学籍管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,...
  • 学籍管理系统JAVA

    2018-02-13 11:03:17
    使用方法: 第一步:将数学生信息数据库附加到sql当中。 第二步:把java界面图片下的java界面文件保存在E盘目录下或者到程序里该路径。 第三步:把java程序导入eclipse。
  • 学生学籍管理系统

    千次阅读 多人点赞 2018-10-30 14:56:04
    学生学籍管理系统(基于文件操作) 主要实现的功能 添加学生学籍 删除学生学籍 修改学生学籍 查看学生学籍 显示学生学籍(以表格形式显示) 对学生学号进行排序 登入检验,判断进入的是学生界面还是管理员界面 统计...

    学生学籍管理系统(基于文件操作)

    主要实现的功能

    1. 添加学生学籍
    2. 删除学生学籍
    3. 修改学生学籍
    4. 查看学生学籍
    5. 显示学生学籍(以表格形式显示)
    6. 对学生学号进行排序
    7. 登入检验,判断进入的是学生界面还是管理员界面
    8. 统计学生总人数

    界面展示
    登录界面
    操作界面
    添加界面
    删除界面
    查找界面
    用户

    public class Account {
    	String id;
    	String password;
    	public Account(String id, String password){
    		this.id=id;
    		this.password=password;
    	}
    }
    

    学生信息

    public class Student {
    	int id;
    	String name;
    	int age;
    	String sex;
    	String yx;
    	String p;
    	String zy;
    	String cla;
    	String bz;
    	public Student() {}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getYx() {
    		return yx;
    	}
    	public void setYx(String yx) {
    		this.yx = yx;
    	}
    	public String getP() {
    		return p;
    	}
    	public void setP(String p) {
    		this.p = p;
    	}
    	public String getZy() {
    		return zy;
    	}
    	public void setZy(String zy) {
    		this.zy = zy;
    	}
    	public String getCla() {
    		return cla;
    	}
    	public void setCla(String cla) {
    		this.cla = cla;
    	}
    	public String getBz() {
    		return bz;
    	}
    	public void setBz(String bz) {
    		this.bz = bz;
    	}
    }
    

    Database

    public class Database {
    	//定义一个ArrayList容器,容器元素的类型定义为父类Item类型。
    	private ArrayList<Student> stu;
    	public Database(){
    		//只创建一个Arraylist对象。
    		stu = new ArrayList<Student>();	
    	}
    	public int size(){
    		return this.stu.size();
    	}
    	public Student get(int index){
    		return this.stu.get(index);
    	}
    	
    	/**
    	 * 添加信息。
    	 */
    	public void addItem(Student theItem){
    		stu.add(theItem);
    	}
    	/**
    	 * 修改信息。
    	 */
    	public void addItem(int index,Student item){
    		stu.set(index,item);
    	}
    	/**
    	 * 删除信息。
    	 */
    	public Student delet(int index){
    		return stu.remove(index);
    	}
    	/**
    	 * 列表显示当前所有CD和DVD的信息。
    	 */
    }
    

    登录界面

    public class LoginGui{
    	private JFrame frame;
    	private JLabel user,password,title;//p4包括确认密码时的输入框;点击register按钮出现
    	private JTextField users;
    	private JTextField passwords;
    	private JButton log,cannel;
    	Boolean m1=false;
    	Boolean m2=false;
    	public LoginGui(){
    		makeframe();
    	}
    	public void makeframe(){
    		frame = new JFrame("欢迎使用");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(null);
    		
    		title=new JLabel("学生学籍管理系统");
    		title.setFont(new Font("楷体", Font.BOLD, 30));
    		title.setForeground(Color.CYAN);
    		title.setBounds(39, 20, 350, 30);
    		frame.add(title);
    		
    		user = new JLabel("用户名");
    		user.setFont(new Font("微软雅黑", 0, 14));
    		user.setForeground(Color.BLACK);
    		user.setBounds(30, 80, 50, 30);
    		frame.add(user);
    		
    		users = new JTextField(10);
    		users.setBounds(120, 80, 180, 25);
    		frame.add(users);
    		
    		password = new JLabel("密码"); 
    		password.setFont(new Font("微软雅黑", 0, 14));
    		password.setForeground(Color.BLACK);
    		password.setBounds(30, 120, 50, 30);
    		frame.add(password);
    
    		passwords = new JPasswordField(10);
    		passwords.setBounds(120, 120, 180, 25);
    		frame.add(passwords);
    		
    		log = new JButton("登录");
    		log.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		log.setBounds(20, 180, 130, 30);
    		frame.add(log);
    		log.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				try {
    					String id=users.getText();
    					String psw=passwords.getText();
    					int c=Integer.parseInt(psw);
    					int a=c%10;
    					FileReader fr = new FileReader("stu.txt");
    					BufferedReader br = new BufferedReader(fr);
    					String str=br.readLine();
    					while(str!=null) {
    						String regex="\\s";
    						String[] s=str.split(regex);
    						int b=Integer.parseInt(s[1]);
    						if(id.equals(s[0])&&a==b) {
    							MenuStu ms=new MenuStu();
    							frame.setVisible(false);
    							JOptionPane.showMessageDialog(null,"登入成功");
    							m1=true;
    							break;
    						}else if(id.equals(s[0])&&psw.equals(s[1])){							
    							Menu menu=new Menu();
    							frame.setVisible(false);
    							JOptionPane.showMessageDialog(null,"登入成功");
    							m2=true;
    							break;
    						}
    						str=br.readLine();
    					}
    					if(m1&&m2) {
    						JOptionPane.showMessageDialog(frame,"查无此人");						
    					}
    				} catch (FileNotFoundException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} 
    			}
    		});
    		
    		cannel = new JButton("取消");
    		cannel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.BLUE, Color.black));
    		cannel.setBounds(190,180, 130, 30);
    		cannel.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// TODO Auto-generated method stub
    				System.exit(0);
    			}	
    		});
    		frame.add(cannel);
    		
    		ImageIcon img = new ImageIcon("11.jpg");
    		JLabel jl = new JLabel(img); 
    		jl.setBounds(2, -70,330,370);
    		frame.add(jl);
    		
    		frame.setIconImage(Toolkit.getDefaultToolkit().createImage("12.png"));
    		frame.setSize(350, 270);//设置大小
    		frame.setVisible(true);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width/2-frame.getWidth()/2,d.height/2-frame.getHeight()/2);
    	}
    }
    

    学生菜单界面

    public class MenuStu {
    public JFrame mframe;
    private JLabel mp,d,t;
    private JButton add;
    private JButton check;
    private JButton Alter;
    private JButton exit;
    public MenuStu(){
    makeframe();
    }
    public void makeframe(){
    mframe = new JFrame(“菜单”);
    mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mframe.setLayout(null);
    
    	mp=new JLabel("学生界面请选择操作项目");
    	mp.setFont(new Font("楷体", Font.BOLD, 20));
    	mp.setForeground(Color.CYAN);
    	mp.setBounds(220, 5, 350, 20);
    	mframe.add(mp);
    	
    	add=new JButton("录入");
    	add.setBorder(BorderFactory.createRaisedBevelBorder());
    	add.setBounds(20, 50, 100, 30);
    	mframe.add(add);
    	add.addActionListener(new ActionListener() {
    		
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			new Addstu();
    		}
    	});
    	
    	check=new JButton("查询");
    	check.setBorder(BorderFactory.createRaisedBevelBorder());
    	check.setBounds(515, 50, 100, 30);
    	mframe.add(check);
    	check.addActionListener(new ActionListener() {
    		
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			new FindStu();
    		}
    	});
    	
    	Alter=new JButton("修改");
    	Alter.setBorder(BorderFactory.createRaisedBevelBorder());
    	Alter.setBounds(20, 120, 100, 30);
    	mframe.add(Alter);
    	Alter.addActionListener(new ActionListener() {
    		
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			new AlterStu();
    		}
    	});
    	
    	Date currentTime;
    	SimpleDateFormat formatter;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    	formatter=new SimpleDateFormat("yy-MM-dd HH:mm:ss");//时间格式
    	currentTime= new Date();//当前时间
    	String dateString=formatter.format(currentTime);
    	d=new JLabel("当前时间:");
    	d.setFont(new Font("楷体", Font.BOLD, 15));
    	d.setForeground(Color.BLACK);
    	d.setBounds(20, 300, 350, 15);
    	mframe.add(d);
    	t=new JLabel(dateString);
    	t.setFont(new Font("楷体", Font.BOLD, 15));
    	t.setForeground(Color.BLACK);
    	t.setBounds(100, 300, 350, 15);
    	mframe.add(t);
    	
    	exit=new JButton("退出");
    	exit.setBorder(BorderFactory.createRaisedBevelBorder());
    	exit.setBounds(515, 300, 100, 30);
    	mframe.add(exit);
    	exit.addActionListener(new ActionListener() {
    		
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			new LoginGui();
    			mframe.setVisible(false);//隐藏
    			JOptionPane.showMessageDialog(null,"成功退出");
    		}
    	});
    	
    	ImageIcon img = new ImageIcon("11.jpg");
    	JLabel jl = new JLabel(img); 
    	jl.setBounds(0, -50,650	,450);
    	mframe.add(jl);
    	
    	mframe.setSize(650, 390);
    	mframe.setVisible(true);
    	Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    	mframe.setLocation(d.width/2-mframe.getWidth()/2,d.height/2-mframe.getHeight()/2);
    }
    }
    

    管理员界面

    public class Menu{
    	public JFrame mframe;
    	private JLabel mp,d,t;
    	private JButton add;
    	private JButton check;
    	private JButton delete;
    	private JButton Alter;
    	private JButton exit;
    	private JButton sum;
    	private JButton view;
    	public Menu(){
    		makeframe();
    	}
    	public void makeframe(){
    		mframe = new JFrame("菜单");
    		mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		mframe.setLayout(null);
    		
    		mp=new JLabel("管理员界面请选择操作项目");
    		mp.setFont(new Font("楷体", Font.BOLD, 20));
    		mp.setForeground(Color.CYAN);
    		mp.setBounds(220, 5, 350, 20);
    		mframe.add(mp);
    		
    		add=new JButton("录入");
    		add.setBorder(BorderFactory.createRaisedBevelBorder());
    		add.setBounds(20, 50, 100, 30);
    		mframe.add(add);
    		add.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new Addstu();
    			}
    		});
    		
    		check=new JButton("查询");
    		check.setBorder(BorderFactory.createRaisedBevelBorder());
    		check.setBounds(515, 50, 100, 30);
    		mframe.add(check);
    		check.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new FindStu();
    			}
    		});
    		
    		delete=new JButton("删除");
    		delete.setBorder(BorderFactory.createRaisedBevelBorder());
    		delete.setBounds(20, 120, 100, 30);
    		mframe.add(delete);
    		delete.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new DelStu();
    			}
    		});
    		
    		Alter=new JButton("修改");
    		Alter.setBorder(BorderFactory.createRaisedBevelBorder());
    		Alter.setBounds(515, 120, 100, 30);
    		mframe.add(Alter);
    		Alter.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new AlterStu();
    			}
    		});
    		
    		sum=new JButton("总人数");
    		sum.setBorder(BorderFactory.createRaisedBevelBorder());
    		sum.setBounds(20, 190, 100, 30);
    		mframe.add(sum);
    		sum.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new Sum();
    			}
    		});
    
    		Date currentTime;
    		SimpleDateFormat formatter;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    		formatter=new SimpleDateFormat("yy-MM-dd HH:mm:ss");//时间格式
    		currentTime= new Date();//当前时间
    		String dateString=formatter.format(currentTime);
    		d=new JLabel("当前时间:");
    		d.setFont(new Font("楷体", Font.BOLD, 15));
    		d.setForeground(Color.BLACK);
    		d.setBounds(20, 300, 350, 15);
    		mframe.add(d);
    		t=new JLabel(dateString);
    		t.setFont(new Font("楷体", Font.BOLD, 15));
    		t.setForeground(Color.BLACK);
    		t.setBounds(100, 300, 350, 15);
    		mframe.add(t);
    		
    		view=new JButton("查看");
    		view.setBorder(BorderFactory.createRaisedBevelBorder());
    		view.setBounds(515, 190, 100, 30);
    		mframe.add(view);
    		view.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new View();
    			}
    		});
    		
    		exit=new JButton("退出");
    		exit.setBorder(BorderFactory.createRaisedBevelBorder());
    		exit.setBounds(515, 300, 100, 30);
    		mframe.add(exit);
    		exit.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				new LoginGui();
    				mframe.setVisible(false);//隐藏
    				JOptionPane.showMessageDialog(null,"成功退出");
    			}
    		});
    		
    		ImageIcon img = new ImageIcon("11.jpg");
    		JLabel jl = new JLabel(img); 
    		jl.setBounds(0, -50,650	,450);
    		mframe.add(jl);
    		
    		mframe.setSize(650, 390);
    		mframe.setVisible(true);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		mframe.setLocation(d.width/2-mframe.getWidth()/2,d.height/2-mframe.getHeight()/2);
    	}
    }
    

    添加学生学籍

    public class Addstu{
    	private JFrame frame;
    	private JTextField idtext;
    	private JTextField nametext;
    	private JTextField agetext;
    	private JComboBox zytext;
    	private JTextField clatext;
    	private JComboBox settext;
    	private JComboBox ptext;
    	private	JTextArea text;
    	private Writer fw;
    	private Writer fw1;
    	private BufferedReader br;
    	private FileReader fr;
    	String str1;
    	boolean check=false;
    	boolean n=false;
    	boolean b=false;
    	public Addstu(){
    		Date currentTime;
    		SimpleDateFormat formatter;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    		formatter=new SimpleDateFormat("yyyy-MM-dd\\HH:mm:ss");//时间格式
    		currentTime= new Date();//当前时间
    		String dateString=formatter.format(currentTime);
    		makeframe();
    		JButton ok=new JButton("确定");
    		ok.setBounds(35, 320, 100, 25);
    		frame.add(ok);
    		JButton cancel=new JButton("取消");
    		cancel.setBounds(200, 320, 100, 25);
    		frame.add(cancel);
    		ok.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				try{
    					String str=idtext.getText();
    					String strage=agetext.getText();
    					fr = new FileReader(StuFrame.file);
    					br = new BufferedReader(fr);
    					str1=br.readLine();
    					while(str1!=null) {
    						b=true;
    						String regex="\\s";
    						String regex1="201\\d{7}";
    						String regex2="\\d{1,2}";
    						String[] s=str1.split(regex);
    						if(str.matches(regex1)&&strage.matches(regex2)) {
    							if(str.equals(s[0])) {
    								JOptionPane.showMessageDialog(null,"学号相同,录入失败");
    								break;
    							}else {
    								try{
    									int a=Integer.parseInt(str)%10;
    									fw = new FileWriter(StuFrame.file,true);
    									fw.append(idtext.getText()+"\t"+
    											nametext.getText()+"\t"+
    											agetext.getText()+"\t"+
    											settext.getSelectedItem()+"\t"+
    											ptext.getSelectedItem()+"\t"+
    											zytext.getSelectedItem()+"\t"+
    											clatext.getText()+"\t"+
    											text.getText()+"\t"+
    											dateString+"\n");
    									fw1 = new FileWriter("stu.txt",true);
    									fw1.append(str+" "+a+"\n");	
    									JOptionPane.showMessageDialog(frame,"录入成功");
    									check=true;
    									n=true;
    								}catch(Exception e1){
    									
    								}finally {
    									try {	
    										fw1.close();
    										fw.close();															
    									} catch (IOException e1) {
    										System.out.println("错误");
    									}
    								}
    							}
    							if(check) {
    								str1=null;
    							}else {
    								str1=br.readLine();							
    							}
    						}else {
    							JOptionPane.showMessageDialog(null,"学号输入有误");
    							break;
    						}
    					}
    					if(!b) {
    						String regex1="201\\d{7}";
    						String regex2="\\d{1,2}";
    						if(str.matches(regex1)) {
    							if(strage.matches(regex2)) {
    								int a=Integer.parseInt(str)%10;
    								fw = new FileWriter(StuFrame.file,true);
    								fw.append(idtext.getText()+"\t"+
    										nametext.getText()+"\t"+
    										agetext.getText()+"\t"+
    										settext.getSelectedItem()+"\t"+
    										ptext.getSelectedItem()+"\t"+
    										zytext.getSelectedItem()+"\t"+
    										clatext.getText()+"\t"+
    										text.getText()+"\t"+
    										dateString+"\n");
    								fw1 = new FileWriter("stu.txt",true);
    								fw1.append(str+" "+a+"\n");
    								JOptionPane.showMessageDialog(frame,"录入成功");
    								check=true;
    							}
    						}else {
    							JOptionPane.showMessageDialog(null,"学号输入有误");
    						}
    					}
    				}catch(Exception e1){
    				}finally {
    					try {
    						fw.close();
    						fw1.close();
    						br.close();															
    					} catch (Exception e1) {
    						System.out.println("");
    					}
    				}
    			}
    		});
    		cancel.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				frame.setVisible(false);
    			}
    		});
    	}
    	
    	public static void main(String[] args) {
    		new Addstu();
    	}
    	public void makeframe() {
    		
    		frame=new JFrame("添加信息");
    		frame.setLayout(null);
    		
    		idtext=new JTextField();
    		idtext.setBounds(100, 20, 200, 25);
    		frame.add(idtext);
    		JLabel id=new JLabel();
    		id.setText("学号:");
    		id.setBounds(40, 18, 120, 30);
    		frame.add(id);
    		
    		nametext=new JTextField(20);
    		nametext.setBounds(380, 20, 200, 25);
    		frame.add(nametext);
    		JLabel name=new JLabel();
    		name.setText("姓名:");
    		name.setBounds(330, 18, 120, 30);
    		frame.add(name);
    		
    		agetext=new JTextField(20);
    		agetext.setBounds(100, 60, 200, 25);
    		frame.add(agetext);
    		JLabel age=new JLabel();
    		age.setText("年龄:");
    		age.setBounds(40, 60, 120, 30);
    		frame.add(age);
    		
    		JLabel sex=new JLabel();
    		sex.setText("性别:");
    		sex.setBounds(330, 60, 120, 30);
    		frame.add(sex);
    		String[] ranks= {"男","女"};
    		settext=new JComboBox(ranks);
    		settext.setBounds(380, 60, 200, 25);
    		frame.add(settext);
    		
    		JLabel p=new JLabel();
    		p.setText("政治面貌:");
    		p.setBounds(330, 100, 120, 30);
    		frame.add(p);
    		String[] ps= {"共青团员","党员","群众","其他"};
    		ptext=new JComboBox(ps);
    		ptext.setBounds(400, 100, 180, 25);
    		frame.add(ptext);
    		
    		String[] zys= {"软件工程","网络工程","物联网工程","通信工程"};
    		zytext=new JComboBox(zys);
    		zytext.setBounds(100, 140, 200, 25);
    		frame.add(zytext);
    		JLabel zy=new JLabel();
    		zy.setText("专业:");
    		zy.setBounds(40, 140, 100, 30);
    		frame.add(zy);
    		
    		clatext=new JTextField(20);
    		clatext.setBounds(380, 140, 200, 25);
    		frame.add(clatext);
    		JLabel cla=new JLabel();
    		cla.setText("班级:");
    		cla.setBounds(330, 140, 200, 30);
    		frame.add(cla);
    		
    		text=new JTextArea();
    		text.setBounds(100, 180, 480, 100);
    		frame.add(text);
    		JLabel bz=new JLabel();
    		bz.setText("备注:");
    		bz.setBounds(40, 180, 100, 30);
    		frame.add(bz);
    
    		frame.setSize(650, 390);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    		frame.setVisible(true);
    	}
    }
    

    删除学生学籍

    public class DelStu {
    	private JFrame frame;
    	private JLabel title;//p4包括确认密码时的输入框;点击register按钮出现
    	private JTextField idt;
    	private JButton log,cancel;
    	private FileReader fr; 
    	private BufferedReader br;
    	private Writer fw;
    	static String refile;
    	private boolean check=false;
    	
    	public DelStu(){
    		makeframe();
    		refile=StuFrame.file+"1";
    		File users=new File(refile);
    		if(!users.exists()){
    			try{
    				users.createNewFile();
    			}catch(Exception e1){
    				JOptionPane.showMessageDialog(null,"创建用户文档失败");
    			}
    		}
    	}
    	public void makeframe(){
    		Date currentTime;
    		SimpleDateFormat formatter;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    		formatter=new SimpleDateFormat("yyyy-MM-dd\\HH:mm:ss");//时间格式
    		currentTime= new Date();//当前时间
    		String dateString=formatter.format(currentTime);
    		frame = new JFrame("删除");
    		frame.setLayout(null);
    		
    		title=new JLabel("输入删除的学号:");
    		title.setFont(new Font("楷体", Font.BOLD, 20));
    		title.setForeground(Color.BLACK);
    		title.setBounds(50, 40, 200, 20);
    		frame.add(title);
    		idt = new JTextField(10);
    		idt.setBounds(100, 100, 140, 25);
    		frame.add(idt);
    
    		log = new JButton("删除");
    		log.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		log.setBounds(105, 255, 130, 30);
    		frame.add(log);
    		log.addActionListener(new ActionListener() {
    					
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				try {
    					String id=idt.getText();
    					fr=new FileReader(StuFrame.file);
    					System.out.println(StuFrame.file);
    					br=new BufferedReader(fr);
    					fw = new FileWriter(refile,true);
    					String str=br.readLine();
    					while(str!=null) {
    						String regex="\\s";
    						String[] s=str.split(regex);
    						str=br.readLine();
    						if(id.equals(s[0])) {
    							check=true;
    							continue;
    						}
    						try{
    							fw.append(s[0]+"\t"+s[1]+"\t"+s[2]+"\t"+s[3]+"\t"
    									+s[4]+"\t"+s[5]+"\t"+s[6]+"\t"+s[7]+"\t"
    									+s[8]+"\n");
    						}catch(Exception e1){
    							JOptionPane.showMessageDialog(null,"录入信息失败");
    						}finally {
    //							br.close();
    //							fr.close();
    						}
    					}
    					if(check) {
    						JOptionPane.showMessageDialog(frame,"删除成功");	
    						frame.setVisible(false);
    					}else {
    						JOptionPane.showMessageDialog(frame,"查看死否有此人,删除失败");
    						frame.setVisible(false);
    					}
    				} catch (FileNotFoundException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}finally {
    					try {
    						fw.close();						
    						fr.close();
    						br.close();
    						File file1=new File(StuFrame.file);
    						System.out.println(file1.delete());
    						File file2=new File("stulist.txt");
    						File file3=new File(refile);
    						System.out.println(file3.renameTo(file2));
    //						Addstu.file=refile;
    //						System.out.println(Addstu.file);
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}					
    				}
    			}
    		});
    	
    		cancel = new JButton("返回");
    		cancel.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		cancel.setBounds(105, 300, 130, 30);
    		frame.add(cancel);
    		cancel.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				frame.setVisible(false);
    			}
    		});
    		
    		frame.setSize(350, 400);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    		frame.setVisible(true);	
    	}
    	public static void main(String[] args) {
    		new DelStu();
    	}
    }
    

    修改学生学籍

    public class AlterStu {
    	private JFrame frame;
    	private JLabel title;
    	private JTextField idt;
    	private JButton log;
    	private FileReader fr; 
    	private BufferedReader br;
    	private JTextField idtext;
    	private JTextField nametext;
    	private JTextField agetext;
    	private JTextField yxtext;
    	private JComboBox zytext;
    	private JTextField clatext;
    	private JComboBox settext;
    	private JComboBox ptext;
    	private	JTextArea text;
    	private Writer fw;
    	private Writer fw1;
    	static String dfile;
    	int index=0;
    	int sum=0;
    	int c=0;
    	public AlterStu(){
    		makeframe();
    		dfile=StuFrame.file+"2";
    	}
    	public void makeframe(){
    		Date currentTime;
    		SimpleDateFormat formatter;//进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    		formatter=new SimpleDateFormat("yyyy-MM-dd\\HH:mm:ss");//时间格式
    		currentTime= new Date();//当前时间
    		String dateString=formatter.format(currentTime);
    		frame = new JFrame("删除");
    		frame.setVisible(true);	
    		frame.setLayout(null);
    		
    		title=new JLabel("输入修改的学号:");
    		title.setForeground(Color.BLACK);
    		title.setBounds(150, 20, 200, 25);
    		frame.add(title);
    		idt = new JTextField(10);
    		idt.setBounds(255, 20, 140, 25);
    		frame.add(idt);
    
    		log = new JButton("search");
    		log.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		log.setBounds(400, 20, 80, 25);
    		frame.add(log);
    		log.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				try {
    					String id=idt.getText();
    					fr=new FileReader(StuFrame.file);
    					System.out.println(StuFrame.file);
    					br=new BufferedReader(fr);
    					String str=br.readLine();
    					while(str!=null) {
    						String regex="\\s";
    						String[] s=str.split(regex);
    						if(id.equals(s[0])) {
    							idtext.setText(s[0]);
    							nametext.setText(s[1]);
    							agetext.setText(s[2]);
    							settext.setSelectedItem(s[3]);
    							ptext.setSelectedItem(s[4]);
    							zytext.setSelectedItem(s[5]);
    							clatext.setText(s[6]);
    							text.setText(s[7]);
    						}
    						index++;
    						str=br.readLine();
    					}
    				} catch (FileNotFoundException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}finally {
    					try {
    						fr.close();
    						br.close();					
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    				}
    			}
    		});
    		
    		JButton ok=new JButton("确定");
    		ok.setBounds(50, 325, 100, 25);
    		frame.add(ok);
    		ok.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				try{
    					fw = new FileWriter(StuFrame.file,true);
    					System.out.println(StuFrame.file);
    					fw.append(idtext.getText()+"\t"+
    							nametext.getText()+"\t"+
    							agetext.getText()+"\t"+
    							settext.getSelectedItem()+"\t"+
    							ptext.getSelectedItem()+"\t"+
    							zytext.getSelectedItem()+"\t"+
    							clatext.getText()+"\t"+
    							text.getText()+"\t"+
    							dateString+"\n");
    				}catch(Exception e1){
    					JOptionPane.showMessageDialog(null,"录入信息失败");
    				}finally {	
    					try {
    						fw.close();
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    				}
    				try {
    					fr=new FileReader(StuFrame.file);
    					br=new BufferedReader(fr);
    					fw1 = new FileWriter(dfile,true);
    					String str=br.readLine();
    					while(str!=null) {
    						sum++;
    						String regex="\\s";
    						String[] s=str.split(regex);
    						str=br.readLine();
    						if(index==sum) {
    							continue;
    						}
    						try{
    							fw1.append(s[0]+"\t"+s[1]+"\t"+s[2]+"\t"+s[3]+"\t"+
    									s[4]+"\t"+s[5]+"\t"+s[6]+"\t"+s[7]+"\t"+dateString+"\n");
    						}catch(Exception e1){
    							JOptionPane.showMessageDialog(null,"修改失败");
    						}finally {
    						}
    					}
    //					JOptionPane.showMessageDialog(null,"修改成功");
    				} catch (FileNotFoundException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}finally {					
    					try {
    						fw1.close();							
    						br.close();
    						fr.close();
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    				}
    				JOptionPane.showMessageDialog(frame,"修改成功");
    				File file1=new File(StuFrame.file);
    				System.out.println(file1.delete());
    				File file2=new File("stulist.txt");
    				File file3=new File(dfile);
    				System.out.println(dfile);
    				System.out.println(file3.renameTo(file2));
    //				Addstu.file=dfile;
    			}
    		});
    		JButton cancel=new JButton("取消");
    		cancel.setBounds(460, 325, 100, 25);
    		frame.add(cancel);
    		cancel.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				frame.setVisible(false);
    			}
    		});
    		
    		idtext=new JTextField();
    		idtext.setBounds(100, 60, 200, 25);
    		frame.add(idtext);
    		JLabel id=new JLabel();
    		id.setText("学号:");
    		id.setBounds(40, 60, 120, 30);
    		frame.add(id);
    		
    		nametext=new JTextField(20);
    		nametext.setBounds(380, 60, 200, 25);
    		frame.add(nametext);
    		JLabel name=new JLabel();
    		name.setText("姓名:");
    		name.setBounds(330, 60, 120, 30);
    		frame.add(name);
    		
    		agetext=new JTextField(20);
    		agetext.setBounds(100, 100, 200, 25);
    		frame.add(agetext);
    		JLabel age=new JLabel();
    		age.setText("年龄:");
    		age.setBounds(40, 100, 120, 30);
    		frame.add(age);
    		
    		JLabel sex=new JLabel();
    		sex.setText("性别:");
    		sex.setBounds(330, 100, 120, 30);
    		frame.add(sex);
    		String[] ranks= {"男","女"};
    		settext=new JComboBox(ranks);
    		settext.setBounds(380, 100, 200, 25);
    		frame.add(settext);
    		
    		JLabel p=new JLabel();
    		p.setText("政治面貌:");
    		p.setBounds(330, 140, 120, 30);
    		frame.add(p);
    		String[] ps= {"共青团员","党员","群众","其他"};
    		ptext=new JComboBox(ps);
    		ptext.setBounds(400, 140, 180, 25);
    		frame.add(ptext);
    		
    		String[] zys= {"软件工程","网络工程","物联网工程","通信工程"};
    		zytext=new JComboBox(zys);
    		zytext.setBounds(100, 180, 200, 25);
    		frame.add(zytext);
    		JLabel zy=new JLabel();
    		zy.setText("专业:");
    		zy.setBounds(40, 180, 100, 30);
    		frame.add(zy);
    		
    		clatext=new JTextField(20);
    		clatext.setBounds(380, 180, 200, 25);
    		frame.add(clatext);
    		JLabel cla=new JLabel();
    		cla.setText("班级:");
    		cla.setBounds(330, 180, 200, 30);
    		frame.add(cla);
    		
    		text=new JTextArea();
    		text.setBounds(100, 220, 480, 100);
    		frame.add(text);
    		JLabel bz=new JLabel();
    		bz.setText("备注:");
    		bz.setBounds(40, 220, 100, 30);
    		frame.add(bz);
    		
    		frame.setSize(650, 390);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    	}
    	public static void main(String[] args) {
    		new AlterStu();
    	}
    }
    

    查询学生学籍

    public class FindStu {
    	private JFrame frame;
    	private JLabel title;
    	private JTextField idt;
    	private JTextArea find;
    	private JButton log,cancel;
    	private FileReader fr; 
    	private BufferedReader br;
    	boolean check;
    	public FindStu(){
    		makeframe();
    	}
    		public void makeframe(){
    		frame = new JFrame("查找");
    		frame.setLayout(null);
    		
    		title=new JLabel("输入学号:");
    		title.setFont(new Font("楷体", Font.BOLD, 20));
    		title.setForeground(Color.BLACK);
    		title.setBounds(28, 20, 150, 20);
    		frame.add(title);
    		idt = new JTextField(10);
    		idt.setBounds(140, 19, 140, 25);
    		frame.add(idt);
    		
    		find=new JTextArea();
    		find.setBounds(10, 50, 315, 250);
    		frame.add(find);
    		
    		log = new JButton("查找");
    		log.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		log.setBounds(25, 305, 130, 30);
    		frame.add(log);
    		log.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				try {
    					int sum=0;
    					String id=idt.getText();
    					fr=new FileReader(StuFrame.file);
    					br=new BufferedReader(fr);
    					String str=br.readLine();
    					check=false;
    					while(str!=null) {
    						sum++;
    						String regex="\\s";
    						String[] s=str.split(regex);
    						if(id.equals(s[0])) {
    							String str1="学号:\t"+s[0]+"\n"+
    										"姓名:\t"+s[1]+"\n"+
    										"年龄:\t"+s[2]+"\n"+
    										"性别:\t"+s[3]+"\n"+
    										"政治面貌:\t"+s[4]+"\n"+
    										"专业:\t"+s[5]+"\n"+
    										"班级:\t"+s[6]+"\n"+
    										"备注:\\t"+s[7]+"\n"+
    										"添加的时间:"+s[8]+"\n";
    							find.setText(str1);	
    							check=true;
    						}
    						str=br.readLine();
    					}
    				} catch (FileNotFoundException e1) {
    					// TODO Auto-generated catch block
    					System.out.println("还没有添加学生学籍");
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} finally {
    					try {
    						br.close();
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    				}
    				if(!check) {						
    					JOptionPane.showMessageDialog(frame,"查无此人");
    				}
    			}
    		});
    		
    		cancel = new JButton("返回");
    		cancel.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		cancel.setBounds(180, 305, 130, 30);
    		frame.add(cancel);
    		cancel.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				frame.setVisible(false);
    			}
    		});
    		
    		frame.setSize(350, 400);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    		frame.setVisible(true);
    	}
    		public static void main(String[] args) {
    			new FindStu();
    		}
    }
    

    显示学生学籍

    public class View {
    	private JFrame frame;
    	public static Database db;
    	private JTextArea find;
    	private JButton cancel;
    	private FileReader fr; 
    	private BufferedReader br;
    	private DefaultTableModel model;
    	private JTable table;
    	private JScrollPane scr;
    	public View(){
    		makeframe();
    		makeModel();
    		makeTable();
    	}
    	private void makeTable() {
    		makeModel();
    		this.table = new JTable(model);
    		this.scr = new JScrollPane(this.table);
    	
    	}
    		public void makeframe(){
    			frame = new JFrame("查看");
    			frame.setLayout(null);
    		cancel = new JButton("返回");
    		cancel.setBorder(BorderFactory.createEtchedBorder(Color.BLUE, Color.YELLOW));
    		cancel.setBounds(240, 305, 130, 30);
    		frame.add(cancel);
    		cancel.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				frame.setVisible(false);
    			}
    		});
    		
    		frame.setSize(650, 390);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    		frame.setVisible(true);
    	}
    		private void makeModel() {
    			String[] titles = { "学号", "姓名", "年龄", "性别","院系","政治面貌","专业","班级","备注" };
    			System.out.println(db.size());
    			Object[][] info = new Object[db.size()][titles.length];
    			for (int i = 0; i < db.size(); i++) {
    				Student data = db.get(i);
    				info[i][0] = data.getId();
    				info[i][1] = data.getName();
    				info[i][2] = data.getAge();
    				info[i][3] = data.getSex();
    				info[i][4] = data.getYx();
    				info[i][5] = data.getP();
    				info[i][6] = data.getZy();
    				info[i][7] = data.getCla();
    				info[i][8] = data.getBz();
    			}
    			this.model = new DefaultTableModel(info, titles);
    		}
    		public static void main(String[] args) {
    			new View();
    		}
    }
    

    查看学生总人数

    public class Sum {
    	JFrame frame;
    	JLabel p,p1;
    	BufferedReader br;
    	FileReader fr;
    	int sum=0;
    	public Sum(){
    		makeframe();
    	}
    	public void makeframe(){
    		frame = new JFrame("总人数");
    		frame.setSize(200, 200);
    		frame.setVisible(true);
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation(d.width / 2 - frame.getWidth() / 2, d.height / 2- frame.getHeight() / 2);
    		try {
    			fr = new FileReader(StuFrame.file);
    			br = new BufferedReader(fr);
    			String str1=br.readLine();
    			while(str1!=null) {
    				sum++;
    				str1=br.readLine();
    			}
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			try {
    				fr.close();
    				br.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		
    		p=new JLabel("总人数:"+sum);
    		p.setFont(new Font("楷体", Font.BOLD, 20));
    		p.setForeground(Color.BLACK);
    		p.setBounds(220, 30, 350, 20);
    		frame.add(p);
    	}
    }
    

    测试

    public class StuFrame {
    	public static ArrayList<Account> usersList;
    	public static Reader fw;
    	static File user;
    	static String file="stulist.txt";
    	
    	public static void main(String[] args)throws Exception{
    		try {
    			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 
    		usersList=new ArrayList<Account>();
    		File users=new File("stu.txt");
    		if(!users.exists()){
    			try{
    				users.createNewFile();
    				Writer fw = new FileWriter("stu.txt");
    				fw.write("admin 12345"+"\n");
    				fw.flush();
    				fw.close();
    			}catch(Exception e1){
    				JOptionPane.showMessageDialog(null,"创建用户文档失败");
    			}
    		}
    		usersListRead();
    		user=new File(file);
    		if(!user.exists()){
    			try{
    				user.createNewFile();
    			}catch(Exception e1){
    				JOptionPane.showMessageDialog(null,"创建用户文档失败");
    			}
    		}
    		//Login
    		LoginGui loginGui=new LoginGui();
    	}
    	public static void usersListRead(){
    		try{
    			fw=new FileReader("stu.txt");//字符流
    		}catch(Exception e){
    			System.out.println("字符流创建失败");
    		}
    		BufferedReader bfr=new BufferedReader(fw);
    		String temp;
    		try{
    			//System.out.println("开始写入list");
    			while((temp=bfr.readLine())!=null){
    				String[] tmpstr=temp.split("\\s+");//分割空格
    				Account a=new Account(tmpstr[0],tmpstr[1]);
    				usersList.add(a);
    			}
    			bfr.close();
    			fw.close();
    		}catch(Exception e){
    			System.out.println("读取用户文档失败");
    		}
    	}
    }
    

    public class StuFrame {
    public static ArrayList usersList;
    public static Reader fw;
    static File user;
    static String file=“stulist.txt”;

    public static void main(String[] args)throws Exception{
    	try {
    		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    	} catch (Exception e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} 
    	usersList=new ArrayList<Account>();
    	File users=new File("stu.txt");
    	if(!users.exists()){
    		try{
    			users.createNewFile();
    			Writer fw = new FileWriter("stu.txt");
    			fw.write("admin 12345"+"\n");
    			fw.flush();
    			fw.close();
    		}catch(Exception e1){
    			JOptionPane.showMessageDialog(null,"创建用户文档失败");
    		}
    	}
    	usersListRead();
    	user=new File(file);
    	if(!user.exists()){
    		try{
    			user.createNewFile();
    		}catch(Exception e1){
    			JOptionPane.showMessageDialog(null,"创建用户文档失败");
    		}
    	}
    	//Login
    	LoginGui loginGui=new LoginGui();
    }
    public static void usersListRead(){
    	try{
    		fw=new FileReader("stu.txt");//字符流
    	}catch(Exception e){
    		System.out.println("字符流创建失败");
    	}
    	BufferedReader bfr=new BufferedReader(fw);
    	String temp;
    	try{
    		//System.out.println("开始写入list");
    		while((temp=bfr.readLine())!=null){
    			String[] tmpstr=temp.split("\\s+");//分割空格
    			Account a=new Account(tmpstr[0],tmpstr[1]);
    			usersList.add(a);
    		}
    		bfr.close();
    		fw.close();
    	}catch(Exception e){
    		System.out.println("读取用户文档失败");
    	}
    }
    

    }

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,458
精华内容 583
关键字:

学生学籍管理系统java

java 订阅