请问各位java达人关于hashtable的问题,急啊!
我要做一个学生成绩分析管理系统,现在做到差不多了,最被那成绩统计卡住了,很痛苦啊!我用一个hashtable存着学号,姓名,科目,班级,分数等信息,现要提供一个界面输入科...
我要做一个学生成绩分析管理系统,现在做到差不多了,最被那成绩统计卡住了,很痛苦啊!我用一个hashtable存着学号,姓名,科目,班级,分数等信息,现要提供一个界面输入科目,班级这二项信息,然后输出考生人数,最高分,最低分,平均分,及格人数等信息。我已经完成界面了,但统计考生人数,最高分,最低分,平均分,及格人数的算法却不会。请问各位达人有何良策啊?我的想法是先匹配科目,班级,然后把hashtable中的每个对象中能同时匹配这两项的对象中分数那一项提取出来,如果能的话,后面的我就会做了。但现在我就是不会这个把能匹配的每一个对象中的分数提出来!请问各位这该如何解决呢?还是各位大大认为小弟很蠢,其实这有其他更好的解决方法?
大哥,我就是不会按科目和班级循环匹配区配啊。。。也不知道有hashtable的什么方法可以一个个提取hashtable中的对象的元素啊。。。我想解决的就是这个了,能帮我解决的,加100分啦,我都快烦死了。。。痛苦中。。。 展开
大哥,我就是不会按科目和班级循环匹配区配啊。。。也不知道有hashtable的什么方法可以一个个提取hashtable中的对象的元素啊。。。我想解决的就是这个了,能帮我解决的,加100分啦,我都快烦死了。。。痛苦中。。。 展开
5个回答
展开全部
统计考生人数:你可以定义一个计数器,读取考生信息到一个集合中,判断考生的学号 如果不相同就加1 然后把这个集合中所有考生学号是这个的信息删除,这样笑野斗手加下来就不会有重复的碰销喊;
最高分 最低分 这两个最简单 只要把考生信息中的某一行进行比较(就是某一科目)就是排序就OK了 然后输出对应的考生名和其他信息
平均分:应该是某一科目的平均分吧 就把这一科目中的所有成绩相加 再处以考生人数 刚才已经有考生人数了 如果要算所有科目的平均分 就把这几个科目的平均分相加 再除以科目总数就OK了
及格人数 再定义一个计数器 做循环 判断考生在该课程中的分数是否小于60,如果小于60分就把现在刚才那个计数器-1,到最后就是及格人数了
还有你那个想法 你应该有数据库吧 不知道你用什么数据库 mysql或者是其他不管什么数据库 中的数据表都是存放数据的 学生表里应该有什么属性自己应该先想好了学生表: 学生ID 学生名字 学生班级 学生专业名称 等等吧
专业信息表: 专业名称 课程名称
成绩表:课程名称 考生ID 考生成绩
这几个表要有连接关系 尽量减少冗余
当然我这是随便写了几个表 你可以根据自己的想法写 最好跟同学商量商量
写程序的时候最好是先设计数据库 你写好的程序最后是要显示和处理数据库中的数据的,不先设计好数据库 等你程序写完了 数据库再有大的改动 你的程序就得大改了 甚至有可能得重写程序
关于那个hashtable 我觉得不用它 跟上面说的一样 在这里不是很好用
最高分 最低分 这两个最简单 只要把考生信息中的某一行进行比较(就是某一科目)就是排序就OK了 然后输出对应的考生名和其他信息
平均分:应该是某一科目的平均分吧 就把这一科目中的所有成绩相加 再处以考生人数 刚才已经有考生人数了 如果要算所有科目的平均分 就把这几个科目的平均分相加 再除以科目总数就OK了
及格人数 再定义一个计数器 做循环 判断考生在该课程中的分数是否小于60,如果小于60分就把现在刚才那个计数器-1,到最后就是及格人数了
还有你那个想法 你应该有数据库吧 不知道你用什么数据库 mysql或者是其他不管什么数据库 中的数据表都是存放数据的 学生表里应该有什么属性自己应该先想好了学生表: 学生ID 学生名字 学生班级 学生专业名称 等等吧
专业信息表: 专业名称 课程名称
成绩表:课程名称 考生ID 考生成绩
这几个表要有连接关系 尽量减少冗余
当然我这是随便写了几个表 你可以根据自己的想法写 最好跟同学商量商量
写程序的时候最好是先设计数据库 你写好的程序最后是要显示和处理数据库中的数据的,不先设计好数据库 等你程序写完了 数据库再有大的改动 你的程序就得大改了 甚至有可能得重写程序
关于那个hashtable 我觉得不用它 跟上面说的一样 在这里不是很好用
展开全部
你存的数据是一个表格数据,这不是一个hastable能存下来的吧?
你应该是用hashtable存 学号,姓名,科目,班级,分数的每一条记录信息.
然后再把这个hashtable放在一个List里这样吧?
取的候循环List 取出每个hashtable.
再取出你要的对应的字段(如你要的分数,成绩之类的).这不是很简单的问题么?
你说不会遍历hashtable. hashtable不是可以获取一个Enumeration的枚举春前变量么.你取出来以肆销后一个个的枚举不就可以了?
其实说实话,你真要扒雹清统计. 还不如把数据存到一个数据库里,用sql来统计. 再直接取出来就可以了,这样代码比你现在实现的要简单百倍,sql效率比你把读据读出来一个个的加要高得多,而且表达起来也比你写代码来实现统计要简洁.更重要的是,统计项变化了,你只用改sql语句就行,其它地方改动很小.
你应该是用hashtable存 学号,姓名,科目,班级,分数的每一条记录信息.
然后再把这个hashtable放在一个List里这样吧?
取的候循环List 取出每个hashtable.
再取出你要的对应的字段(如你要的分数,成绩之类的).这不是很简单的问题么?
你说不会遍历hashtable. hashtable不是可以获取一个Enumeration的枚举春前变量么.你取出来以肆销后一个个的枚举不就可以了?
其实说实话,你真要扒雹清统计. 还不如把数据存到一个数据库里,用sql来统计. 再直接取出来就可以了,这样代码比你现在实现的要简单百倍,sql效率比你把读据读出来一个个的加要高得多,而且表达起来也比你写代码来实现统计要简洁.更重要的是,统计项变化了,你只用改sql语句就行,其它地方改动很小.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打个比方 User user1=new User("小明",20);
User user2=new User("小强",18);
hashtable<String,User> t=new hashtable<启伏颂String,User>();//这里用了泛型 避免装箱拆箱
t.put("小明",user1);
t.put("小强",user2);
for(User user:t.values())//遍历这个hashtable 取厅正出所有值
{
System.out.println(user.getName());
System.out.println(user.getAge());
}
如果想取出所有键的话:
for(String i:t.keySet()){
System.out.println(i);
}
其他的看你的了悄郑 希望能解决
User user2=new User("小强",18);
hashtable<String,User> t=new hashtable<启伏颂String,User>();//这里用了泛型 避免装箱拆箱
t.put("小明",user1);
t.put("小强",user2);
for(User user:t.values())//遍历这个hashtable 取厅正出所有值
{
System.out.println(user.getName());
System.out.println(user.getAge());
}
如果想取出所有键的话:
for(String i:t.keySet()){
System.out.println(i);
}
其他的看你的了悄郑 希望能解决
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写一个字段为好袭:学号,姓名,科目,班级的javabean,将这个javabean的对象存入hashtable,然后此则按科目和班级循环匹配,每次匹配友扒兄成功,将成绩存入一个ArrayList
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同学,你是不是华南农业大学的??
是不是软件学院?还是信息学院??告陵袜
是袜激的话那就好玩了汪则,哈哈!!
是不是软件学院?还是信息学院??告陵袜
是袜激的话那就好玩了汪则,哈哈!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询