精华内容
下载资源
问答
  • excel成绩管理系统

    2010-01-07 15:36:13
    本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、...
  • 本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、...
  • 任务一:制作学生成绩表 景介绍:马上要期末考试了,学校要总结一下这学年的 成绩,赵老师急需要一些成绩表来帮助她...例分析:本实例在设计时,使用了条件格式设置颜色、 函数应用等操作来完成学生成绩表的制作。
  • 知识点:理解查询的机制、使用select语句进行条件查询、掌握order by排序,熟悉常用的系统函数。 1、T-SQL 查询机制 生活中也有很多查询,比如查询考试成绩地域60分的,要进行补考;查询身高大于175cm的男生可以...

    知识点:理解查询的机制、使用select语句进行条件查询、掌握order by排序,熟悉常用的系统函数。

    1、T-SQL 查询机制

            生活中也有很多查询,比如查询考试成绩地域60分的,要进行补考;查询身高大于175cm的男生可以参加某项活动……

            对于程序员来说,大多数情况下是针对数据库已有的数据进行查询,以获得数据。那么数据库是如何进行查询的呢?其实可以理解为“筛选”,将符合条件的数据抽取出来。

            数据库在接收到查询请求的时候,可以简单理解为它将“逐行判断”,判断是否符合查询条件。如果符合查询条件,就把数据抽取出来,然后把所有被选中的行组织在一起,形成另外一个类似于表的结构,构成查询的结果,通常叫做记录集

            由于记录集的结构实际上和表的结构类似,都是由行组成的,因此在记录集上依然可以进行再次查询。

    举例:查询学生信息表中,性别为“女”的学生

    查询结果:

     

    2、使用select语句进行查询

    使用SELECT语句查询数据(简单格式),语法:

    select 列名 

    from 表名 

    [where  查询条件表达式 ]

    [order by 排序的列名 [asc 或 desc]];

    • 列名:可以查询一列数据,也可以查询多列数据,如果是多列,列名与列名 之间用英文逗号隔开
    • 表名:从哪个表中查询数据,要指明。
    • where子句:where是可选项,如果不限制,则查询返回所有行的数据。
    • order by子句:order by是可选项,对查询结果进行排序。

     

    2.1 使用SELECT语句查询表中所有数据

    语法:select * from 表名;

    • * 表示所有的列

    前提条件:至少有一个数据库表,才能查询。

    前期准备:这里为了方便后续查询,完整的创建了数据库、数据库表、并且向表中插入几行数据。

    --创建一个数据库
    create database SchoolDB;
    --使用数据库
    use SchoolDB;
    --创建数据库表
    create table Student(
    	StudentNo int primary key identity(1831301,1),      --每一列设置完成以后,用英文逗号隔开
    	Names nvarchar(30) not null,
    	Gender char(2) not null,
    	Age int not null,
    	Major int not null,
    	Works nvarchar(20)                                  --最后一列不需要逗号
    );
    --一次插入多行数据
    insert into Student(Names,Gender,Age,Major,Works)
    select '倪大红','男',28,1,'都挺好' union                --每一行数据以select开头,union结尾
    select '谢娜','女',17,3,'快乐大本营' union
    select '姚晨','女',18,1,'都挺好' union
    select '蔡徐坤','男',16,1,'偶像练习生' union
    select '杨幂','女',18,1,'三生三世' union
    select '李彦宏','男',24,4,'百度' union
    select '马化腾','男',25,4,'腾讯QQ' union
    select '何炅','男',21,3,'快乐大本营' union
    select '李荣浩','男',18,2,'模特' ;                      --最后一行数据,不需要union

    此时表中已有数据信息,使用select语句查询表中所有信息

    --查询表中所有信息
    select * from Student;

     

    2.2 查询部分行或列

    select 列名1,列名2,列名3,……
    
    from student
    
    where Major=1 ;
    
    

    举例:查询表中专业代号是1的学生信息,显示学生的编号、姓名、年龄。

    select StudentNo,Names,Age
    from Student
    where Major=1;

    思考:查询满足多个条件的数据信息

    举例:查询专业代号为1,且性别是女,的学生信息,显示学生编号、姓名、性别

    --查询专业代号为1,且性别是女,的学生信息,显示学生编号、姓名、性别
    select StudentNo,Names,Gender
    from Student
    where Major=1 and Gender='女';

    思考:查询专业代号为1或者4,且性别是男,的学生信息,显示学生编号、姓名、性别、专业代号

    select StudentNo,Names,Gender,Major
    from Student
    where (Major=1 or Major=4) and Gender='男';      --可以适当运用小括号进行条件设置

    查询结果:

     

    2.3 查询结果显示列的别名

    举例:查询表中专业代号是1的学生,显示学生编号、姓名、专业三列信息,并且给这三列起个别名。

    注意:有3种方法,给新的记录集里面的列起别名:

    • 列名 as 别名
    • 别名=列名
    • 列名 空格 别名

    别名的另外一种使用情况:计算、合并得到新列的命名。

    注意:列名1+’.’+列名2 as 别名;别名=列名1+’.’+列名2

    •       +连接的数据类型必须兼容。(即数字和数字类型可以合并,字符和字符类型可以合并)
    •       如果+连接字符型数据,结果为字符串数据的连接。(示例中用英文符号.进行字符分隔)
    •       如果+连接数值型数据,结果为数值的和。
    select Names,StudentNo,Major,Age,Names+'.'+Works as 姓名作品,专业年龄 = Major+Age
    from Student
    where Major=1;

    注意:此处举例并不恰当,一般是进行有意义的合并。如将考试成绩的不同列进行合并、如将姓和名分开的内容进行合并等。

     

    2.4 查询空值

    前期准备:往数据库里插入一行有空值的数据。

    --插入一行有空值的数据
    insert into Student values ('张三','男',18,2,null );   --输入null和''是有区别的,null表示什么都没有
    insert into Student values ('李四','女',18,2,'' );     --输入'',表示输入空的字符串

    查询信息表中某一列的值是否为空或者不为空用is null 或者 is not null来判断

    注意:观察查询结果,只有一行数据显示出来,为什么?(空字符串也是一种内容,就像我们输入框里敲一个空格,看起来是空白,但实际上占用空间了)

    测试:查询作品列有数据的信息

     

    2.5 在查询的记录集中新添加常量列

    适用情况:数据中本来没有某一列的数据,但是查询给出记录集的时候,新增加一列

    --查询学号、姓名、性别,并增加一列地址为“湖北武汉”
    select StudentNo,Names,Gender,'湖北武汉'as 地址
    from Student;

    注意:查询所有数据行时,不能使用此语句

     

    2.6 查询返回限制的行数

    适用情况:数据较多时,查询返回数据只取前10行或者前20%

    --查询表中前5个学生的信息
    select top 5 * from Student;
    --查询表中20%的学生信息
    select top 20 percent * from Student;
    --查询表中前5个学生的学号、姓名、性别
    select top 5 StudentNo,Names,Gender from Student;
    

    注意:按百分比提取记录,top 20 percent

     

    2.7 对查询结果进行排序

    适用情况:对查询结果进行排序,使用order by 列名 [ASC 或 DESC]

    ASC表示升序,也是默认值,DESC表示降序。

    --查询学生的学号、姓名、性别、年龄,并按年龄降序排列
    select StudentNo,Names,Gender,Age 
    from Student
    order by Age desc;

     

    2.8 查询时同时使用where和border by子句

    注意:当同时使用where子句和order by子句时,where子句必须放在order by子句的前面。即先筛选出符合条件的结果,再对结果进行排序。

    -- 查询年龄小于21岁的学生,编号、姓名、年龄、并按照年龄进行升序排列
    select StudentNo,Names,Age
    from Student
    where Age<21
    order by Age asc;

    思考:年龄为18的有多个学生?能否设置先按年龄排序,年龄相同的再按姓名排序?

    -- 查询年龄小于21岁的学生,编号、姓名、年龄、并按照年龄进行升序排列,年龄相同的数据,再按照姓名进行升序排列
    select StudentNo,Names,Age
    from Student
    where Age<21
    order by Age asc,Names asc;

    总结:排序时,可以有多个列设置。order by 列名1 asc,列名2 desc……

     

    3、在查询中使用函数

           SQL Server提供了一些内部函数,函数做什么用的?实现不同的功能,比如返回字符串的长度、通过出生日期和系统日期计算当前年龄……不同类别的函数都可以和 SELECTUPDATEINSERT 语句联合使用,常用的函数有以下几个分类:字符串函数、日期函数、数学函数、系统函数。

    字符串函数:用于控制返回给用户的字符串。如:获取字符串的长度、将字符串转换为大写、替换字符等

    日期函数:用于操作日期指。如:获取当前系统日期、两个日期之间的指定日期部分的间隔

    数学函数:用于对数值进行代数运算。如:返回从0到1之间的随机数、将数值表达式四舍五入为指定精度

    系统函数:获取有关SQL Server中对象和设置的系统信息。如:转变数据类型、返回当前所登录的用户名称(欢迎xxx登录)

     

    3.1 字符串函数

    字符串函数哟用于对字符串数据进行处理,并返回一个字符串或数字。

    函数名 描述 举例 返回结果 备注
    charindex 用来寻找一个制定的字符串,在另一个字符串中的起始位置。 select charindex ('test','this Test is test'); 6 对查询的字符串大小写不敏感
    select charindex ('test','this Test is test',7); 14
    len 返回传递给它的字符串的长度 select len('SQL Server 课程');  13 空格也会计算一个长度
    upper 把传递给它的字符串转换为大写 select upper ('SQL Server 课程');  'SQL SERVER 课程' 只对英文起作用
    ltrim 清除字符左边的空格 select ltrim(' SQL Server 课程 ');  'SQL Server 课程 ' 只删除最左边的空格
    rtrim 清除字符右边的空格 select rtrim(' SQL Server 课程 ');  ' SQL Server 课程' 只删除最右边的空格
    right 从字符串右边开始,返回指定数目的字符 select right(' SQL Server 课程 ',3);   '课程 ' 空格也包括在内
    replace 将字符串中的某个字符,替换成指定的字符 select replace(' SQL Server 课程 ','S','s');  ' sQL server 课程 '  
    stuff 在一个字符串中,从指定位置开始,删除指定长度的字符,并在该位置插入一个新的字符串 select stuff(' SQL Server 课程 ',3,2,'测试');    ' S测试 Server 课程 '  

    3.1.1  Charindex用来寻找一个指定的字符串在另一个字符串中的起始位置

     

    select charindex('test','this Test is test');     --不指定位置时,默认从第一个字符串开始计算,返回结果:6
    select charindex('test','this Test is test',7);   --数字7,代表从第7个字符串开始计算,返回结果:14
    select charindex('a','helloabc');                 --返回6
    select charindex('a','Ahelloabc');                --返回1

    注意:对查询的字符串大小写不敏感对空格也计算字符;可以指定从第几个字符开始计算

    总结语法:charindex(‘指定的字符串’,’要查询的字符串’,从第几个字符串开始查询);

     

    3.1.2  Len返回传递给它的字符串长度(计算字符串长度)

    --len函数:返回传递给它的字符串长度,返回结果:int类型
    select len('SQL Server 课程');      --返回结果:13(注意:空格也计算)
    select len('sqlserver');            --返回9
    select LEN('sql server');           --返回10
    select LEN('sql课程');              --返回5
    select LEN('sql,c#');               --返回6
    select works ,len(works) as 作品字符长度 from Student;   --在表中的应用

    注意:返回长度,空格也计算一个;中文占用一个;标点符号也会占用一个

    总结语法:len(‘要查询长度的字符串’);

    适用场景:用户注册账号时,检验输入密码是否满足长度要求。

     

    3.1.3   Upper将传递给它的字符串转换为大写

    select upper ('SQL Server 课程');   --返回结果:'SQL SERVER 课程'

    注意:仅对英文起作用

    总结语法:upper(‘要转换的字符串’);

     

    3.1.4  Ltrim清除字符串左边的空格

    select ltrim(' SQL Server 课程 ');  --返回结果:'SQL Server 课程 '

    注意:从字符串起始位置开始清除左边的空格,字符串中间的空格不会清除

    总结语法:ltrim(‘要清除左边空格的字符串’);

     

    3.1.5   Rtrim清除字符串右边的空格

    select rtrim(' SQL Server 课程 ');  --返回结果:' SQL Server 课程'

    注意:清除右边空格,结果展现不明显,可以用两个语法对比。

    语法: rtrim(‘要清除右边空格的字符串’);

     

    3.1.6  Right从字符串右边返回指定数目的字符串

    select right(' SQL Server 课程 ',3);  --数字3,代表从字符串右边开始,返回3个字符,空格也计算在内。返回结果: '课程 '

    注意:从字符串最后边开始计数,从1开始计数

    总结语法:right(‘指定的字符串’,要提取的字符数量);

    思考:求email列的域名(wangdi@qq.com)

    select right('wangdi@qq.com',len('wangdi@qq.com')-charindex('@','wangdi@qq.com'));  --返回结果:'qq.com'

    解题思路:

    • 第一步:先计算email的总长度,然后计算包括@在内的前面字符串的长度
    • 第二步:总长度—@前面的长度=域名的长度
    • 第三步:利用right得出email右边的字符(域名长度的字符即域名)

     

    3.1.7  Replace替换一个字符串中的字符

    select replace(' SQL Server 课程 ','S','s');           --返回结果:' sQL server 课程 '
    select replace(' SQL Server 课程 ','课程','数据库');   --返回结果: ' SQL Server 数据库 '
    select replace(' SQL Server 课程 ','数据库','课程');   --返回结果: ' SQL Server 课程 '
    select replace(' SQL Server 课程 ',' ','-');           --返回结果:'-SQL-Server-课程-'

    总结语法:replace(‘指定的字符串’,‘字符串中原有的字符’, ‘替换以后的字符’);

    适用场景:批量替换列值中的某个字符串(用到更新数据)

    --replace函数应用:将数据库表Student中Names列中,将“李”替换成“li”
    update Student set Names=replace(Names,'李','li');

     

    3.1.8  Stuff在一个字符串中,从指定位置,删除指定长度的字符,并在该位置插入一个新的字符串

    --stuff函数:在一个字符串中,从指定位置开始,删除指定长度的字符,并在该位置插入一个新的字符串
    select stuff(' SQL Server 课程 ',3,2,'测试');          --返回结果:' S测试 Server 课程 '

    总结语法:replace(‘指定的字符串’,指定的位置数字,删除字符串的长度数字, ‘新插入的字符串’);

     

    3.2 日期函数

            日期函数用于操作日期值,我们不能直接对日期运用数学函数(如加减乘除和取模),为什么?因为日期有年月日,如果要执行“当前日期+1”,sql无法理解是增加一年、一月、还是一日。那在现实生活中,如果要计算怎么办?比如登录账号多次失败以后,系统提示一天后才能再次登录。我们可以借助日期函数,来提取年月日,以便分别进行操作。

    函数名 描述 举例 返回结果
    getdate 获取当前的系统日期 select getdate(); 2019-04-20 18:46:48.040
    dateadd 将指定的数值添加到,指定日期部分后的日期(在指定日期上添加日、月、年) select dateadd(yy,1,'2019-04-20');      2020-04-20 00:00:00.000
    select dateadd(mm,2,'2019-04-20');      2019-06-20 00:00:00.000
    select dateadd(dd,1,'04/20/2019');     2019-04-21 00:00:00.000
    select dateadd(dd,4,getdate());         2019-04-24 19:37:54.223
    datediff 两个日期之间的指定日期部分的间隔(比如计算两个年份、月份、日期的结果)返回的是整数 select datediff(yy,'1999-11-23',getdate());  20
    select datediff(mm,'1999-11-23',getdate()); 233
    select (datediff(mm,'1999-11-23',getdate())/12);  19
    datename 获取日期中指定日期部分的字符串形式(将系统时间转换成字符串) select datename(dw,'2019-04-20'); 星期六
    select datename(qq,getdate());  2
    select datename(dy,getdate());  110
    select datename(wk,getdate());  16
    datepart 获取日期中指定日期部分的整数形式 select datepart(yy,getdate());  2019
    select datepart(mm,'2019-04-20'); 4
    select datepart(dd,getdate()); 20

    3.2.1  Getdate取得当前的系统日期

    --Getdate函数:获取当前的系统日期
    select getdate();              --返回结果:2019-04-20 18:46:48.040

    总结语法:getdate();

     

    3.2.2 Dateadd将指定的数值添加到指定日期部分后的日期(在指定日期上添加日、月、年)

    --dateadd函数:将指定的数值添加到,指定日期部分后的日期(在指定日期上添加日、月、年)
    select dateadd(yy,1,'2019-04-20');     --返回结果:2020-04-20 00:00:00.000
    select dateadd(mm,2,'2019-04-20');     --返回结果:2019-06-20 00:00:00.000
    select dateadd(dd,1,'04/20/2019');     --返回结果:2019-04-21 00:00:00.000
    select dateadd(dd,4,getdate());        --返回结果:2019-04-24 19:37:54.223

    总结语法:dateadd(指明要加在日期的哪个部分,要增加的数字,‘日期’);

     

    3.2.3  Datediff两个日期之间的指定日期部分的间隔(精确计算年龄)返回的是整数

    --datediff两个日期之间的指定日期部分的间隔(比如计算两个年份、月份、日期的结果(常用来精确计算年龄))返回的是整数
    select datediff(yy,'1999-11-23',getdate());           --返回结果:20
    select datediff(mm,'1999-11-23',getdate());           --返回结果:233
    select (datediff(mm,'1999-11-23',getdate())/12);      --返回结果:19  

    总结语法:datediff(指明计算日期的哪个部分差,‘日期1’,‘日期2’);

     

    3.2.4  Datename日期中指定日期部分的字符串形式(将系统时间转换成字符串)返回的是字符串

    --datename函数:获取日期中指定日期部分的字符串形式(将系统时间转换成字符串)返回的是字符串
    select datename(dw,'2019-04-20');   --获取星期几,返回结果:星期六
    select datename(qq,getdate());      --获取季度,返回结果:2
    select datename(dy,getdate());      --获取本年已过天数,返回结果:110
    select datename(wk,getdate());      --获取本年第几个星期,返回结果:16

    总结语法:datename(要返回的日期部分,‘日期’’);

     

    3.2.5   Datepart日期中指定日期部分的整数形式,返回的是整数

    --datepart函数:获取日期中指定日期部分的整数形式,返回的是整数
    select datepart(yy,getdate());         --获取年份 ,返回结果:2019
    select datepart(mm,'2019-04-20');      --获取月份,返回结果:4
    select datepart(dd,getdate());         --获取日期,返回结果:20

    总结语法:datepart(要返回的日期部分,‘日期’);

                                                        日期部分参数及其缩写

    日期部分参数 缩写 日期部分参数 缩写 日期部分参数 缩写
    年:year yy,yyyy 季度:quarter wk,ww 小时:hour hh
    月:month mm,m 第几周:week qq,q 分钟:minute mi,n
    日:date dd,d 星期几:weekday dw,w 秒钟:second ss,s

     

    3.3 数学函数

            数学函数用于对数值型数据进行处理,并返回处理结果。

    函数名 描述 语法 返回结果 备注
    rand 返回从0到1之间的随机float值 rand(); float 可以乘10、100……以获得更大的float
    abs 取数值表达式的绝对值 abs(要取绝对值的负数); 正数  
    ceiline 天花板,向上取整数,取大于或等于指定数值、表达式的最小整数 ceiling(数值或表达式); 整数 注意:对负数取ceiling值
    floor 地板,向下取整数,取小于或等于指定数值、表达式的最大整数 floor(数值或表达式); 整数 注意:对负数取floor值
    round 将数值表达式四舍五入为指定精度 round(数值,要返回的精度); 数字 配合fand()函数,生成0到100以内的随机整数
    sign 对于整数返回1,负数返回-1,对于0则返回0 sign(数字); 1或者-1或者0  
    sqrt 取浮点表达式的平方根 sqrt(数值或表达式); 数字  
    power 取数值表达式的幂值 power(数字1,数字2); 数字 求数字1的数字2次方
    --数学函数
    --rand函数:返回从0到1之间的随机float值,返回的是float
    select rand();        --返回从0到1之间的随机float值
    select rand()*100;    --返回从0到100以内的随机float值
    
    --abs函数:取数值表达式的绝对值,返回的是正数
    select abs(-5);       --返回结果:5
    select abs(5);        --返回结果:5
    select abs(0);        --返回结果:0
    
    --ceiling函数:天花板,向上取整数,取大于或等于指定数值、表达式的最小整数
    select ceiling(1.7);        --返回结果:2
    select ceiling(1);          --返回结果:1
    select ceiling(-1.7);       --返回结果:-1
    
    --floor函数:地板,向下取整数,取小于或等于指定数值、表达式的最大整数
    select floor(1.7);        --返回结果:1
    select floor(1);          --返回结果:1
    select floor(-1.7);       --返回结果:-2
    
    --round函数:将数值表达式四舍五入为指定精度 语法:round(数值,要返回的精度);
    select round(1.500,1);          --返回结果:1.500
    select round(1.630,0);          --返回结果:2.000
    select round(1.6366,2);         --返回结果:1.6400
    
    --sign函数:对于整数返回1,负数返回-1,对于0则返回0
    select sign(-5);               --返回结果:-1       
    select sign(5);                --返回结果:1   
    select sign(0);                --返回结果:0   
    select sign(3-5);              --返回结果:-1 (表达式:4-5=-2,所以返回-1)
    
    --sqrt函数:取浮点表达式的平方根
    select sqrt(9);                --返回结果:3 
    select sqrt(4.84);             --返回结果:2.2 
    
    --power函数:取数值表达式的幂值
    select power(3,3);                --返回结果:27
    select power(3,2);                --返回结果:9

     

    3.4  系统函数

            系统函数用来获取有关SQL Server中对象和设置的系统信息,后期我们学习c#需要连接数据库的时候会用到。

    函数名 描述 语法 返回结果 备注
    convert 用来转变数据类型 convert(要转换成的类型,被转换的日期,日期的格式); 字符串 一般用在将日期类型转换成字符串类型
    datalength 返回指定表达式的字节数 datalength(表达式);  整数 注意:len和datalength的区别
    host_name 返回当前用户所登录的计算机名字 select host_name();    右键“此电脑”,属性,查看计算机名字
    system_user 返回当前服务器的登录名 select system_user;    
    current_user 返回数据库用户名 select current_user;   注意:如果该数据库没有创建用户名,就代表使用的是默认用户名dbo
    --系统函数
    --convert函数:用来转变数据类型(一般用在将日期类型转换成字符串类型)
    select convert(varchar(10),getdate(),112);       --返回结果:20190420
    select convert(varchar(10),getdate(),111);       --返回结果:2019/04/20
           --注意:112/111/110表示日期类型yymmdd、yy/mm/dd、mm-dd-yy
    select convert(varchar(5),12345);                --返回结果:12345(注意:此时已是字符串类型数据)
    select convert(varchar(5),12345)+'abc';          --返回结果:12345abc(注意:先将数字12345转换为字符串,然后用加号连接两个字符串)
    select convert(int,'123')+3;                     --返回结果:126(注意:先将字符串123转换为整型,然后数字123+3=126)
    
    --datalength函数:返回指定表达式的字节数
    select datalength('sql课程');       --返回结果:7
    select len('sql课程');              --返回结果:5
    
    --host_name函数:返回当前用户所登录的计算机名字
    select host_name();                 --返回结果:LAPTOP-IN3E6IJP
    
    --system_user函数:返回当前服务器的登录名
    select system_user;                 --返回结果:返回当前服务器登录名sa
    
    --current_user函数:返回数据库用户名
    select current_user;                --返回结果:dbo

    ==此文所有SQL语句

    --创建一个数据库
    create database SchoolDB;
    --使用数据库
    use SchoolDB;
    --创建数据库表
    create table Student(
    	StudentNo int primary key identity(1831301,1),      --每一列设置完成以后,用英文逗号隔开
    	Names nvarchar(30) not null,
    	Gender char(2) not null,
    	Age int not null,
    	Major int not null,
    	Works nvarchar(20)                                  --最后一列不需要逗号
    );
    --一次插入多行数据
    insert into Student(Names,Gender,Age,Major,Works)
    select '倪大红','男',28,1,'都挺好' union                --每一行数据以select开头,union结尾
    select '谢娜','女',17,3,'快乐大本营' union
    select '姚晨','女',18,1,'都挺好' union
    select '蔡徐坤','男',16,1,'偶像练习生' union
    select '杨幂','女',18,1,'三生三世' union
    select '李彦宏','男',24,4,'百度' union
    select '马化腾','男',25,4,'腾讯QQ' union
    select '何炅','男',21,3,'快乐大本营' union
    select '李荣浩','男',18,2,'模特' ;                      --最后一行数据,不需要union
    
    --查询表中所有信息
    select * from Student;
    
    
    --查询表中专业代号是1的学生信息,显示学生的编号、姓名、年龄
    select StudentNo,Names,Age
    from Student
    where Major=1;
    
    --查询专业代号为1,且性别是女,的学生信息,显示学生编号、姓名、性别
    select StudentNo,Names,Gender
    from Student
    where Major=1 and Gender='女';
    
    --在查询记录集中显示列的别名
    select StudentNo as 学号 , 姓名 =Names , Major 专业
    from Student
    where major=1;
    
    --查询专业代号是1的学生,显示姓名、学号、专业、年龄,
    --并将姓名和作品相加后作为新的列显示
    --将专业和年龄相加后作为新的列显示
    select Names,StudentNo,Major,Age,Names+'.'+Works as 姓名作品,专业年龄 = Major+Age
    from Student
    where Major=1;
    
    --插入一行有空值的数据
    insert into Student values ('张三','男',18,2,null );   --输入null和''是有区别的,null表示什么都没有
    insert into Student values ('李四','女',18,2,'' );     --输入'',表示输入空的字符串
    
    
    --查询作品列为空的数据
    select * from Student where Works is null;
    
    --查询作品列有数据的信息
    select * from Student where Works is not null;
    
    --查询学号、姓名、性别,并增加一列地址为“湖北武汉”
    select StudentNo,Names,Gender,'湖北武汉'as 地址
    from Student;
    
    --查询表中前5个学生的信息
    select top 5 * from Student;
    --查询表中20%的学生信息
    select top 20 percent * from Student;
    --查询表中前5个学生的学号、姓名、性别
    select top 5 StudentNo,Names,Gender from Student;
    
    --查询学生的学号、姓名、性别、年龄,并按年龄降序排列
    select StudentNo,Names,Gender,Age 
    from Student
    order by Age desc;
    
    -- 查询年龄小于21岁的学生,编号、姓名、年龄、并按照年龄进行升序排列
    select StudentNo,Names,Age
    from Student
    where Age<21
    order by Age asc;
    
    --SQL查询中使用函数
    --字符串函数
    --charindex函数:用来寻找一个指定的字符串,在另一个字符串中的起始位置,返回结果:int类型
    select charindex('test','this Test is test');     --不指定位置时,默认从第一个字符串开始计算,返回结果:6
    select charindex('test','this Test is test',7);   --数字7,代表从第7个字符串开始计算,返回结果:14
    select charindex('a','helloabc');                 --返回6
    select charindex('a','Ahelloabc');                --返回1
    
    
    --len函数:返回传递给它的字符串长度,返回结果:int类型
    select len('SQL Server 课程');      --返回结果:13(注意:空格也计算)
    select len('sqlserver');            --返回9
    select LEN('sql server');           --返回10
    select LEN('sql课程');              --返回5
    select LEN('sql,c#');               --返回6
    select works ,len(works) as 作品字符长度 from Student;   --在表中的应用
    
    --upper函数:把传递给它的字符串转换为大写,返回结果:字符串
    select upper ('SQL Server 课程');   --返回结果:'SQL SERVER 课程'
    
    --ltrim函数:清除字符左边的空格,返回结果:字符串
    select ltrim(' SQL Server 课程 ');  --返回结果:'SQL Server 课程 '
    
    --rtrim函数:清除字符右边的空格,返回结果:字符串
    select rtrim(' SQL Server 课程 ');  --返回结果:' SQL Server 课程'
    
    ----结合ltrim函数和rtrim函数,去除字符串左右的空格
    select ltrim(rtrim(' SQL Server 课程 '));     --返回结果:'SQL Server 课程'
    
    --right函数:从字符串右边开始,返回指定数目的字符,空格也包括在内
    select right(' SQL Server 课程 ',3);  --数字3,代表从字符串右边开始,返回3个字符,空格也计算在内。返回结果: '课程 '
    --right函数应用:查询email的域名,如wangdi@qq.com,域名是qq.com
    select right('wangdi@qq.com',len('wangdi@qq.com')-charindex('@','wangdi@qq.com'));  --返回结果:'qq.com'
    /*
    说明:1、获取email字符串中,域名的长度:总长度-@字符前面的长度=域名的长度
    2、利用right函数,获取email字符串中,从右边返回指定长度(域名长度)的字符,即为域名。
    */
    
    
    --replace函数:将字符串中的某个字符,替换成指定的字符
    select replace(' SQL Server 课程 ','S','s');           --返回结果:' sQL server 课程 '
    select replace(' SQL Server 课程 ','课程','数据库');   --返回结果: ' SQL Server 数据库 '
    select replace(' SQL Server 课程 ','数据库','课程');   --返回结果: ' SQL Server 课程 '
    select replace(' SQL Server 课程 ',' ','-');           --返回结果:'-SQL-Server-课程-'
    --replace函数应用:将数据库表Student中Names列中,将“李”替换成“li”
    update Student set Names=replace(Names,'李','li');
    
    --stuff函数:在一个字符串中,从指定位置开始,删除指定长度的字符,并在该位置插入一个新的字符串
    select stuff(' SQL Server 课程 ',3,2,'测试');          --返回结果:' S测试 Server 课程 '
    
    
    
    --日期函数
    --Getdate函数:获取当前的系统日期
    select getdate();              --返回结果:2019-04-20 18:46:48.040
    
    --dateadd函数:将指定的数值添加到,指定日期部分后的日期(在指定日期上添加日、月、年)
    select dateadd(yy,1,'2019-04-20');     --返回结果:2020-04-20 00:00:00.000
    select dateadd(mm,2,'2019-04-20');     --返回结果:2019-06-20 00:00:00.000
    select dateadd(dd,1,'04/20/2019');     --返回结果:2019-04-21 00:00:00.000
    select dateadd(dd,4,getdate());        --返回结果:2019-04-24 19:37:54.223
    
    --datediff两个日期之间的指定日期部分的间隔(比如计算两个年份、月份、日期的结果(常用来精确计算年龄))返回的是整数
    select datediff(yy,'1999-11-23',getdate());           --返回结果:20
    select datediff(mm,'1999-11-23',getdate());           --返回结果:233
    select (datediff(mm,'1999-11-23',getdate())/12);      --返回结果:19  
    
    --datename函数:获取日期中指定日期部分的字符串形式(将系统时间转换成字符串)返回的是字符串
    select datename(dw,'2019-04-20');   --获取星期几,返回结果:星期六
    select datename(qq,getdate());      --获取季度,返回结果:2
    select datename(dy,getdate());      --获取本年已过天数,返回结果:110
    select datename(wk,getdate());      --获取本年第几个星期,返回结果:16
    
    --datepart函数:获取日期中指定日期部分的整数形式,返回的是整数
    select datepart(yy,getdate());         --获取年份 ,返回结果:2019
    select datepart(mm,'2019-04-20');      --获取月份,返回结果:4
    select datepart(dd,getdate());         --获取日期,返回结果:20
    
    
    --数学函数
    --rand函数:返回从0到1之间的随机float值,返回的是float
    select rand();        --返回从0到1之间的随机float值
    select rand()*100;    --返回从0到100以内的随机float值
    
    --abs函数:取数值表达式的绝对值,返回的是正数
    select abs(-5);       --返回结果:5
    select abs(5);        --返回结果:5
    select abs(0);        --返回结果:0
    
    --ceiling函数:天花板,向上取整数,取大于或等于指定数值、表达式的最小整数
    select ceiling(1.7);        --返回结果:2
    select ceiling(1);          --返回结果:1
    select ceiling(-1.7);       --返回结果:-1
    
    --floor函数:地板,向下取整数,取小于或等于指定数值、表达式的最大整数
    select floor(1.7);        --返回结果:1
    select floor(1);          --返回结果:1
    select floor(-1.7);       --返回结果:-2
    
    --round函数:将数值表达式四舍五入为指定精度 语法:round(数值,要返回的精度);
    select round(1.500,1);          --返回结果:1.500
    select round(1.630,0);          --返回结果:2.000
    select round(1.6366,2);         --返回结果:1.6400
    
    --sign函数:对于整数返回1,负数返回-1,对于0则返回0
    select sign(-5);               --返回结果:-1       
    select sign(5);                --返回结果:1   
    select sign(0);                --返回结果:0   
    select sign(3-5);              --返回结果:-1 (表达式:4-5=-2,所以返回-1)
    
    --sqrt函数:取浮点表达式的平方根
    select sqrt(9);                --返回结果:3 
    select sqrt(4.84);             --返回结果:2.2 
    
    --power函数:取数值表达式的幂值
    select power(3,3);                --返回结果:27
    select power(3,2);                --返回结果:9
    
    
    --系统函数
    --convert函数:用来转变数据类型(一般用在将日期类型转换成字符串类型)
    select convert(varchar(10),getdate(),112);       --返回结果:20190420
    select convert(varchar(10),getdate(),111);       --返回结果:2019/04/20
           --注意:112/111/110表示日期类型yymmdd、yy/mm/dd、mm-dd-yy
    select convert(varchar(5),12345);                --返回结果:12345(注意:此时已是字符串类型数据)
    select convert(varchar(5),12345)+'abc';          --返回结果:12345abc(注意:先将数字12345转换为字符串,然后用加号连接两个字符串)
    select convert(int,'123')+3;                     --返回结果:126(注意:先将字符串123转换为整型,然后数字123+3=126)
    
    --datalength函数:返回指定表达式的字节数
    select datalength('sql课程');       --返回结果:7
    select len('sql课程');              --返回结果:5
    
    --host_name函数:返回当前用户所登录的计算机名字
    select host_name();                 --返回结果:LAPTOP-IN3E6IJP
    
    --system_user函数:返回当前服务器的登录名
    select system_user;                 --返回结果:返回当前服务器登录名sa
    
    --current_user函数:返回数据库用户名
    select current_user;                --返回结果:dbo
    

     

     

    ====================这里是结束分割线========================

     

    展开全文
  • 本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、...
  • 学生成绩管理系统 这学期学习了C#,最后老师验收的时候做出了这个项目。 具体项目功能很简单,有很多设计还有缺陷,当时为了赶工,很多的结构功能逻辑有问题。鉴于已完成并个人答辩,那就让它以现在的形式存在吧。 ...

    学生成绩管理系统

    这学期学习了C#,最后老师验收的时候做出了这个项目。 具体项目功能很简单,有很多设计还有缺陷,当时为了赶工,很多的结构功能逻辑有问题。鉴于已完成并个人答辩,那就让它以现在的形式存在吧。
    基本的增删改查都有,按照老师的实验要求,以下功能都基本存在。

    首先先贴出项目大概的基础功能:
    项目要求
    用户登录分为——管理员与学生。
    用户管理中的其他功能都是基本的增删改查实现的。

    软件效果

    登录页面

    在这里插入图片描述
    登录效果
    在这里插入图片描述
    这里有对用户的名字,密码的空判断;为空则会提示用户,输入正确之后,还需要用户对自身的身份选择,需要完全匹配后才能登录进对应的界面。

    代码实现

    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 System.Data.OleDb;
    
    namespace WindowsFormsApp2
    {
        public partial class Form1 : Form
        {
            public static string STname;
            public static string Spw;
            
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                //连接数据库
                OleDbConnection con = new OleDbConnection(constr);
                string commstrAdmin = "select count(*) from [UTeacher] where Tnum ='" + textBox1.Text.Trim() + "'and Tpwd='" + textBox2.Text.Trim() + "'";
                string commstrPubilc = "select count(*) from [UStudent] where Snum = '" + textBox1.Text.Trim() + "'and Spwd='" + textBox2.Text.Trim() + "'";
                //两个参数,一个方法一个对象
                OleDbCommand comd = new OleDbCommand(commstrAdmin, con);
                OleDbCommand comd2 = new OleDbCommand(commstrPubilc, con);
                con.Open();
    
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                if (textBox1.Text == "" || textBox2.Text == "")
                {
                    if (textBox1.Text == "" && textBox2.Text == "")
                    {
                        label3.Text = "请输入用户名跟密码";
                    }
                    else
                    {
                        if (textBox1.Text == "")
                        {
                            label3.Text = "请输入正确用户名";
    
                        }
                        if (textBox2.Text == "")
                        {
                            label3.Text = "请输入正确的密码";
                        }
                    }
                }
                else
                {
                    if (radioButton1.Checked || radioButton2.Checked)
                    {
                        //  RadioButton radi = ()
                        if (radioButton1.Checked)
                        {
                            if ((Convert.ToInt32(comd.ExecuteScalar())) > 0)
                            {
                                //    label3.Text = "登录成功!欢迎您 " + radioButton1.Text + textBox1.Text;
                                STname = textBox1.Text;
                                Spw = textBox2.Text;
                                MessageBox.Show("登录成功!欢迎您 " + radioButton1.Text + textBox1.Text);
                                Form2 fr = new Form2();
                                fr.Show();
                                this.Hide();
                            }
    
                            else
                            {
                                MessageBox.Show("管理员用户名或密码错误!");
                            }
                        }
                        if (radioButton2.Checked)
                        {
                            if ((Convert.ToInt32(comd2.ExecuteScalar())) > 0)
                            {
                                STname = textBox1.Text;
                                Spw = textBox2.Text;
                                MessageBox.Show("登录成功!欢迎您 " + radioButton2.Text + textBox1.Text);
                                Form3 fr = new Form3();
                                fr.Show();
                                this.Hide();
                            }
                            else
                            {
                                MessageBox.Show("普通用户名或密码错误!");
                                textBox1.Focus();
                            }
                        }
    
    
                    }
                    //  Form2 fr = new Form2();
                    //   fr.Show();
                    //  this.Hide();
    
                    else
                    {
                        label3.Text = "请选择登录身份!";
                    }
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
              //  skinEngine1.SkinFile = "Longhorn.ssk";
               
            }
        }
    }
    
    

    管理员主页面

    在这里插入图片描述
    这个界面我没有插入任何实质性的代码,全是跳转代码
    每个功能都有区分的新建的Form

    查询
    这里是可以分别按学号、工号查询;也可以一起全部查询出来。

    在这里插入图片描述
    代码实现

    using System.Data.OleDb;
    
    namespace WindowsFormsApp2
    {
        public partial class 主查询窗口 : Form
        {
            public 主查询窗口()
            {
                InitializeComponent();
            }
            private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                textBox3.Text = "";
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                string strcom = "select * from UStudent where Snum = '"+ textBox1.Text.Trim() +"'";
                OleDbCommand commd = new OleDbCommand(strcom, con);
                //确认里面有无数据
                OleDbDataReader datareader = commd.ExecuteReader();
                OleDbDataAdapter sda = new OleDbDataAdapter(strcom,con);
    
                if (datareader.Read())
                {
                    label2.Text = "";
                    DataSet das = new DataSet();
                    sda.Fill(das, "Snum");
                    dataGridView1.DataSource = das.Tables[0];
                }
                else
                {
                    //MessageBox.Show("请输入正确的学号");
                    label2.Text = "请输入正确的学号!";
                }
            }
    
            private void ucBtnExt2_BtnClick(object sender, EventArgs e)
            {
                textBox1.Text = "";
                textBox3.Text = "";
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                string strcom = "select * from UStudent";
                OleDbCommand commd = new OleDbCommand(strcom,con);
                OleDbDataAdapter sda = new OleDbDataAdapter(strcom,con);
    
                DataSet das = new DataSet();
                sda.Fill(das, "people");
                dataGridView1.DataSource = das.Tables[0];
                label2.Text = "";
               
    
            }
    
            private void ucBtnExt3_BtnClick(object sender, EventArgs e)
            {
                textBox1.Text = "";
                
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                string strcom = "select * from UTeacher where Tnum = '" + textBox3.Text.Trim() + "'";
                OleDbCommand commd = new OleDbCommand(strcom, con);
                //确认里面有无数据
                OleDbDataReader datareader = commd.ExecuteReader();
                OleDbDataAdapter sda = new OleDbDataAdapter(strcom, con);
    
                if (datareader.Read())
                {
                    label4.Text = "";
                    DataSet das = new DataSet();
                    sda.Fill(das, "Snum");
                    dataGridView1.DataSource = das.Tables[0];
                }
                else
                {
                    //MessageBox.Show("请输入正确的学号");
                    label4.Text = "请输入正确的工号!";
                }
            }
    
            private void ucBtnExt4_BtnClick(object sender, EventArgs e)
            {
                textBox1.Text = "";
                textBox3.Text = "";
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                string strcom = "select * from UTeacher";
                OleDbCommand commd = new OleDbCommand(strcom, con);
                OleDbDataAdapter sda = new OleDbDataAdapter(strcom, con);
    
                DataSet das = new DataSet();
                sda.Fill(das, "teacher");
                dataGridView1.DataSource = das.Tables[0];
                label4.Text = "";
            }
        }
    }
    
    对成绩的增删查

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

    删除这里有一个小设计,只有当学号输入正确时,下面的删除按钮才可以点击。不正确的话,则在框内显示学号不正确,确认删除按钮会变成灰色不可点击。
    在这里插入图片描述
    这里的增加数据没有对每一个textbox的格式进行具体要求,如果自身需要的话可以自己增加对每一个textbox的输入要求格式。
    删除必须完全匹配上学生学号才能正确删除。
    这里是在一个Form内同时实现的三个功能;借用了panel容器。

    目的是当点击后,load自动加载出当前的学生成绩,后面点击一个按钮,下方区域出现该按钮功能。
    (这里只po出一个panel代码与增加、删除信息的代码,请自行分区参考)

    namespace WindowsFormsApp2
    {
        public partial class AddCoures : Form
        {
            public AddCoures()
            {
                InitializeComponent();
            }
    
            private void AddCoures_Load(object sender, EventArgs e)
            {
                string strcon = "provider = Microsoft.Jet.OLEDB.4.0;data source = database4.mdb";
                //    string strcon = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                //  string strcom = "select * form UStudent";
                string strcom = "select * from UCourses";
                OleDbCommand com = new OleDbCommand(strcom, con);
                OleDbDataAdapter sda = new OleDbDataAdapter(strcom, con);
    
                DataSet das = new DataSet();
                sda.Fill(das, "courses");
                dataGridView1.DataSource = das.Tables[0];
            }
    
            private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                panel1.Controls.Clear();   //移除所有控件
                panelWindow5 sendcarForm = new panelWindow5();
                sendcarForm.TopLevel = false;
                sendcarForm.Dock = System.Windows.Forms.DockStyle.Fill;
                sendcarForm.FormBorderStyle = FormBorderStyle.None;   //无边框
                sendcarForm.TopLevel = false;  // 不是最顶层窗体
                panel1.Controls.Add(sendcarForm);  //添加到panel中
                sendcarForm.Show();    //显示
            }
        }
    }
    
    //增加学生成绩信息
    private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                try
                {
    
                    string Snum = textBox1.Text.Trim();
                    string Sname = textBox2.Text;
                    string jisuanjizuc = textBox3.Text;
                    string Java = textBox4.Text;
                    string danpianji = textBox5.Text;
                    string gaoshu = textBox6.Text;
                    string xianxindaishu = textBox7.Text;
                    string jisuanjicz = textBox8.Text;
    
    
                    string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                    //连接数据库
                    OleDbConnection con = new OleDbConnection(constr);
                    string commstrAdmin = "insert into [UCourses](Snum,Sname,计算机组成原理,Java,单片机,高数,线性代数,计算机操作系统) values ('" + Snum + "','" + Sname + "','" +
                            jisuanjizuc + "','" + Java + "','" + danpianji + "','" + gaoshu + "','" + xianxindaishu + "','" + jisuanjicz  + "')";
    
                    //两个参数,一个方法一个对象
                    OleDbCommand comd = new OleDbCommand(commstrAdmin, con);
                    con.Open();
    
                    comd.ExecuteNonQuery();
    
                    string message = "添加成功";
                    MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
    
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    MessageBox.Show("系统错误!");
                }
            }
            
    //删除学生成绩信息
     private void ucBtnExt2_BtnClick(object sender, EventArgs e)
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
                string strcom = "select * from UCourses where Snum = '" + textBox1.Text.ToString().Trim() + "'";
                OleDbCommand com = new OleDbCommand(strcom, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                //确认里面有无数据
                OleDbDataReader datareader = com.ExecuteReader();
              
                if (datareader.Read())
                {
                    ucBtnExt1.Enabled = true;
                    richTextBox1.Text = "  学号:" + datareader[0].ToString() + "\n  姓名:" + datareader[1].ToString() + "\n  计算机组成原理:" + datareader[2].ToString() + "\n  Java:" + datareader[3].ToString()
                        + "\n  单片机:" + datareader[4].ToString() + "\n  高数:" + datareader[5].ToString() + "\n  线性代数:" + datareader[6].ToString() + "\n  计算机操作系统:" + datareader[7].ToString() + "\n";
                }
                else
                {
                    ucBtnExt1.Enabled = false;
                    richTextBox1.Text = "  该同学不存在!\n请输入正确的学号!";
                }
                con.Close();
            }
    
    
            private void ucBtnExt1_BtnClick_1(object sender, EventArgs e)
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
                string strcom = "delete * from [UCourses] where Snum = '" + textBox1.Text.ToString().Trim() + "'";
                OleDbCommand com = new OleDbCommand(strcom, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                richTextBox1.Text = Convert.ToString(com.ExecuteNonQuery()) + "\n删除成功!";
    
            }
    
    

    这里给出一下学生管理与教师管理的界面,代码与上面的成管理类似,区别就是对Access中的表的引用不同。

    教师管理
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    学生管理

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

    学生界面

    在这里插入图片描述
    成绩查询,我自己默认的是学生只能查询成绩以及修改个人密码。其他的操作都属于管理员。

    个人信息查询按钮

    在这里插入图片描述
    这里也是使用的panel面板来使三个功能集成在一个界面上。
    让学生用户,能够在这个界面上,查询个人信息、修改个人密码。
    在这里插入图片描述
    在这里插入图片描述

    这里po出三个功能实现的代码
    代码实现
    //查看当前成绩
     private void SpanelWindow_Load(object sender, EventArgs e)
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
                string strcommd = "select * from UCourses where Snum = '" + Form1.STname + "'";
                OleDbCommand commd = new OleDbCommand(strcommd, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                OleDbDataAdapter ada = new OleDbDataAdapter(strcommd, con);
                DataSet dta = new DataSet();
    
                ada.Fill(dta, "courses");
                dataGridView1.DataSource = dta.Tables[0];
            }
            
    //查看个人信息
    public partial class SpanelWindow1 : Form
        {
            public SpanelWindow1()
            {
                InitializeComponent();
            }
    
            private void SpanelWindow1_Load(object sender, EventArgs e)
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
                string strcommd = "select * from UStudent where Snum ='" + Form1.STname + "'";
                OleDbCommand commd = new OleDbCommand(strcommd, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                OleDbDataReader datareader = commd.ExecuteReader();
                if (datareader.Read())
                {
                    richTextBox1.Text = "  学号:" + datareader[0].ToString() + "\n  姓名:" + datareader[2].ToString() + "\n  性别:" + datareader[3].ToString() + "\n  班级:" + datareader[4].ToString()
                        + "\n  入学时间:" + datareader[5].ToString() + "\n";
                }
            }
        }
        
    //修改个人密码
     public partial class SpanelWindow2 : Form
        {
            public SpanelWindow2()
            {
                InitializeComponent();
            }
    
            private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                Form1 fr = new Form1();
          
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
                string strcommd = "select * from UStudent where Spwd ='" + Form1.Spw.ToString().Trim() + "'";
                OleDbCommand commd = new OleDbCommand(strcommd, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                OleDbDataReader datareader = commd.ExecuteReader();
                if (datareader.Read())
                {
                 //   label4.Text = "\n姓名:" + datareader[1].ToString();
                    string a = textBox1.Text.ToString();
                    if (a == Form1.Spw.ToString().Trim())
                    {
                        if (textBox2.Text == textBox3.Text)
                        {
                            string strcommd2 = "update [UStudent] set Spwd ='" + textBox2.Text.ToString() + "' where Snum = '" + Form1.STname + "'";
                            OleDbCommand commd2 = new OleDbCommand(strcommd2, con);
    
                            if (con.State == ConnectionState.Closed)
                            {
                                con.Open();
                            }
                            commd2.ExecuteNonQuery();
                            
                            label4.Text = "密码修改成功";
    
                            con.Close();
                            //DialogResult dr = MessageBox.Show("是否打开登录窗口重新登录", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                            //if(dr == DialogResult.Yes)
                            //{
                            //    fr.ShowDialog();
                            //}
                        }
                        else
                        {
                            MessageBox.Show("两次输入的密码不一样");
                        }
    
                    }
                    else
                    {
                        MessageBox.Show("您的原始密码错误!");
                    }
                }
            }
        }
    

    前面只提供了大部分功能代码,其他的代码,请选择参考。

    菜单栏与工具栏

    我对菜单栏的设计也是很简单,菜单栏中有包含主界面中的功能,也有单独的查询功能,做了帮助文档引入,还做了关于界面。

    而对工具栏,使用报表功能,提供管理员与学生可以进行下载打印的功能。

    在这里插入图片描述
    这里查询功能我分别做了教师查询,学生查询,成绩查询;三个的界面布局相似,学生与成绩查询都是以学生的学号作为判断条件;教师查询是以工号查询作为判断条件。

    查询

    在这里插入图片描述
    所以这里就po出一个查询界面与代码。
    在这里插入图片描述
    代码实现

    namespace WindowsFormsApp2
    {
        public partial class SQuest : Form
        {
            public SQuest()
            {
                InitializeComponent();
            }
    
            private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
                string strcommd = "select * from UStudent where Snum ='" + textBox1.Text.Trim() + "'";
                OleDbCommand commd = new OleDbCommand(strcommd, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                OleDbDataReader datareader = commd.ExecuteReader();
                if (datareader.Read())
                {
                    richTextBox1.Text = "  学号:" + datareader[0].ToString() + "\n  姓名:" + datareader[2].ToString() + "\n  性别:" + datareader[3].ToString() + "\n  班级:" + datareader[4].ToString()
                        + "\n  入学时间:" + datareader[5].ToString() + "\n";
                }
                else
                {
                    label2.Text = "请输入正确的学号!";
                }
            }
        }
    }
    

    管理
    在这里插入图片描述
    这里的成绩、教师、学生都与主界面上的按钮功能指向同一个Form窗体;

    修改信息
    在这里插入图片描述

    在这里插入图片描述
    当查询正确时,下的datagridview会显示出学生的信息,并自动填充到修改区对应的位置来进行修改操作。
    这里的三个按钮也是页面跳转,所以我这里就只po出“修改学生信息”的代码
    代码实现

    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 System.Data.OleDb;
    
    namespace WindowsFormsApp2
    {
        public partial class panelWindow9 : Form
        {
            public panelWindow9()
            {
                InitializeComponent();
            }
    
            private void textBox4_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void ucBtnExt1_BtnClick(object sender, EventArgs e)
            {
                label2.Text = "";
                string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database4.mdb";
                OleDbConnection con = new OleDbConnection(strcon);
    
    
                string strcommd = "select * from UStudent where Snum ='" + textBox1.Text.Trim() + "'";
                OleDbCommand commd = new OleDbCommand(strcommd, con);
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
    
                OleDbDataAdapter ada = new OleDbDataAdapter(strcommd, con);
                DataSet das = new DataSet();
                OleDbDataReader datareader = commd.ExecuteReader();
                if (datareader.Read())
                {
                    ada.Fill(das, "course");
                    dataGridView1.DataSource = das.Tables[0];
    
                    textBox2.Text = datareader[1].ToString();
                    textBox3.Text = datareader[2].ToString();
                    textBox4.Text = datareader[3].ToString();
                    textBox5.Text = datareader[4].ToString();
                    //textBox6.Text = datareader[6].ToString();
                    //textBox7.Text = datareader[7].ToString();
    
                }
                else
                {
                    label2.Text = "请输入正确的学号!";
                    textBox2.Text = "";
                    textBox3.Text = "";
                    textBox4.Text = "";
                    textBox5.Text = "";
                }
            }
    
            private void ucBtnExt2_BtnClick(object sender, EventArgs e)
            {
                string jsjzcyl = textBox2.Text;
                string java = textBox3.Text;
                string dpj = textBox4.Text;
                string gs = textBox5.Text;
                // string xxds = textBox6.Text;
                // string jsjczxt = textBox7.Text;
    
                if (textBox2.Text != "" || textBox3.Text != "" || textBox4.Text != "" || textBox5.Text != "")
                {
                    string strcon = "provider = Microsoft.Jet.OLEDB.4.0;Data Source = Database4.mdb";
                    OleDbConnection con = new OleDbConnection(strcon);
                    string strcommd = "Update [UStudent] set Spwd='" + jsjzcyl + "',Sname='" + java + "',Ssex='"
                        + dpj + "',class='" + gs + "' where Snum='" + textBox1.Text + "'";
                    OleDbCommand command = new OleDbCommand(strcommd, con);
    
                    con.Open();
    
                    command.ExecuteNonQuery();
                    con.Close();
    
                    MessageBox.Show("修改成功");
                }
                else
                {
                    MessageBox.Show("修改不成功,有空白数据!");
                }
            }
        }
    }
    

    另外两个我只放上截图;
    在这里插入图片描述
    在这里插入图片描述

    帮助文档与关于我们

    关于我们很简单,直接在Visual Studio中点击--->新建项--->“关于”框; 然后设置步骤如图

    在这里插入图片描述

    帮助文档,我是下载专门写帮助软件进行编辑的,写这个的软件我用着都不太好用。所以就推荐一下我用的软件吧。
    “CHM Editor”
    在这里插入图片描述

    这里在po一个用报表实现的打印功能

    在这里插入图片描述
    做完之后,我也有打包,让这个小项目成为一个可以随时安装卸载的可移动软件包。
    注:这里面的所有的按钮我是安装的一个插件直接调用的,并没有设置按钮属性。

    展开全文
  • 本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、...
  • 目录 源数据表 ... 总成绩 0000110120 毛建浓 英语 76.7 0000110114 徐丽娜 土木工程 70.5 0000110211 徐帆 日语 75.35 0000110218 骆双节 英语 ...

    目录

    源数据表

    解决方案

    为SQL设置条件查询子句

    不以第一行为起点的数据表示

    等号运算符


    源数据表

    附件      
    考试成绩      
    准考证号 姓名 报考专业 总成绩
    0000110120 毛建浓 英语 76.7
    0000110114 徐丽娜 土木工程 70.5
    0000110211 徐帆 日语 75.35
    0000110218 骆双节 英语 72.6
    0000110329 邹莎莎 应用数学 71.6
    0000110208 龚洁 法语 71.1
    0000110411 严亦男 英语 73.85
    0000110619 余佳璐 日语 73.75
    0000110724 周智君 法语 73
    0000110430 胡颖 化学工程 72.85
    0000110419 周泽煚 英语 72
    0000110415 黄杰艇 化学工程 71
    0000111117 周荣飞 日语 74.65
    0000111030 韩丽华 交通工程 74.05
    0000110808 叶泉钱 日语 71.95
    0000110908 陈静 英语 71.2
    0000111024 施文娟 交通工程 70.55
    0000111109 王卿 土木工程 70.35
    0000111306 陈军 交通工程 70.1
    0000110813 陈国锋 日语 69.7
    0000111514 周孜雄 英语 79.3
    0000111511 李宇航 法语 77.95
    0000111429 陈菁菁 法语 73.65
    0000111320 张立军 化学工程 73.4
    0000111703 章金荣 日语 71.55
    0000111616 楼维孙 土木工程 71
    0000111630 郎杰 国际经济与贸易 70.25
    0000111601 李冲 英语 70.05
    0000112001 钱文广 英语 76.6
    0000111809 许琪阳 应用数学 71.85
    0000111804 魏幼娜 应用数学 71.6
    0000112005 韩迪飞 英语 70.9
    0000111911 孙敏霞 日语 69.1
    0000112120 楼晓磊 法语 73.4
    0000112211 沈杰 国际经济与贸易 72.9
    0000112103 陈佳 法语 72.8
    0000112111 高林辉 日语 72.15
    0000112301 刘叶丹 化学工程 72
    0000112524 张依玲 国际经济与贸易 73.1
    0000112327 周洁萍 英语 72.15
    0000112515 杜宇 英语 72.05
    0000112430 黄沩沩 化学工程 71.55
    0000112405 杨舒文 日语 71.15
    0000112323 周禾乃 法语 70.35
    0000112413 符庆青 英语 69.45
    0000112722 黄芳 应用数学 72.95
    0000112706 崔萍 英语 68.45
    0000112907 鲁新兴 交通工程 75.45
    0000112819 李铎浩 交通工程 74
    0000112909 张杰飞 交通工程 73.85
    0000113002 吴少波 应用数学 73.6
    0000112925 俞雷军 国际经济与贸易 72.6
    0000113023 卢琼 英语 74
    0000113013 黄帅 法语 70.65
    0000113102 张嘎 交通工程 70.15
    0000113113 李丹丹 英语 69.25
    0000113124 孙丹 国际经济与贸易 67
    0000113128 赵建鹏 国际经济与贸易 71.35
    0000123421 黄烨 应用数学 77.5
    0000123429 姚青 土木工程 76.05
    0000123515 俞剑英 日语 75.75
    0000123425 张哲炜 交通工程 74.25
    0000123814 魏行知 英语 76.85
    0000124324 翁宇力 日语 76.55
    0000124221 何丽丹 化学工程 75.65
    0000123915 金星 法语 75.35
    0000123606 钱峰 化学工程 74.6
    0000124225 卢颖 英语 74.55
    0000124313 冯慧慧 土木工程 74.05
    0000124201 马震 应用数学 72.65
    0000123907 朱鸣啸 化学工程 72.15
    0000124112 苏文波 法语 71.75
    0000124506 王芳玲 土木工程 72.9
    0000134630 叶建军 化学工程 73.5
    0000134625 俞迪聪 应用数学 72
    0000134707 王斌 土木工程 72
    0000134724 宓文杰 国际经济与贸易 71.9
    0000134728 金珠明 英语 69.4
    0000134903 潘添淑 交通工程 74.55
    0000134827 柯翀 国际经济与贸易 74.5
    0000134808 胡蕾 法语 71.55
    0000134917 沈洪楠 日语 74.5
    0000134910 沈维萍 土木工程 71.25
    0000135018 任劲松 化学工程 77.25
    0000135008 张洁 交通工程 75.45
    0000135126 沈毅 英语 71
    0000135113 郑旭东 日语 69.25

     

        如图,该表是某学校招生考试的成绩表,其中包括报考各个专业的考生。如何利用SQL查询找出所有报考“英语”专业的考生?

    解决方案

    SELECT *
    FROM [sheet1$A3:I90]
    WHERE 报考专业="英语"

    为SQL设置条件查询子句

        在SQL查询中,若要使用条件查询,必须设置WHERE子句。WHERE子句指定了一个条件,该条件对于想要出现在结果表中的所有数据都成立.可以采用如下形式的SQL语句来进行
    条件查询:

    SELECT 字段
    FROM 数据源
    WHERE 条件表达式

        参数字段代表需要在结果表中出现的各字段的名称,在Excel表格中即为列标题。如果要查询所有的字段,可以用*表示;若要查询表中的部分字段,可以列出各字段,字段之间用英
    文状态下的半角逗号(,)隔开。比如要查询“姓名”、“总成绩”字段,字段表达式可以写为
                                   姓名,总成绩
        数据源即为指定的表格数据区域。一般情况下,用户应该将数据放置于Excel表格中的最左上角,即数据区域从A1单元格开始。在这种情形下,只要用Excel工作表的名称加上$符号
    表示,并在两端加上方括号即可。比如[考试成绩$].

    不以第一行为起点的数据表示

        有些情况下,表格中的数据并非从A1单元格开始,更多的时候以第二行为标题行或说明行。在此情况下,SQL语句中必须完整说明数据的真实区域。如本例表格中的前两行为说明性
    文字,而真正的数据区域从A3单元格开始,其数据区域为A3:I90.则该数据源应该以以下形式表示:
                                  [考试成绩$A3:I90]
        其中,A3表示数据区域的起点,即数据区域最左上角的单元格地址,I90表示数据区域的终点,即数据区域最右下角的单元格地址。两者用英文状态下的半角冒号(:)连接即表示该完
    整的数据区域。与表格名称组合在一起,即可表示指定表格中指定的数据区域,即数据源。

    等号运算符

        条件表达式即为查询的条件,在查询条件中使用各种运算符表示数据是否满足某些条件。在运算符中使用频率最高的就是等号(=)运算符。等号运算符用于设定指定字段等于指定值
    的查询条件,其使用格式如下:
                                expr=value
        上述表达式用于判断指定字段(expr)的值是否等于某个特定的值value。若指定字段的值等于指定值,则表示该条件表达式成立,在结果表中的所有数据都将满足该条件。反之,结果
    表中则不会列出数据。
        运用上述的条件查询,即可查询满足指定字段等于指定值的所有数据。在Excel中,虽然没有字段类型的设置,但是SQL会对数据进行一些基本的判断。对于数字列而言,可以简
    单地使用该表达式进行条件设置。如要查询Ⅳ总成绩”为69的数据,可以采用以下条件表达式:
                                总成绩=69 
        当字段的值为文本时,则需要在条件中的指定值两边加上引号,如本例的条件表达式应该设置为:
                              报考专业="英语"
        需要注意的是,在Excel中,对于文本值,在表达式中的值两边需要加上引号,而不区分单引号和双引号。上述条件表达式与以下条件表达式等效,但是引号是必不可少的,而且必须
    是英文状态下的引号。
                             I报考专业='英语'
        在Excel SQL中的英文字母是区分大小写的,如“A”和“a”是不相等的。
     

    展开全文
  • java成绩管理系统代码

    千次阅读 2019-07-31 12:36:59
    ID, age, software,math, system, java,//各科成绩变量 pieMath,pieSystem,pieJava,pieSoftware,//饼图变量 histogramMath,histogramSystem,histogramSoftware,histogramJava,//柱形图变量 totalGrade,...

    实现功能:学生信息增删改查,求各科平均分,饼图,条形图。

    package Keshe;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;
    
    public class main extends JFrame implements ActionListener, MouseListener
    {
    	/*String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    	String 	url="jdbc:sqlserver://localhost:1433;databaseName=Student";
    	String user="ZZL";
    	String password="123456";
    	private Connection con;//这里是你的数据库账号密码
    	con=DriverManager.getConnection(url,user,password);//创建数据库连接*/
    	String FileName = "D:\\information.txt";//所要进行操作的文件
    	private JMenuBar typeMenu;//创建菜单条
    	private JMenu file, display, edit, help, sort,delete,alter,add,subject,search,ratio,avg,pie,histogram;//创建各种变量
    	private JMenuItem seeItem,addClass,addStudent,pageone,exit,alterName,alterID,
    	                  deleteID,deleteName,deleteClass,deleteSex,deleteAge,deleteCollage,//删除操作的变量
    	                  searchID,searchName,searchClass,searchSex,searchAge,searchCollage, //查找操作的变量
    	                  ID, age, software,math, system, java,//各科成绩变量
    	                  pieMath,pieSystem,pieJava,pieSoftware,//饼图变量
    	                  histogramMath,histogramSystem,histogramSoftware,histogramJava,//柱形图变量
    	                  totalGrade,helpItem,avgMath,avgJava,avgSystem,avgSoftware;//平均分总分变量
    	private CardLayout cardl;//声明卡片布局管理器
    	private TableColumn col1,col2,col3,col4,col5,col6,col7,col8,col9,col10;//声明表格的列数
    	private JPanel card,jpSee,jpAddStudent,jpAlterByID,jpAlterByName, jpMain,jpSearch,jphelp;//声明各种面板变量
    	private JTable jtable;//声明表格
    	private JLabel jl,jlAdd1, jlAdd2, jlAdd3, jlAdd4, jlAdd5, jlAdd6, jlAdd7, jlAdd8, jlAdd9, jlAdd10, jlAdd11, jlAdd12,jlAdd13, 
    	               jlMain1, jlMain2,
    	               jlAlter1,jlAlter2,jlAlter3,jlAlter4,jlAlter5,jlAlter6,jlAlter7;//声明标签
    	private JTextField jtAddClass, jtAddID, jtAddName, jtAddAge,jtAddCollage, jtAddSoftware, jtAddMath, jtAddSystem, jtAddJava,
    	                   jtAlterID,jtAlterName,jtAlterAge,jtAlterClass,jtAlterCollage,jtAlterMath,jtAlterSoftware,jtAlterJava,jtAlterSystem,
    	                   jtAlterID2,jtAlterName2,jtAlterAge2,jtAlterClass2,jtAlterCollage2,jtAlterMath2,jtAlterSoftware2,jtAlterJava2,jtAlterSystem2;//声明文本框对象
    	private JRadioButton jr_man, jr_woman,jr_man2, jr_woman2;
    	private ButtonGroup sexgroup,sexgroup2;//声明按钮组别
    	private JButton jbAddSure,jbAlterSure,jbAlterSure2;//声明按钮对象
    	private int row;
    	private String[] collage = { "计算机系", "软件系", "外语系", "管理系", "电子系", "数码系", "游戏系","财会系","网络系","国贸系" };//创建系别的数组
    	private String[] class1 = { "物联网1班", "物联网2班", "物联网3班", "web1班", "web2班", "web3班" };//创建班级数组
    	private JScrollPane js;//声明一个滚动面板
        private String[][] student = new String [100][25];
    	public main()
    	{
    		Container c = getContentPane();//得到内容面板
    		c.setLayout(null);//设置面板布局为空
    		typeMenu = new JMenuBar();// 应用程序菜单的容器 创建菜单栏
    		setJMenuBar(typeMenu);//把容器放到菜单条中
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		// 菜单Display
    		file = new JMenu("系统");//创建菜单
    		file.setFont(new Font("宋体", Font.PLAIN, 14));//设置字体和颜色
    		typeMenu.add(file);//把菜单添加到菜单栏中
    		// 菜单Display
    		display = new JMenu("查看");
    		display.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(display);
    		// 菜单Edit
    		edit = new JMenu("编辑信息");
    		edit.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(edit);
    		// 菜单Sort
    		sort = new JMenu("排序");
    		sort.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(sort);
    		//菜单avg
    		avg = new JMenu("平均分");
    		avg.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(avg);
    		// 菜单ratio
    		ratio = new JMenu("比例图");
    		ratio.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(ratio);
    		// 菜单Help
    		help = new JMenu("Help");
    		help.setFont(new Font("宋体", Font.PLAIN, 14));
    		typeMenu.add(help);
    		//Help
    		helpItem = new JMenuItem("Help");//创建菜单项
    		helpItem.setFont(new Font("宋体", Font.PLAIN, 14));//设置其字体和颜色
    		help.add(helpItem);//把菜单项加入到菜单中
    		helpItem.addActionListener(this);//注册动作侦听器
    		helpItem.setActionCommand("帮助");//设置菜单项命名为帮助
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//首页
    		pageone = new JMenuItem("首页");//创建新的菜单项
    		pageone.setFont(new Font("宋体", Font.PLAIN, 14));//设置菜单项的字体和颜色
    		file.add(pageone);//把菜单项加入到file菜单中
    		pageone.addActionListener(this);//注册动作侦听器
    		pageone.setActionCommand("首页");//设置菜单项命名为首页
    		file.addSeparator();//添加分割线
    		//退出
    		exit = new JMenuItem("退出");
    		exit.setFont(new Font("宋体", Font.PLAIN, 14));
    		file.add(exit);
    		exit.addActionListener(this);
    		exit.setActionCommand("退出");
    	    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//查看
    		seeItem  = new JMenuItem("查看");
    		seeItem.setFont(new Font("宋体", Font.PLAIN, 14));
    		display.add(seeItem);
    		seeItem.addActionListener(this);
    		seeItem.setActionCommand("查看");
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//删除
    		delete = new JMenu("删除");
    		delete.setMnemonic(KeyEvent.VK_D);
    		delete.setFont(new Font("宋体", Font.PLAIN, 14));
    		edit.add(delete);
    		delete.addActionListener(this);
    		delete.setActionCommand("删除");
    		edit.addSeparator();
    		//按学号删除
    		deleteID = new JMenuItem("按学号删除");
    		deleteID.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteID);
    		deleteID.addActionListener(this);
    		deleteID.setActionCommand("按学号删除");
    		delete.addSeparator();
    		//按姓名删除
    		deleteName = new JMenuItem("按姓名删除");
    		deleteName.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteName);
    		deleteName.addActionListener(this);
    		deleteName.setActionCommand("按姓名删除");
    		delete.addSeparator();
    		//按系别删除
    		deleteCollage = new JMenuItem("按系别删除");
    		deleteCollage.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteCollage);
    		deleteCollage.addActionListener(this);
    		deleteCollage.setActionCommand("按系别删除");
    		delete.addSeparator();
    		//按班级删除
    		deleteClass = new JMenuItem("按班级删除");
    		deleteClass.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteClass);
    		deleteClass.addActionListener(this);
    		deleteClass.setActionCommand("按班级删除");
    		delete.addSeparator();
    		//按性别删除
    		deleteSex = new JMenuItem("按性别删除");
    		deleteSex.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteSex);
    		deleteSex.addActionListener(this);
    		deleteSex.setActionCommand("按性别删除");
    		delete.addSeparator();
    		//按年龄删除
    		deleteAge = new JMenuItem("按年龄删除");
    		deleteAge.setFont(new Font("宋体", Font.PLAIN, 13));
    		delete.add(deleteAge);
    		deleteAge.addActionListener(this);
    		deleteAge.setActionCommand("按年龄删除");
    		//添加
    		add = new JMenu("添加");
    		add.setMnemonic(KeyEvent.VK_A);
    		add.setFont(new Font("宋体", Font.PLAIN, 14));
    		edit.add(add);
    		edit.addSeparator();
    		add.addActionListener(this);
    		add.setActionCommand("添加");
    		//添加学生
    		addStudent = new JMenuItem("添加学生");
    		addStudent.setFont(new Font("宋体", Font.PLAIN, 13));
    		add.add(addStudent);
    		addStudent.addActionListener(this);
    		addStudent.setActionCommand("添加学生");
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//修改
    		alter = new JMenu("修改");
    		alter.setMnemonic(KeyEvent.VK_A);//
    		alter.setFont(new Font("宋体", Font.PLAIN, 14));
    		edit.add(alter);
    		alter.addActionListener(this);
    		alter.setActionCommand("修改");
    		edit.addSeparator();
    		//按学号修改
    		alterID = new JMenuItem("按学号修改");
    		alterID.setFont(new Font("宋体", Font.PLAIN, 13));
    		alter.add(alterID);
    		alterID.addActionListener(this);
    		alterID.setActionCommand("按学号修改");
    		alter.addSeparator();
    		//按姓名修改
    		alterName = new JMenuItem("按姓名修改");
    		alterName.setFont(new Font("宋体", Font.PLAIN, 13));
    		alter.add(alterName);
    		alterName.addActionListener(this);
    		alterName.setActionCommand("按姓名修改");
    		//查询
    		search = new JMenu("查询");
    		search.setFont(new Font("宋体", Font.PLAIN, 14));
    		edit.add(search);
    		search.addActionListener(this);
    		search.setActionCommand("查询");
    		//按学号查询
    		searchID = new JMenuItem("按学号查询");
    		searchID.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchID);
    		searchID.addActionListener(this);
    		searchID.setActionCommand("按学号查询");
    		search.addSeparator();
    		//姓名查询
    		searchName = new JMenuItem("按姓名查询");
    		searchName.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchName);
    		searchName.addActionListener(this);
    		searchName.setActionCommand("按姓名查询");
    		search.addSeparator();
    		//按系别查询
    		searchCollage = new JMenuItem("按系别查询");
    		searchCollage.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchCollage);
    		searchCollage.addActionListener(this);
    		searchCollage.setActionCommand("按系别查询");
    		search.addSeparator();
    		//按班级查询
    		searchClass = new JMenuItem("按班级查询");
    		searchClass.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchClass);
    		searchClass.addActionListener(this);
    		searchClass.setActionCommand("按班级查询");
    		search.addSeparator();
    		//按性别查询
    		searchSex = new JMenuItem("按性别查询");
    		searchSex.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchSex);
    		searchSex.addActionListener(this);
    		searchSex.setActionCommand("按性别查询");
    		search.addSeparator();
    		//按年龄查询
    		searchAge = new JMenuItem("按年龄查询");
    		searchAge.setFont(new Font("宋体", Font.PLAIN, 13));
    		search.add(searchAge);
    		searchAge.addActionListener(this);
    		searchAge.setActionCommand("按年龄查询");
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//排序
    		//按学号排序
    		ID = new JMenuItem("按学号排序");
    		ID.setFont(new Font("宋体", Font.PLAIN, 14));
    		sort.add(ID);
    		sort.addSeparator();
    		ID.addActionListener(this);
    		ID.setActionCommand("按学号排序");
    		//按年龄排序
    		age = new JMenuItem("按年龄排序");
    		age.setFont(new Font("宋体", Font.PLAIN, 14));
    		sort.add(age);
    		sort.addSeparator();
    		age.addActionListener(this);
    		age.setActionCommand("按年龄排序");
    		//按总成绩排序
    		totalGrade  = new JMenuItem("按总成绩排序");
    		totalGrade.setFont(new Font("宋体", Font.PLAIN, 14));
    		sort.add(totalGrade);
    		sort.addSeparator();
    		totalGrade.addActionListener(this);
    		totalGrade.setActionCommand("按总成绩排序");
    		//按单科成绩排序
    		subject = new JMenu("按单科成绩排序");
    		subject.setFont(new Font("宋体", Font.PLAIN, 14));
    		sort.add(subject);
    		//按高数排序
    		math = new JMenuItem("按高数排序");
    		math.setFont(new Font("宋体", Font.PLAIN, 14));
    		subject.add(math);
    		math.addActionListener(this);
    		math.setActionCommand("按高数排序");
    		subject.addSeparator();
    		//按Java排序
    		java = new JMenuItem("按Java排序");
    		java.setFont(new Font("宋体", Font.PLAIN, 14));
    		subject.add(java);
    		java.addActionListener(this);
    		java.setActionCommand("按Java排序");
    		subject.addSeparator();
    		//按C语言排序
    		software = new JMenuItem("按C语言排序");
    		software.setFont(new Font("宋体", Font.PLAIN, 14));
    		subject.add(software);
    		software.addActionListener(this);
    		software.setActionCommand("按C语言排序");
    		subject.addSeparator();
    		//按大英排序
    		system = new JMenuItem("按大英排序");
    		system.setFont(new Font("宋体", Font.PLAIN, 14));
    		subject.add(system);
    		system.addActionListener(this);
    		system.setActionCommand("按大英排序");
    		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//课程平均分
    		//求数学平均分
    		avgMath = new JMenuItem("求数学平均分");
    		avgMath.setFont(new Font("宋体", Font.PLAIN, 14));
    		avg.add(avgMath);
    		avgMath.addActionListener(this);
    		avgMath.setActionCommand("求数学平均分");
    		avg.addSeparator();
    		//求Java平均分
    		avgJava = new JMenuItem("求Java平均分");
    		avgJava.setFont(new Font("宋体", Font.PLAIN, 14));
    		avg.add(avgJava);
    		avgJava.addActionListener(this);
    		avgJava.setActionCommand("求Java平均分");
    		avg.addSeparator();
    		//求C语言平均分
    		avgSoftware = new JMenuItem("求C语言平均分");
    		avgSoftware.setFont(new Font("宋体", Font.PLAIN, 14));
    		avg.add(avgSoftware);
    		avgSoftware.addActionListener(this);
    		avgSoftware.setActionCommand("求C语言平均分");
    		avg.addSeparator();
    		//求大英平均分
    		avgSystem = new JMenuItem("求大英平均分");
    		avgSystem.setFont(new Font("宋体", Font.PLAIN, 14));
    		avg.add(avgSystem);
    		avgSystem.addActionListener(this);
    		avgSystem.setActionCommand("求大英平均分");
    		//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//饼形图
    		pie = new JMenu("饼形图");
    		pie.setFont(new Font("宋体", Font.PLAIN, 14));
    		ratio.add(pie);
    		pie.addActionListener(this);
    		pie.setActionCommand("饼形图");
    		ratio.addSeparator();
    		//Math柱形图
    		pieMath = new JMenuItem("Math");
    		pieMath.setFont(new Font("宋体", Font.PLAIN, 14));
    		pie.add(pieMath);
    		pieMath.addActionListener(this);
    		pieMath.setActionCommand("Math饼形图");
    		pie.addSeparator();
    		//Java柱形图
    		pieJava = new JMenuItem("Java");
    		pieJava.setFont(new Font("宋体", Font.PLAIN, 14));
    		pie.add(pieJava);
    		pieJava.addActionListener(this);
    		pieJava.setActionCommand("Java饼形图");
    		pie.addSeparator();
    		//大英柱形图
    		pieSystem = new JMenuItem("大英");
    		pieSystem.setFont(new Font("宋体", Font.PLAIN, 14));
    		pie.add(pieSystem);
    		pieSystem.addActionListener(this);
    		pieSystem.setActionCommand("大英饼形图");
    		pie.addSeparator();
    		//C语言柱形图
    		pieSoftware = new JMenuItem("C语言");
    		pieSoftware.setFont(new Font("宋体", Font.PLAIN, 14));
    		pie.add(pieSoftware);
    		pieSoftware.addActionListener(this);
    		pieSoftware.setActionCommand("C语言饼形图");
    		//柱形图
    		histogram = new JMenu("柱形图");
    		histogram.setFont(new Font("宋体", Font.PLAIN, 14));
    		ratio.add(histogram);
    		histogram.addActionListener(this);
    		histogram.setActionCommand("柱形图");
    		//Math柱形图
    		histogramMath = new JMenuItem("高数");
    		histogramMath.setFont(new Font("宋体", Font.PLAIN, 14));
    		histogram.add(histogramMath);
    		histogramMath.addActionListener(this);
    		histogramMath.setActionCommand("高数柱形图");
    		histogram.addSeparator();
    		//Java柱形图
    		histogramJava = new JMenuItem("Java");
    		histogramJava.setFont(new Font("宋体", Font.PLAIN, 14));
    		histogram.add(histogramJava);
    		histogramJava.addActionListener(this);
    		histogramJava.setActionCommand("Java柱形图");
    		histogram.addSeparator();
    		//大英柱形图
    		histogramSystem = new JMenuItem("大英");
    		histogramSystem.setFont(new Font("宋体", Font.PLAIN, 14));
    		histogram.add(histogramSystem);
    		histogramSystem.addActionListener(this);
    		histogramSystem.setActionCommand("大英柱形图");
    		histogram.addSeparator();
    		//C语言柱形图
    		histogramSoftware = new JMenuItem("C语言");
    		histogramSoftware.setFont(new Font("宋体", Font.PLAIN, 14));
    		histogram.add(histogramSoftware);
    		histogramSoftware.addActionListener(this);
    		histogramSoftware.setActionCommand("C语言柱形图");
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		cardl = new CardLayout();//设置卡片布局器
    		card = new JPanel();//声明面板
    		card.setBounds(0, 0, 650, 400);//设置边界
    		card.setOpaque(false);
    		card.setLayout(cardl);//设置面板布局器
    		jpSearch = new JPanel();//实例化面板对象
    		jpMain = new JPanel();
    		jpAddStudent = new JPanel();
    		jpAlterByID = new JPanel();
    		jpAlterByName = new JPanel();
    		jpSee = new JPanel();
    		jphelp = new JPanel();
    		
    		
    		card.add("首页", jpMain);//把文字内容添加到面板中
    		card.add("按班级查询",jpSearch);
    		card.add("添加学生", jpAddStudent);
    		card.add("按姓名修改", jpAlterByName);
    		card.add("按学号修改", jpAlterByID);
    		card.add("查看", jpSee);
    		card.add("帮助", jphelp);
    		c.add(card);//把card添加到窗体中
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//首页
    		jpMain.setLayout(null);//设置布局管理器为空
    		jlMain1 = new JLabel();//设置标签
    		jlMain1.setText("欢迎来到华软学生成绩管理系统");//设置标签文本内容
    		jlMain1.setBounds(200, 150, 400, 40);//设置标签位置和大小
    		jlMain1.setFont(new Font("宋体", Font.PLAIN, 25));//设置标签字体和颜色
    		jlMain1.setForeground(Color.black);
    		jpMain.add(jlMain1);//把标签添加到面板中
    		jlMain2 = new JLabel();
    		jlMain2.setText("管理员:ZZL");
    		jlMain2.setBounds(300, 210, 400, 40);
    		jlMain2.setFont(new Font("宋体", Font.PLAIN, 20));
    		jlMain2.setForeground(Color.black);
    		jpMain.add(jlMain2);
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//帮助
    		jphelp.setLayout(null);
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		jpAlterByID.setLayout(null);
    		//按学号修改
    		jlAlter1 = new JLabel();
    		jlAlter1.setText("按学号修改");
    		jlAlter1.setBounds(200, 20, 170, 20);
    		jlAlter1.setFont(new Font("宋体", Font.PLAIN, 20));
    		jpAlterByID.add(jlAlter1);
    		jlAlter2 = new JLabel();
    		jlAlter2.setBounds(20, 70, 200, 20);
    		jlAlter2.setText("*请输入要修改学生的学号:");
    		jlAlter2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter2);
    		//要修改学生的学号
    		jtAlterID = new JTextField();
    		jtAlterID.setBounds(220, 70, 150, 20);
    		jtAlterID.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterID);
    		//修改基本信息
    		jlAlter2 = new JLabel();
    		jlAlter2.setBounds(20, 100, 170, 20);
    		jlAlter2.setText("*修改基本信息*");
    		jlAlter2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter2);
    		// 修改姓名
    		jlAlter3 = new JLabel();
    		jlAlter3.setBounds(80, 140, 50, 20);
    		jlAlter3.setText("姓名:");
    		jlAlter3.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter3);
    		
    		jtAlterName = new JTextField();
    		jtAlterName.setBounds(130, 140, 150, 20);
    		jtAlterName.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterName);
    		// 修改年龄
    		jlAlter4 = new JLabel();
    		jlAlter4.setBounds(320, 140, 50, 20);
    		jlAlter4.setText("年龄:");
    		jlAlter4.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter4);
    		
    		jtAlterAge = new JTextField();
    		jtAlterAge.setBounds(370, 140, 150, 20);
    		jtAlterAge.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterAge);
    		
    		// 修改系别
    		jlAlter6 = new JLabel();
    		jlAlter6.setBounds(80, 170, 50, 20);
    		jlAlter6.setText("系别:");
    		jlAlter6.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter6);//获取符合条件的系别内容
    		
    		jtAlterCollage = new JTextField();//创建文本框对象
    		jtAlterCollage.setBounds(130, 170, 150, 20);
    		jtAlterCollage.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterCollage);//修改对应的ID号
    		//修改班级
    		jlAlter7 = new JLabel();
    		jlAlter7.setBounds(320, 170, 50, 20);
    		jlAlter7.setText("班级:");
    		jlAlter7.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter7);
    		jtAlterClass = new JTextField();
    		jtAlterClass.setBounds(370, 170, 150, 20);
    		jtAlterClass.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterClass);
    		// 修改性别
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 210, 50, 20);
    		jlAlter5.setText("性别:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		
    		jr_man = new JRadioButton();
    		jr_man.setText("男");
    		jr_man.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_man.setSelected(true);
    		jr_man.setBounds(130, 210, 50, 20);
    		jr_woman = new JRadioButton();
    		jr_woman.setText("女");
    		jr_woman.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_woman.setBounds(180, 210, 50, 20);
    		sexgroup = new ButtonGroup();
    		sexgroup.add(jr_man);
    		sexgroup.add(jr_woman);
    		jpAlterByID.add(jr_man);
    		jpAlterByID.add(jr_woman);
    		// 修改成绩
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(20, 240, 200, 20);
    		jlAlter5.setText("*修改单科成绩*");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		// 修改高数
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 270, 50, 20);
    		jlAlter5.setText("高数:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		
    		jtAlterMath = new JTextField();
    		jtAlterMath.setBounds(130, 270, 150, 20);
    		jtAlterMath.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterMath);
    		//修改C语言
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(320, 270, 80, 20);
    		jlAlter5.setText("C语言:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		
    		jtAlterSoftware = new JTextField();
    		jtAlterSoftware.setBounds(400, 270, 150, 20);
    		jtAlterSoftware.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterSoftware);
    		// 修改Java
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 300, 50, 20);
    		jlAlter5.setText("Java:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		
    		jtAlterJava = new JTextField();
    		jtAlterJava.setBounds(130, 300, 150, 20);
    		jtAlterJava.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterJava);
    		// 修改大英
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(320, 300, 80, 20);
    		jlAlter5.setText("大英:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jlAlter5);
    		jtAlterSystem = new JTextField();
    		jtAlterSystem.setBounds(400, 300, 150, 20);
    		jtAlterSystem.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByID.add(jtAlterSystem);
    		
    		jbAlterSure = new JButton();//创建按钮对象
    		jbAlterSure.setBounds(500, 325, 50, 20);//设置按钮大小
    		jbAlterSure.setIcon(new ImageIcon("pic//tijiao.gif"));//添加图像
    		jbAlterSure.addActionListener(this);//注册侦听器
    		jbAlterSure.setActionCommand("按学号修改提交");
    		jpAlterByID.add(jbAlterSure);//添加进ID 面板
    		
    		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		jpAlterByName.setLayout(null);//设置面板为空布局
    		//按姓名修改
    		jlAlter1 = new JLabel();
    		jlAlter1.setText("按姓名修改");
    		jlAlter1.setBounds(230, 20, 170, 20);
    		jlAlter1.setFont(new Font("宋体", Font.PLAIN, 20));
    		jpAlterByName.add(jlAlter1);
    		jlAlter2 = new JLabel();
    		jlAlter2.setBounds(20, 70, 200, 20);
    		jlAlter2.setText("*请输入要修改学生的姓名:");
    		jlAlter2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter2);
    		//要修改学生的姓名
    		jtAlterName2 = new JTextField();
    		jtAlterName2.setBounds(220, 70, 150, 20);
    		jtAlterName2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterName2);
    		//修改基本信息
    		jlAlter2 = new JLabel();
    		jlAlter2.setBounds(20, 100, 170, 20);
    		jlAlter2.setText("*修改基本信息*");
    		jlAlter2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter2);
    		// 修改学号
    		jlAlter3 = new JLabel();
    		jlAlter3.setBounds(80, 140, 50, 20);
    		jlAlter3.setText("学号:");
    		jlAlter3.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter3);
    		
    		jtAlterID2 = new JTextField();
    		jtAlterID2.setBounds(130, 140, 150, 20);
    		jtAlterID2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterID2);
    		// 修改年龄
    		jlAlter4 = new JLabel();
    		jlAlter4.setBounds(320, 140, 50, 20);
    		jlAlter4.setText("年龄:");
    		jlAlter4.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter4);
    		
    		jtAlterAge2 = new JTextField();
    		jtAlterAge2.setBounds(370, 140, 150, 20);
    		jtAlterAge2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterAge2);
    		
    		// 修改系别
    		jlAlter6 = new JLabel();
    		jlAlter6.setBounds(80, 170, 50, 20);
    		jlAlter6.setText("系别:");
    		jlAlter6.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter6);
    		
    		jtAlterCollage2 = new JTextField();
    		jtAlterCollage2.setBounds(130, 170, 150, 20);
    		jtAlterCollage2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterCollage2);
    		//修改班级
    		jlAlter7 = new JLabel();
    		jlAlter7.setBounds(320, 170, 50, 20);
    		jlAlter7.setText("班级:");
    		jlAlter7.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter7);
    		jtAlterClass2 = new JTextField();
    		jtAlterClass2.setBounds(370, 170, 150, 20);
    		jtAlterClass2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterClass2);
    		// 修改性别
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 210, 50, 20);
    		jlAlter5.setText("性别:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		
    		jr_man2 = new JRadioButton();
    		jr_man2.setText("男");
    		jr_man2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_man2.setSelected(true);
    		jr_man2.setBounds(130, 210, 50, 20);
    		jr_woman2 = new JRadioButton();
    		jr_woman2.setText("女");
    		jr_woman2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_woman2.setBounds(180, 210, 50, 20);
    		sexgroup2 = new ButtonGroup();
    		sexgroup2.add(jr_man2);
    		sexgroup2.add(jr_woman2);
    		jpAlterByName.add(jr_man2);
    		jpAlterByName.add(jr_woman2);
    		// 修改成绩
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(20, 240, 200, 20);
    		jlAlter5.setText("*修改单科成绩*");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		// 修改数学
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 270, 50, 20);
    		jlAlter5.setText("数学:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		
    		jtAlterMath2 = new JTextField();
    		jtAlterMath2.setBounds(130, 270, 150, 20);
    		jtAlterMath2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterMath2);
    		//修改C语言
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(320, 270, 80, 20);
    		jlAlter5.setText("C语言:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		
    		jtAlterSoftware2 = new JTextField();
    		jtAlterSoftware2.setBounds(400, 270, 150, 20);
    		jtAlterSoftware2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterSoftware2);
    		// 修改Java
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(80, 300, 50, 20);
    		jlAlter5.setText("Java:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		
    		jtAlterJava2 = new JTextField();
    		jtAlterJava2.setBounds(130, 300, 150, 20);
    		jtAlterJava2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterJava2);
    		// 修改大英
    		jlAlter5 = new JLabel();
    		jlAlter5.setBounds(320, 300, 80, 20);
    		jlAlter5.setText("大英:");
    		jlAlter5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jlAlter5);
    		jtAlterSystem2 = new JTextField();
    		jtAlterSystem2.setBounds(400, 300, 150, 20);
    		jtAlterSystem2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAlterByName.add(jtAlterSystem2);
    		
    		jbAlterSure2 = new JButton();
    		jbAlterSure2.setBounds(500, 325, 50, 20);
    		jbAlterSure2.setIcon(new ImageIcon("pic//tijiao.gif"));
    		jbAlterSure2.addActionListener(this);
    		jbAlterSure2.setActionCommand("按姓名修改提交");
    		jpAlterByName.add(jbAlterSure2);
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//添加
    		jpAddStudent.setLayout(null);
    		jlAdd1 = new JLabel();
    		jlAdd1.setBounds(200, 20, 200, 20);
    		jlAdd1.setText("添加学生基本信息");
    		jlAdd1.setFont(new Font("宋体", Font.PLAIN, 20));
    		jpAddStudent.add(jlAdd1);
    		// 添加基本信息
    		jlAdd2 = new JLabel();
    		jlAdd2.setBounds(20, 60, 100, 20);
    		jlAdd2.setText("*基本信息:");
    		jlAdd2.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd2);
    		//添加学号
    		jlAdd3 = new JLabel();
    		jlAdd3.setBounds(80, 90, 50, 20);
    		jlAdd3.setText("学号:");
    		jlAdd3.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd3);
    		jtAddID = new JTextField();
    		jtAddID.setBounds(130, 90, 150, 20);
    		jtAddID.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddID);
    		// 添加姓名
    		jlAdd4 = new JLabel();
    		jlAdd4.setBounds(320, 90, 50, 20);
    		jlAdd4.setText("姓名:");
    		jlAdd4.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd4);
    		jtAddName = new JTextField();
    		jtAddName.setBounds(370, 90, 150, 20);
    		jtAddName.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddName);
    		// 添加年龄
    		jlAdd5 = new JLabel();
    		jlAdd5.setBounds(80, 130, 50, 20);
    		jlAdd5.setText("年龄:");
    		jlAdd5.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd5);
    		jtAddAge = new JTextField();
    		jtAddAge.setBounds(130, 130, 150, 20);
    		jtAddAge.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddAge);
    		// 添加系别
    		jlAdd12 = new JLabel();
    		jlAdd12.setBounds(320, 130, 50, 20);
    		jlAdd12.setText("系别:");
    		jlAdd12.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd12);
    		jtAddCollage = new JTextField();
    		jtAddCollage.setBounds(370, 130, 150, 20);
    		jtAddCollage.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddCollage);
    		// 添加性别
    		jlAdd6 = new JLabel();
    		jlAdd6.setBounds(80, 170, 50, 20);
    		jlAdd6.setText("性别:");
    		jlAdd6.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd6);
    		jr_man = new JRadioButton();
    		jr_man.setText("男");
    		jr_man.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_man.setSelected(true);
    		jr_man.setBounds(130, 170, 50, 20);
    		jr_woman = new JRadioButton();
    		jr_woman.setText("女");
    		jr_woman.setFont(new Font("宋体", Font.PLAIN, 16));
    		jr_woman.setBounds(180, 170, 50, 20);
    		sexgroup = new ButtonGroup();
    		sexgroup.add(jr_man);
    		sexgroup.add(jr_woman);
    		jpAddStudent.add(jr_man);
    		jpAddStudent.add(jr_woman);
    		//添加班级
    		jlAdd13 = new JLabel();
    		jlAdd13.setBounds(320, 170, 50, 20);
    		jlAdd13.setText("班级:");
    		jlAdd13.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd13);
    		jtAddClass = new JTextField();
    		jtAddClass.setBounds(370, 170, 150, 20);
    		jtAddClass.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddClass);
    		// 添加成绩
    		jlAdd7 = new JLabel();
    		jlAdd7.setBounds(20, 210, 100, 20);
    		jlAdd7.setText("*单科成绩:");
    		jlAdd7.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd7);
    		// 添加数学
    		jlAdd8 = new JLabel();
    		jlAdd8.setBounds(80, 240, 50, 20);
    		jlAdd8.setText("数学:");
    		jlAdd8.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd8);
    		jtAddMath = new JTextField();
    		jtAddMath.setBounds(130, 240, 150, 20);
    		jtAddMath.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddMath);
    		// 添加C语言
    		jlAdd9 = new JLabel();
    		jlAdd9.setBounds(320, 240, 80, 20);
    		jlAdd9.setText("C语言:");
    		jlAdd9.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd9);
    		jtAddSoftware = new JTextField();
    		jtAddSoftware.setBounds(400, 240, 150, 20);
    		jtAddSoftware.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddSoftware);
    		// 添加Java
    		jlAdd10 = new JLabel();
    		jlAdd10.setBounds(80, 280, 50, 20);
    		jlAdd10.setText("Java:");
    		jlAdd10.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd10);
    		jtAddJava = new JTextField();
    		jtAddJava.setBounds(130, 280, 150, 20);
    		jtAddJava.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddJava);
    		// 添加大英
    		jlAdd11 = new JLabel();
    		jlAdd11.setBounds(320, 280, 80, 20);
    		jlAdd11.setText("大英:");
    		jlAdd11.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jlAdd11);
    		jtAddSystem = new JTextField();
    		jtAddSystem.setBounds(400, 280, 150, 20);
    		jtAddSystem.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpAddStudent.add(jtAddSystem);
    		jbAddSure = new JButton();
    		jbAddSure.setBounds(500, 320, 50, 20);
    		jbAddSure.setIcon(new ImageIcon("pic//tijiao.gif"));
    		jbAddSure.addActionListener(this);
    		jbAddSure.setActionCommand("添加提交");
    		jpAddStudent.add(jbAddSure);
    		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//查看
    		jl = new JLabel();
    		jl.setBounds(150, 50, 300, 20);
    		jl.setText("学生成绩信息表");
    		jl.setForeground(Color.gray);
    		jl.setFont(new Font("宋体", Font.PLAIN, 16));
    		jpSee.add(jl);
    		
    		MyTableModel Mytable = new MyTableModel();
    		jtable = new JTable(Mytable);
    		jtable.setShowGrid(true);
    		//设置列宽
    		col1 = jtable.getColumnModel().getColumn(0);
    		col1.setPreferredWidth(145);
    		col2 = jtable.getColumnModel().getColumn(1);
    		col2.setPreferredWidth(80);
    		col3 = jtable.getColumnModel().getColumn(2);
    		col3.setPreferredWidth(50);
    		col4 = jtable.getColumnModel().getColumn(3);
    		col4.setPreferredWidth(50);
    		col5 = jtable.getColumnModel().getColumn(4);
    		col5.setPreferredWidth(100);
    		col6 = jtable.getColumnModel().getColumn(5);
    		col6.setPreferredWidth(130);
    		col7 = jtable.getColumnModel().getColumn(6);
    		col7.setPreferredWidth(80);
    		col8 = jtable.getColumnModel().getColumn(7);
    		col8.setPreferredWidth(80);
    		col9 = jtable.getColumnModel().getColumn(8);
    		col9.setPreferredWidth(80);
    		col10 = jtable.getColumnModel().getColumn(9);
    		col10.setPreferredWidth(80);
    		jtable.setPreferredScrollableViewportSize(new Dimension(640, 400));//设置滚动条
    		js = new JScrollPane(jtable);
    		js.setBounds(50, 20, 750, 550);//
    		jpSee.add(js);
    	    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		setLocation(500, 150);//设置窗口左上角坐标
    		setResizable(true);//设置窗口可最大化
    		setSize(750, 500);//设置窗口大小
    		setVisible(true);//设置窗口可见
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口默认关闭为退出程序
    		setTitle("华软学生成绩管理系统");//设置窗口标题
    	}
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//判断学生是否存在
    	public Boolean isEixt(String ID, String fileName)
    	{
    		String str = null;
    		String[][] student = new String[100][];
    		FileReader fr;
    		BufferedReader br;
    		try
    		{
    			fr = new FileReader(fileName);
    			br = new BufferedReader(fr);
    			try
    			{
    				for (int i = 0; (str = br.readLine()) != null; i++)
    				{
    					student[i] = str.split(" ");
    					if (student[i][0].equals(ID))
    					{
    						return true;
    					}
    				}
    			}
    			catch (IOException e)
    			{
    				e.printStackTrace();
    			}
    		}
    		catch (FileNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		return false;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        //添加基本信息
    	public void add(String information, String FileName)
    	{
    		File file = new File(FileName);
    		try
    		{
    			BufferedWriter bw;
    			FileWriter fw;
    			// 如果文件(班级)不存在则创建
    			if (!file.exists())
    			{
    				// 创建文件(班级)
    				file.createNewFile();
    			}
    			try
    			{
    				fw = new FileWriter(FileName, true);
    				bw = new BufferedWriter(fw);
    				bw.write(information);
    				bw.newLine();
    				bw.close();
    			}
    			catch (IOException ex)
    			{
    				ex.printStackTrace();
    			}
    		}
    		catch (IOException e1)
    		{
    			e1.printStackTrace();
    		}
    	}
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//查看
    	public void SeeAll(String FileName)
    	{
    		String str = null;
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = " ";
    			}
    		}
    		try
            {
    	        FileReader fr = new FileReader(FileName);
    	        BufferedReader br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	student[i] = str.split(" ");
    	        }
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
    	}
    	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//查询
    	public int Search(String FileName,int num,String information)
    	{
    		String str = null;
    		String temp [][] = new String[100][12];
    		int count = 0;
    		int flag = 0;
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = "";
    			}
    		}
    		try
            {
    	        FileReader fr = new FileReader(FileName);
    	        BufferedReader br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	temp[i] = str.split(" ");
    	        	if(temp[i][num].equals(information))
    	        	{
    	        		student[count] = temp[i];
    	        		count ++;
    	        		flag = 1;
    	        	}
    	        }
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
            return flag;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//删除
    	public int delete(String FileName,int num,String information)
    	{
    		FileReader fr;
    		BufferedReader br;
    		BufferedWriter bw;
    		FileWriter fw;
    		String str = null;
    		int count = 0;
    		int k = 0;
    		int flag = 0;//判断该学生是否存在 0 没有 1 有
    		String temp [][] = new String[100][12];
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = "";
    			}
    		}
            try
            {
    	        fr = new FileReader(FileName);
    	        br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	temp[i] = str.split(" ");
    	        	if(temp[i][num].equals(information))
    	        	{
    	        		flag = 1;
    	        		continue;
    	        	}
    	        	student[count++]=temp[i];
    	        	if(k == 0)
    	        	{
    	        		fw = new FileWriter(FileName);
    	        		k++;
    	        	}
    	        	else
    	        	{
    	        		fw = new FileWriter(FileName,true);
    	        	}
    	        	bw = new BufferedWriter(fw);
    	        	bw.write(str);
    	 	        bw.newLine();
    	 	        bw.close();
    	        }
    	        br.close();
    	        
            }
            catch (FileNotFoundException e)
            {
    	        e.printStackTrace();
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
            return flag;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//修改
    	public int alter(int num,String information[])
    	{
    		FileReader fr;
    		BufferedReader br;
    		BufferedWriter bw;
    		FileWriter fw;
    		String str = null;
    		String tempStr = null;
    		int k =0;
    		int flag = 0;//判断该学生是否存在 0 没有 1 有
    		double total = 0;
    		String temp [][] = new String[100][12];
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = " ";
    			}
    		}
            try
            {
    	        fr = new FileReader(FileName);
    	        br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	temp[i] = str.split(" ");
    	        	if(temp[i][num].equals(information[num]))
    	        	{System.out.print("信息匹配成功~~");
    	        		tempStr = null;
    	        		flag = 1;
    	        		for(int j =0;j<= 9;j++)
    	        		{
    	        			if(information[j].equals(""))
    	        			{
    	        				if(j>=6)//修改单科成绩也要修改总成绩 和平均分
    	        				{
    	        					total += Double.parseDouble(temp[i][j]);
    	        				}
    	        				if(j == 0)
    	        					tempStr = temp[i][j];
    	        				else
    	        					tempStr=tempStr+" "+temp[i][j];
    	        				continue;
    	        			}
    	        			if(j>=6)
    	        			{
    	        				total += Double.parseDouble(information[j]);
    	        			}
    	        			temp[i][j] = information[j];
    	        			if(j == 0)
    	        				tempStr=temp[i][j];
    	        			else
    	        				tempStr=tempStr+" "+temp[i][j];
    	        		}
    	        		str = tempStr+" "+String.valueOf(total)+" "+String.valueOf((int)(total/4));
    	        		temp[i][10] = String.valueOf(total);temp[i][11] = String.valueOf((int)(total/4));
    	        	}
    	        	student[i]=temp[i];
    	        	if(k == 0)
    	        	{
    	        		fw = new FileWriter(FileName);
    	        		k++;
    	        	}
    	        	else
    	        	{
    	        		fw = new FileWriter(FileName,true);
    	        	}
    	        	bw = new BufferedWriter(fw);
    	        	bw.write(str);
    	 	        bw.newLine();
    	 	        bw.close();
    	        }
    	        br.close();
    	        
            }
            catch (FileNotFoundException e)
            {
    	        e.printStackTrace();
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
            return flag;
    	}
    	//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//排序
    	public void Sort(int num)
    	{
    		String str = null;
    		double d1,d2;
    		int count = 0;
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = null;
    			}
    		}
    		try
            {
    	        FileReader fr = new FileReader(FileName);
    	        BufferedReader br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	student[i] = str.split(" ");
    	        	count++;
    	        }
    	        for (int j = 0;j < count;j++) 
    			{			
    				for (int i = 0;i < count-1;i++) 
    				{				
    					String[] temp;
    					d1 = Double.parseDouble(student[i][num]);
    					d2 = Double.parseDouble(student[i+1][num]);
    					if(num == 3 ||num == 6||num == 7||num == 8|| num == 9||num == 10)
    					{
    						if (d1<d2)
    						{					
    							temp = student[i];					
    							student[i] = student[i + 1];					
    							student[i + 1] = temp;									
    						}		
    					}
    					else
    					{
    						if (d1>d2)
    						{					
    							temp = student[i];					
    							student[i] = student[i + 1];					
    							student[i + 1] = temp;									
    						}	
    					}
    						
    				}		
    			}	
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//查询平均成绩
    	public double SearchAvg(int num)
    	{
    		String str = null;
    		String temp [][] = new String[100][10];
    		double total = 0;
    		int count = 0;
    		for(int i =0;i<100;i++)
    		{
    			for(int j=0;j<12;j++)
    			{
    				student[i][j] = "";
    			}
    		}
    		try
            {
    	        FileReader fr = new FileReader(FileName);
    	        BufferedReader br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	count ++;
    	        	temp[i] = str.split(" ");
    	        	total +=Double.parseDouble(temp[i][num]);
    	        }
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
            return total/count;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	public boolean Check(String str)
    	{
    		int len = str.length();
    		for(int i =0;i<len;i++)
    		{
    			if(str.charAt(i)<'0'||str.charAt(i)>'9')
    			{
    				return false;
    			}
    		}
    		return true;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	//百分比
    	public int[] percent(int num)
    	{
    		String temp [][] = new String[100][10];
    		String str = null;
    		int information[] = new int [7];
    		for(int i=0;i<6;i++)
    		{
    			information[i] = 0;
    		}
    		try
            {
    	        FileReader fr = new FileReader(FileName);
    	        BufferedReader br = new BufferedReader(fr);
    	        for(int i =0;(str = br.readLine())!=null;i++)
    	        {
    	        	temp[i] = str.split(" ");
    	        	information[5]++;
    	        	if(Double.parseDouble(temp[i][num])>=90)
    	        	{
    	        		information[0]++;
    	        	}
    	        	else if(Double.parseDouble(temp[i][num])>=80)
    	        	{
    	        		information[1]++;
    	        	}
    	        	else if(Double.parseDouble(temp[i][num])>=70)
    	        	{
    	        		information[2]++;
    	        	}
    	        	else if(Double.parseDouble(temp[i][num])>=60)
    	        	{
    	        		information[3]++;
    	        	}
    	        	else if(Double.parseDouble(temp[i][num])<60)
    	        	{
    	        		information[4]++;
    	        	}
    	        }
            }
            catch (IOException e)
            {
    	        e.printStackTrace();
            }
    		return information;
    	}
    	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    	public void mouseReleased(MouseEvent e)
    	{}
    
    	public void mousePressed(MouseEvent e)
    	{}
    
    	public void mouseEntered(MouseEvent e)
    	{}
    
    	public void mouseExited(MouseEvent e)
    	{}
    
    	public void mouseClicked(MouseEvent e)
    	{
    		Point p = e.getPoint();
    		row = jtable.rowAtPoint(p);
    		if (e.getClickCount() == 2)
    		{}
    	}
    
    	public void actionPerformed(ActionEvent e)
    	{
    		if (e.getActionCommand().equals("首页"))
    		{
    			cardl.show(card, "首页");
    		}
    		else if (e.getActionCommand().equals("退出"))
    		{
    			dispose();
    		}
    		else if (e.getActionCommand().equals("帮助"))
    		{
    			cardl.show(card, "帮助");
    		}
    		else if (e.getActionCommand().equals("查看"))
    		{
    			jtable.updateUI();
    			SeeAll(FileName);
    			cardl.show(card, "查看");
    		}
    		//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//按学号删除
    		else if (e.getActionCommand().equals("按学号删除"))
    		{
    			String ID=JOptionPane.showInputDialog(null,"请输入学号"); 
    			if(ID!=null)
    			{
    				if(!ID.equals(""))
    				{
    					jtable.updateUI();
    					if(delete(FileName,0,ID) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该学生", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入学号!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按姓名删除
    		else if (e.getActionCommand().equals("按姓名删除"))
    		{
    			String Name=JOptionPane.showInputDialog(null,"请输入姓名"); 
    			if(Name!=null)
    			{
    				if(!Name.equals(""))
    				{
    					jtable.updateUI();
    					if(delete(FileName,1,Name) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,该学生不在成绩管理系统中!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    				    cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入姓名!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按性别删除
    		else if (e.getActionCommand().equals("按性别删除"))
    		{
    			Object[] Sex = {"男","女"};
    			String s = (String) JOptionPane.showInputDialog(this,"请选择性别\n","按性别删除", JOptionPane.QUESTION_MESSAGE, null,Sex, "男");
    			if(!s.equals(""))
    			{
    				jtable.updateUI();
    				if(delete(FileName,2,s) == 0)
    				{
    					JOptionPane.showMessageDialog(null, "对不起,在成绩管理系统中没有查找到!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    				cardl.show(card, "查看");
    			}
    			
    		}
    		//按年龄删除
    		else if (e.getActionCommand().equals("按年龄删除"))
    		{
    			String Age=JOptionPane.showInputDialog(null,"请输入年龄");
    			if(Age!=null)
    			{
    				if(!Age.equals(""))
    				{
    					jtable.updateUI();
    					if(delete(FileName,3,Age) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该年龄的学生", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入年龄!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按系别删除
    		else if (e.getActionCommand().equals("按系别删除"))
    		{
    			String Collage=JOptionPane.showInputDialog(null,"请输入系别");
    			if(Collage!=null)
    			{
    				if(!Collage.equals(""))
    				{
    					jtable.updateUI();
    					if(delete(FileName,4,Collage)  == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该系别的学生", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入系别!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按班级删除
    		else if (e.getActionCommand().equals("按班级删除"))
    		{
    			String Class=JOptionPane.showInputDialog(null,"请输入班级");
    			if(Class!=null)
    			{
    				if(!Class.equals(""))
    				{
    					jtable.updateUI();
    					if(delete(FileName,5,Class) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该班级的学生", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入班级!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("添加学生"))
    		{
    			cardl.show(card, "添加学生");
    		}
    		else if (e.getActionCommand().equals("添加班级"))
    		{
    			cardl.show(card, "添加学生");
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("按学号修改"))
    		{
    			cardl.show(card, "按学号修改");
    		}
    		else if (e.getActionCommand().equals("按姓名修改"))
    		{
    			cardl.show(card, "按姓名修改");
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		//按学号查询
    		else if (e.getActionCommand().equals("按学号查询"))
    		{
    			String ID=JOptionPane.showInputDialog(null,"请输入学号");
    			if(ID!=null)
    			{
    				if(!ID.equals(""))
    				{
    					jtable.updateUI();
    					if(Search(FileName,0,ID) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,该学生不在成绩管理系统中!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入学号!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按姓名查询
    		else if (e.getActionCommand().equals("按姓名查询"))
    		{
    			String Name=JOptionPane.showInputDialog(null,"请输入姓名");
    			if(Name!=null)
    			{
    				if(!Name.equals(""))
    				{
    					jtable.updateUI();
    					if(Search(FileName,1,Name) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,该学生不在成绩管理系统中!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入姓名!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按性别查询
    		else if (e.getActionCommand().equals("按性别查询"))
    		{
    			Object[] Sex = {"男","女"};
    			String s = (String) JOptionPane.showInputDialog(this,"请选择性别\n","按性别查询", JOptionPane.QUESTION_MESSAGE, null,Sex, "男");
    			if(s!=null)
    			{
    					jtable.updateUI();
    					if(Search(FileName,2,s) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,在成绩管理系统中没有查找到该性别的学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    			}
    		}
    		//按年龄查询
    		else if (e.getActionCommand().equals("按年龄查询"))
    		{
    			String Age=JOptionPane.showInputDialog(null,"请输入年龄");
    			if(Age!=null)
    			{
    				if(!Age.equals(""))
    				{
    					jtable.updateUI();
    					if(Search(FileName,3,Age) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该年龄的学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入年龄!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按系别查询
    		else if (e.getActionCommand().equals("按系别查询"))
    		{
    			String Collage=JOptionPane.showInputDialog(null,"请输入系别");
    			if(Collage!=null)
    			{
    				if(!Collage.equals(""))
    				{
    					jtable.updateUI();
    					if(Search(FileName,4,Collage) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该系别的学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入系别!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//按班级查询
    		else if (e.getActionCommand().equals("按班级查询"))
    		{
    			String Class =JOptionPane.showInputDialog(null,"请输入班级");
    			if(Class!=null)
    			{
    				if(!Class.equals(""))
    				{
    					jtable.updateUI();
    					if(Search(FileName,5,Class) == 0)
    					{
    						JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该班级的学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    					}
    					cardl.show(card, "查看");
    				}
    				else
    				{
    					JOptionPane.showMessageDialog(null, "对不起,请确保输入班级!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("按学号排序"))
    		{
    			jtable.updateUI();
    			Sort(0);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按年龄排序"))
    		{
    			jtable.updateUI();
    			Sort(3);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按总成绩排序"))
    		{
    			jtable.updateUI();
    			Sort(10);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按Java排序"))
    		{
    			jtable.updateUI();
    			Sort(8);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按高数排序"))
    		{
    			jtable.updateUI();
    			Sort(6);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按C语言排序"))
    		{
    			jtable.updateUI();
    			Sort(7);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按大英排序"))
    		{
    			jtable.updateUI();
    			Sort(9);
    			cardl.show(card, "查看");
    		}
    		else if (e.getActionCommand().equals("按总成绩排序"))
    		{
    			String Age=JOptionPane.showInputDialog(null,"请输入年龄");
    			jtable.updateUI();
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("求数学平均分"))
    		{
    			cardl.show(card, "首页");
    			JOptionPane.showMessageDialog(null, "数学平均分:"+String.valueOf(SearchAvg(6)), "提示", JOptionPane.INFORMATION_MESSAGE);
    		}
    		else if (e.getActionCommand().equals("求Java平均分"))
    		{
    			cardl.show(card, "首页");
    			JOptionPane.showMessageDialog(null, "Java平均分:"+String.valueOf(SearchAvg(8)), "提示", JOptionPane.INFORMATION_MESSAGE);
    		}
    		else if (e.getActionCommand().equals("求C语言平均分"))
    		{
    			cardl.show(card, "首页");
    			JOptionPane.showMessageDialog(null, "C语言平均分:"+String.valueOf(SearchAvg(7)), "提示", JOptionPane.INFORMATION_MESSAGE);
    		}
    		else if (e.getActionCommand().equals("求大英平均分"))
    		{
    			cardl.show(card, "首页");
    			JOptionPane.showMessageDialog(null, "大英平均分:"+String.valueOf(SearchAvg(9)), "提示", JOptionPane.INFORMATION_MESSAGE);
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("Math饼形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(6);
    			n = (double)information[5]/100;
    			JFree jf = new JFree("Math",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("Java饼形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(8);
    			n = (double)information[5]/100;
    			JFree jf = new JFree("Java",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("大英饼形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(9);
    			n = (double)information[5]/100;
    			JFree jf = new JFree("大英",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("C语言饼形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(7);
    			n = (double)information[5]/100;
    			JFree jf = new JFree("C语言",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("Math柱形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(6);
    			n = (double)information[5]/100;
    			JFree2 jf = new JFree2("Math",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("Java柱形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(8);
    			n = (double)information[5]/100;
    			JFree2 jf = new JFree2("Java",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("大英柱形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(9);
    			n = (double)information[5]/100;
    			JFree2 jf = new JFree2("大英",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("C语言柱形图"))
    		{
    			int information[] = new int [7];
    			double n =0;
    			information = percent(7);
    			n = (double)information[5]/100;
    			JFree2 jf = new JFree2("C语言",information[0]/n,information[1]/n,information[2]/n,information[3]/n,information[4]/n);
    		}
    		else if (e.getActionCommand().equals("help"))
    		{
    			JOptionPane.showMessageDialog(null, "请联系相关人员进行帮助~~", "提示", JOptionPane.INFORMATION_MESSAGE);
    
    		}
    		//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    		else if (e.getActionCommand().equals("按学号修改提交"))
    		{
    			String[] information = new String[10];
    			String sex = null;
    			if(jtAlterID.getText().equals(""))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请填写要修改学生的学号!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else if(!Check(jtAlterSystem.getText())||!Check(jtAlterID.getText())||!Check(jtAlterSoftware.getText())||!Check(jtAlterJava.getText())||!Check(jtAlterMath.getText())||!Check(jtAlterAge.getText()))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请确保信息格式正确!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else
    			{
    				information[0] = jtAlterID.getText();
    				information[1] = jtAlterName.getText();
    				if (jr_man.isSelected())
    				{sex = "男";}
    				else
    				{sex = "女";}
    				information[2] = sex;
    				information[3] = jtAlterAge.getText();
    				information[4] = jtAlterCollage.getText();
    				information[5] = jtAlterClass.getText();
    				information[6] = jtAlterMath.getText();
    				information[7] = jtAlterSoftware.getText();
    				information[8] = jtAlterJava.getText();
    				information[9] = jtAlterSystem.getText();
    				if(alter(0,information) == 0)
    				{
    					JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    				else
    				{
    					jtAlterID.setText("");jtAlterAge.setText("");jtAlterCollage.setText("");jtAlterClass.setText("");jtAlterMath.setText("");jtAlterSoftware.setText("");
    					jtAlterJava.setText("");jtAlterSystem.setText("");jtAlterName.setText("");
    					JOptionPane.showMessageDialog(null, "修改信息成功", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		else if (e.getActionCommand().equals("按姓名修改提交"))
    		{
    			String[] information = new String[10];
    			String sex = null;
    			if(jtAlterName2.getText().equals(""))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请填写要修改学生的姓名!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else if(!Check(jtAlterSystem2.getText())||!Check(jtAlterID2.getText())||!Check(jtAlterSoftware2.getText())||!Check(jtAlterJava2.getText())||!Check(jtAlterMath2.getText())||!Check(jtAlterAge2.getText()))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请确保信息格式正确!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else
    			{
    				information[0] = jtAlterID2.getText();
    				information[1] = jtAlterName2.getText();
    				if (jr_man2.isSelected())
    				{sex = "男";}
    				else
    				{sex = "女";}
    				information[2] = sex;
    				information[3] = jtAlterAge2.getText();
    				information[4] = jtAlterCollage2.getText();
    				information[5] = jtAlterClass2.getText();
    				information[6] = jtAlterMath2.getText();
    				information[7] = jtAlterSoftware2.getText();
    				information[8] = jtAlterJava2.getText();
    				information[9] = jtAlterSystem2.getText();
    				if(alter(1,information) == 0)
    				{
    					JOptionPane.showMessageDialog(null, "对不起,成绩管理系统中没有该学生!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    				else
    				{
    					jtAlterID2.setText("");jtAlterAge2.setText("");jtAlterCollage2.setText("");jtAlterClass2.setText("");jtAlterMath2.setText("");jtAlterSoftware2.setText("");
    					jtAlterJava2.setText("");jtAlterSystem2.setText("");jtAlterName2.setText("");
    					JOptionPane.showMessageDialog(null, "修改信息成功", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    		else if (e.getActionCommand().equals("添加提交"))
    		{
    			String information = null;
    			String sex = null;
    			double math,system,java,software;
    			// 请确保信息填完成
    			if (jtAddCollage.getText().equals("") || jtAddSystem.getText().equals("") || jtAddID.getText().equals("") || jtAddName.getText().equals("") || jtAddAge.getText().equals("") || jtAddClass.getText().equals("")
    			        || jtAddMath.getText().equals("") || jtAddJava.getText().equals("") || jtAddSoftware.getText().equals(""))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请确保信息填完成!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else if(!Check(jtAddSystem.getText())||!Check(jtAddID.getText())||!Check(jtAddSoftware.getText())||!Check(jtAddJava.getText())||!Check(jtAddMath.getText())||!Check(jtAddAge.getText()))
    			{
    				JOptionPane.showMessageDialog(null, "对不起,请确保信息格式正确!", "提示", JOptionPane.INFORMATION_MESSAGE);
    			}
    			else
    			{
    				math = Double.parseDouble(jtAddMath.getText());
    				system = Double.parseDouble(jtAddSystem.getText());
    				java = Double.parseDouble(jtAddJava.getText());
    				software = Double.parseDouble(jtAddSoftware.getText());
    				if (jr_man.isSelected())
    				{
    					sex = "男";
    				}
    				else
    				{
    					sex = "女";
    				}
    				information = jtAddID.getText() + " " + jtAddName.getText() + " " + sex + " " + jtAddAge.getText()+" " +jtAddCollage.getText() +" " + jtAddClass.getText() + " " + jtAddMath.getText() + " "
    				        + jtAddSoftware.getText() + " " + jtAddJava.getText() + " " + jtAddSystem.getText()+" "+String.valueOf(math+system+java+software)+" "+String.valueOf((math+system+java+software)/4);
    				if (isEixt(jtAddID.getText(), FileName))
    				{
    					JOptionPane.showMessageDialog(null, "对不起,该信息已经填写!", "提示", JOptionPane.INFORMATION_MESSAGE);
    				}
    				else
    				{
    					add(information, FileName);
    					jtAddID.setText("");
    					jtAddName.setText("");
    					jtAddCollage.setText("");
    					jtAddClass.setText("");
    					jtAddAge.setText("");
    					jtAddMath.setText("");
    					jtAddSystem.setText("");
    					jtAddSoftware.setText("");
    					jtAddJava.setText("");
    					JOptionPane.showMessageDialog(null,"成功","提示",JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    	}
    
    	class MyTableModel extends AbstractTableModel
    	{
    		private String[] columnNames = {"学号","姓名","性别","年龄","系别","班级","高数","C语言","Java","大英","总成绩","平均分"};
    		private String[][] data = student;
    		public int getColumnCount()
    		{
    			return columnNames.length;
    		}
    
    		public int getRowCount()
    		{
    			if(data == null)
    			{
    				return 0;
    			}
    			else
    			{
    				return data.length;
    			}
    		}
    		public String getColumnName(int col)
    		{
    			return columnNames[col];
    		}
    
    		public String getValueAt(int row, int col)
    		{
    			return data[row][col];
    		}
    
    		public Class getColumnClass(int c)
    		{
    			return getValueAt(0, c).getClass();
    		}
    
    		public boolean isCellEditable(int row, int col)
    		{
    			return false;
    		}
    	}
    
    	public static void main(String[] args)
    	{
    		main m = new main();
    		m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    
    

    上面是我的主程序,要整个包请联系我。

    展开全文
  • Python — 学生成绩管理

    千次阅读 2018-12-09 15:51:31
    Python — 学生成绩管理 摘要 本次实验要求使用python语言,读取现有的... 在实验过程中,我首先分析实验要求,决定使用”将Excel文件导入数据库、录入学生各科成绩信息、计算总成绩、显示输出、导出文件”的基本...
  • EXCEL成绩管理系统

    千次阅读 2009-08-27 21:46:00
    简易成绩分析系统使用说明四川省泸州市纳溪区大渡中学教务室制作使用※※※※一、特色1、EXCEL平台本作品采用EXCEL 公式+VBA制作,既...你可以先在表输入、在记录单逐条录入、导入或复制粘贴原始成绩,经设置表简单设
  • awk基本语法格式

    2019-04-15 11:11:00
    命令使用格式 awk -F|-f|-v 'BEGIN{ } / / {comand1;...BEGIN{ } 初始化代码块,在每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符 { } 命令代码块,包含一条或多条命令 // 用...
  • 管理用户实例2:创建用户账号实例3:删除账号实例4:设置访问权限实例5:更改密码1.2.3 MySQL密码丢失数据的回复实例6: 普通用户密码丢失情况下的恢复实例7: Root密码丢失情况下的恢复二、MySQL案例数据库及建库表...
  • 开发工具与关键技术:VS ASP.NET.MVC 作者:冉冉 撰写时间:2019年07月04日 ...解决这个问题主要有两个思路,一个是在页面对格式进行处理;另一个是直接在控制器进行处理。具体在上个星期已经说过了,在...
  • c语言学生成绩管理系统

    千次阅读 2018-12-07 16:34:55
    c语言学生成绩管理系统欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...
  • 条件测试 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。条件测试在各种流程控制语句,例如判断语句和循环...
  • 统计手机流量信息 数据去重 数据排序 平均成绩 倒排索引
  • 典型格式:只有。。。才。。。 必要条件是重点部分,即只有。。。才中间的部分是重点。 提防过于绝对的表述:只要。。。。就,只要你上课认真听讲,你就可以考100分,过于绝对,一般选项出现不选! 例题1: (2018 ...
  • C++ ——学生成绩管理系统

    千次阅读 多人点赞 2020-06-15 10:33:40
    (1) 加深C++语法、基础知识和编程技巧的运用,编写具有一定综合应用价值程序。 (2) 熟悉掌握C++的语法和面向对象程序设计方法。进一步理解和运用结构化和面向对象程设计想结合的思想和方法。 (3) 掌握函数的...
  • 一.jpa多多__利用一多实现(推荐) 尽量不要使用@manyToMany,特别是中间表有冗余字段的时候; 最好是在两个主表中加上@oneToMany,从表中加上@manyToOne来配置,加强jpa中间表的支持度 !!!注意所有主表中的对应关系...
  • // 设置具体的数据格式,如视频图像的宽、高等 HRESULT SetMediaType(const CMediaType* pmt); // 递交数据,即显示、呈现数据 HRESULT DoRenderSample(IMediaSample* pMediaSample); private: ...
  • 它提供了一系列的工具,可以用来进行数据提取转换加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive定义了简单的类似于SQL的查询语言称为QL,它允许熟悉SQL的用户查询数据。同时这种...
  • Struts2.5+Hibernate5.8.0实现的学生成绩管理系统(Javaweb项目) 该项目使用的Tomcat版本为9.0.2,JDK版本为jdk1.8.0_91,数据库为MySQL(PS:该项目前端不好看...可数据进行分页 实现对成绩的复杂查询,如成绩...
  • 记录说明:班级里共有40个人,按最终平均成绩从高到低划分等级,A等级30%,B等级50%,C等级20%。 部分成绩如下表所示: Excel中相关函数介绍: IF函数 IF函数有三个参数,语法如下: =IF(条件判断, 结果为真...
  • 学生成绩信息管理系统

    万次阅读 热门讨论 2009-06-01 10:27:00
    所有的输入数据都进行了检验,并且组合输入也进行了级联验证,输入的格式也比较简单。对于验证出错的,给出详细的错误信息,使用户可以很清楚的知道自己在哪里出错了,方便用户的使用。 二、系统需求...
  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    万次阅读 多人点赞 2021-03-26 11:11:21
    (仅仅取决于逻辑特性,与其在计算机内部如何表示和实现无关) 定义抽象数据类型的一种格式: ADT name{ 数据对象:<> 数据关系:<> 基本操作:<> }ADT name 算法:是特定问题求解步骤的一种描述。 算法五个特性:...
  • 超硬核!兔兔阿里p7学长给的面试知识库

    万次阅读 多人点赞 2021-05-26 22:14:07
    我统计了BAT笔试面试出现频率最高的五道题,学会了能碰到一道 当年,学姐把这份Java总结给我,让我在22k的校招王者局乱杀 超硬核万字!web前端学霸笔记 面试经验系列历史文章: 这个系列离结束差的还特别多,会...
  • 第7章 文件和数据格式化 7.1 文件的使用 要点:Python能够以文本和二进制两种方式处理文件 7.1.1 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似地...
  • JSP+Servlet+JavaBean+DAOWeb—学生成绩管理系统

    千次阅读 热门讨论 2019-05-27 20:24:55
    基于JSP+Servlet+JavaBean+DAOWeb架构-成绩管理系统~

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,932
精华内容 3,972
关键字:

对总成绩进行条件格式设置