我目前正在制作一个程序,在Java,SQL和HTML的帮助下以格式化的方式显示学生的分数。
该计划的目的是根据登录的人显示报告。
我的代码包含两个类:MarkEntry和WriteToFile。
MarkEntry是java程序,它获取所有输入,如教师姓名,用户名,密码和要生成的报告类型,然后将此信息传递给另一个类:WriteToFile。然后,这个WriteToFile编写一个html报告并将数据列表并以一种很好的方式显示它。
我目前停留在JAVA部分。 我目前正在尝试访问WriteToFile中的Write方法。 它在Bluej中编译没有错误。 但它在cmd中没有这样做。 这就是它在cmd中所说的: Error (cmd中的错误)。 在此先感谢您的帮助,并抱歉发布了这么多代码。 :) 出于参考目的,这里是代码(两个类):
import java.util.*;
import java.sql.*;
public class MarkEntry {
public static Connection con;
public static Statement stmt;
public static ResultSet rs;
public static String Username;
public static String Password;
public static String Role;
public static String Name;
public static String Grade;
public static String Section;
public static String Subject;
public static boolean temp = false;
public static int reportChoice;
public static String studentChoice;
public static int studentRollNo;
public static Scanner s = new Scanner(System.in);
public static void main(String args[]){
//Connextion
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost/harssha_gowtham","root","");
stmt=con.createStatement();
Login();
// ResultSet rs=stmt.executeQuery("select * from student_data");
// while(rs.next())
// System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getInt(3) + " " + rs.getString(4));
// con.close();
}catch(Exception e)
{
System.out.println(e);
}
}
public static void Login(){
//Lagin
try {
System.out.println("Welcome to the Mark Entry System ");
System.out.println("Username: ");
Username = s.nextLine();
System.out.println("Password: ");
Password = s.nextLine();
//Fetching the name with the user name.
rs = stmt.executeQuery("select Name from teachers_login where Username = '" + Username + "'" + "AND Password = '" + Password +"'");
if(rs.next()){
Name = rs.getString(1);
}
else{
//Incorrect Login
System.out.println("Incorrect Username or Password");
Login();
}
rs.beforeFirst(); //reinitializing result set after looping through the table
System.out.println();
//Displaying all possible roles with class and section and letting user choose one
System.out.println("Possible Roles:");
System.out.println();
System.out.println("Role Grade Section");
rs = stmt.executeQuery("select Role, Class, Section from teachers_roles WHERE Name= '" + Name +"'");
while(rs.next()){
System.out.println(rs.getString(1) + " " + rs.getInt(2) + " " + rs.getString(3)) ;
}
//Asking for a role
System.out.println("Login As?");
Role = s.nextLine();
rs.beforeFirst();
if((Role.equals("ST") || Role.equals("HOD")) && ((checkRole() == true))){
//Ask for the class and the section as there can be many
System.out.print("Grade: ");
Grade = s.nextLine();
System.out.println();
System.out.print("Section:");
Section = s.nextLine();
//Have to insert checkGrade()
//Get subject Automatically
rs = stmt.executeQuery("SELECT Subject FROM teachers_roles WHERE teachers_roles.Class = '" + Grade + "' AND teachers_roles.Section = '" + Section +"' AND teachers_roles.Name = '" + Name +"'");
if(rs.next())
Subject = rs.getString(1);
}
else if(Role.equals("CT") && ((checkRole() == true)))
{
//Ask for the class and the section as there can be many
rs = stmt.executeQuery("SELECT class , Section from teachers_roles WHERE Name = '" + Name + "' AND Role = '" + Role + "'");
while(rs.next()){
Grade = rs.getString(1);
Section = rs.getString(2);
}
//Debug info
System.out.println(Grade);
System.out.println(Section);
System.out.println("Choose the Student:");
studentChoice = s.nextLine();
rs = stmt.executeQuery("select student_data.Roll_No FROM student_data WHERE student_data.Name ='"+studentChoice+"'");
studentRollNo = rs.getInt(1);
perStudent();
}
else if(Role.equals("COD") && ((checkRole() == true)))
{
//There is nothing for a COD
}
else
{
System.out.println("Error.");
Login();
}
//Plug in incorrect role code when done
//Asking for the type of Report
System.out.println("Choose Reports");
if(Role.equals("ST")){
System.out.println("1) Per Subject Report : Students Vs. Assesment Types ");
reportChoice = s.nextInt();
}
else if(Role.equals("CT")){
System.out.println("1) Per Student Report : Subject Vs. Assesment Types ");
System.out.println("2) All Student Report : Students Vs. Assesment Types ");
reportChoice = s.nextInt();
}
else if(Role.equals("HOD")){
System.out.println("1) Per Class Report : Students Vs. Assessment Types ");
reportChoice = s.nextInt();
}
else if(Role.equals("COD"))
{
System.out.println("1) Per Student Report : Subject Vs. Assesment Types ");
System.out.println("2) All Student Report : Students Vs. Assesment Types ");
System.out.println("3) Per Class Report : Students Vs. Assessment Types ");
System.out.println("4) Per Subject Report : Students Vs. Assesment Types ");
reportChoice = s.nextInt();
}
else
{
System.out.println("Error");
}
//Corresponding function calls
if(reportChoice == 1 ) {
if(Role.equals("ST"))
perSubject();
else if(Role.equals("CT"))
perStudent();
else if(Role.equals("HOD"))
perClass();
else if(Role.equals("COD"))
perStudent();
}
else if(reportChoice == 2){
if(Role.equals("CT"))
allStudent();
else if(Role.equals("COD"))
allStudent();
}
else if(reportChoice == 3){
if(Role.equals("COD"))
perClass();
}
else if(reportChoice == 4){
if(Role.equals("COD"))
perSubject();
}
else {
System.out.println("Error.");
Login();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public static boolean checkRole() {
//To check if its a valid role or not
try
{
while(rs.next()){
if(Role.equals(rs.getString(1)))
temp = true;
}
}
catch(Exception e)
{
System.out.println(e);
}
finally
{
return temp;
}
}
public static void perSubject() {
try{
System.out.println("Generating Per Subject report...");
System.out.println("Subject Chosen: " + Subject);
rs = stmt.executeQuery("SELECT student_data.Name , "+Subject+".UT1 , "+Subject+".UT2 , "+Subject+".PRJ , "+Subject+".TE ,"+Subject+".Final FROM "+Subject+" INNER JOIN student_data ON "+Subject+".Roll_No = student_data.Roll_No AND student_data.Class ="+Grade+" AND student_data.Section = '"+Section+"' GROUP BY student_data.Name");
WriteToFile.Write(reportChoice,Role); //Here is the error
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void perStudent() {
System.out.println("Generating Per Student Report...");
System.out.println("Student Chosen:" + studentChoice);
}
public static void perClass() {
System.out.println("Per Class");
}
public static void allStudent() {
System.out.println("all stud");
}
}
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
public class WriteToFile extends MarkEntry {
public static final String FILENAME = "Report.html";
public static BufferedWriter bw = null;
public static FileWriter fw = null;
public static void Write(int n, String role) {
try {
fw = new FileWriter(FILENAME);
bw = new BufferedWriter(fw);
if(n==1 && role.equals("ST")){
bw.write("<!DOCTYPE html><HTML> <HEAD> <meta charset=\"utf-8\"/> Report 1: Subject Teacher Report </HEAD> <style> table, th, td { border: 1px solid black; }</style> <h1 > Subject: " + Subject+ " </h1> <h2 > Class:"+Grade+ " Section:"+ Section+" </h2> <BODY> <table style=width:50%> <tr> <th>Name</th> <th>UT1</th> <th>UT2</th> <th>PRJ</th> <th>TE</th> <th>Final</th> </tr>");
while(rs.next()){
bw.write("<tr>");
bw.write("<td>"+rs.getString(1)+"</td>");
bw.write("<td>"+rs.getInt(2)+"</td>");
bw.write("<td>"+rs.getInt(3)+"</td>");
bw.write("<td>"+rs.getInt(4)+"</td>");
bw.write("<td>"+rs.getInt(5)+"</td>");
bw.write("<td>"+rs.getInt(6)+"</td>");
bw.write("</tr>");
}
//Getting average and Stddev seperately and displaying it through html
rs = stmt.executeQuery("select AVG("+Subject+".UT1) , AVG("+Subject+".UT2) , AVG("+Subject+".PRJ) , AVG("+Subject+".TE) , AVG("+Subject+".Final) from "+Subject+";");
bw.write(" <tr><td> <b>Average</b> </td>");
while(rs.next()){
bw.write("<td><b>"+rs.getInt(1)+"</b></td>");
bw.write("<td><b>"+rs.getInt(2)+"</b></td>");
bw.write("<td><b>"+rs.getInt(3)+"</b></td>");
bw.write("<td><b>"+rs.getInt(4)+"</b></td>");
bw.write("<td><b>"+rs.getInt(5)+"</b></td>");
}
bw.write("</tr>");
rs = stmt.executeQuery("select STDDEV("+Subject+".UT1),STDDEV("+Subject+".UT2),STDDEV("+Subject+".PRJ),STDDEV("+Subject+".TE),STDDEV("+Subject+".Final) from "+Subject+" ");
bw.write("<tr><td> <b>Standard Deviation</b> </td>");
while(rs.next()){
bw.write("<td><b>"+rs.getInt(1)+"</b></td>");
bw.write("<td><b>"+rs.getInt(2)+"</b></td>");
bw.write("<td><b>"+rs.getInt(3)+"</b></td>");
bw.write("<td><b>"+rs.getInt(4)+"</b></td>");
bw.write("<td><b>"+rs.getInt(5)+"</b></td>");
}
bw.write("</tr>");
bw.write("</table> </BODY> </HTML>");
System.out.println("Done");
}
else if(n==1&& Role.equals("CT")){
bw.write("<!DOCTYPE html><html><head><title>Per Student</title><meta charset=\"utf\"/></head><body> Student Chosen:"+studentChoice);
bw.write("<table style=width:50%> <tr> <th>Subject</th> <th>UT1</th> <th>UT2</th> <th>PRJ</th> <th>TE</th> <th>Final</th> </tr>");
//displaying marks for inividual subjects
//fetching data from sql
//Subject Wise:
//English
bw.write("<tr> <td><b>English></b></td>");
rs=stmt.executeQuery("select UT1 , UT2, PRJ, TE, Final from english where Roll_No ="+studentRollNo);
while(rs.next()){
bw.write("<td><b>"+rs.getInt(1)+"</b></td>");
bw.write("<td><b>"+rs.getInt(2)+"</b></td>");
bw.write("<td><b>"+rs.getInt(3)+"</b></td>");
bw.write("<td><b>"+rs.getInt(4)+"</b></td>");
bw.write("<td><b>"+rs.getInt(5)+"</b></td>");
}
bw.write("/tr");
bw.write("</body></html>");
}
} catch (IOException e) {
e.printStackTrace();
}
catch (SQLException e){
System.out.println(e);
}
finally {
try {
if (bw != null)
bw.close();
if (fw != null)
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}