Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра автоматизованих систем управління
Звіт
До лабораторної роботи № 5
З дисципліни
Технології об'єктно-орієнтованого програмування
На тему
Розробка проекту з використанням графіки Rich Internet Application
Порядок виконання роботи
Мета роботи: Доповнити ужиток Rich Internet Application з ЛР № 4 можливостями графічного виведення інформації з бази даних ЛР № 1.
1. Використовуючи додаткову літературу, приклади програмного коду, можливості обраних мови програмування та середовища Rich Internet Application з ЛР № 4, наприклад, Silverlight, JavaFX, Flex, HTML 5 розглянути засоби Rich Internet Application для роботи з графікою.
2. Доповнити ужиток Rich Internet Application з ЛР № 4 можливостями графічного виведення інформації з бази даних ЛР № 1.
3. Згідно з варіантом індивідуального завдання, використовуючи оператори (SELECT…ORDER BY, SELECT…GROUP BY) та агрегатні функції мови SQL (SUM, AVG, COUNT), створити запити до таблиць баз даних і
побудувати графік зміни значення певного поля в одній з таблиць бази даних;
побудувати кругову діаграму розподілу значень певного поля в одній з таблиць бази даних.
4. Передбачити, що графік складатиметься з п’яти або більше відліків, діаграма – з трьох або більше частин (секторів). Для цього можливо слід внести відповідні зміни у дані з таблиць.
5. Підписати і позначити відліки на графіку та сектори на діаграмі.
6. Розмістити ужиток на веб-сервері і перевірити його роботу. Результати виконання запитів вивести на екран при звертанні до ужитку через браузер.
7. У звіті по роботі навести умови запитів, код створених запитів на мові SQL та результати їх виконання, тексти відповідних програмних модулів, екранограми веб-сторінок та їх код на мові HTML.
Індивідуальне завдання
9. Страхова компанія.
a) залежність сум виплати від дати;
b) розподіл сум стра'хових сум за філіями;
Результат виконання програми
Рис. 1. Екранограма виконаної програми
Код Проекту
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class myservlet
*/
@WebServlet("/myservlet")
public class myservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private PrintWriter out;
/**
* @see HttpServlet#HttpServlet()
*/
public myservlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter pw = response.getWriter();
// pw.println( "<form method='get' action='myservlet'>"+
// "<input type='text' name='textfield2' value='vvedit nazvy tabluci join1:' size='100'> " +
// "<input type='text' name='textfield3' value='vvedit nazvy tabluci join2:' size='100'> " +
// "<input type='text' name='textfield4' value='vvedit nazvy polya join1:' size='100'> " +
// "<input type='text' name='textfield5' value='vvedit nazvy polya join2:' size='100'> " +
// "<input type='submit' value='OK'>"+
// "</form>");
// out = ((ServletResponse) request).getWriter();
// out.println("<body style=' color:White;'>");
pw.println("<div align='right'");
pw.println("<font color='darkviolet' ><a href='http://localhost:8080/Hellowordap/File5.html' title='Retrun to client page'>URL of client page</a></font>");
pw.println("</div>");
//String value = request.getParameter("textfield");
//String value1 = request.getParameter("textfield1");
// String value2 = request.getParameter("textfield2");
// String value3 = request.getParameter("textfield3");
// String value4 = request.getParameter("textfield4");
// String value5 = request.getParameter("textfield5");
//String str2=zapcreate(value, value1);
//String str3=zapjoin(value2,value3,value4,value5);
response.getWriter().print(vuv2());
response.getWriter().print(vuv1());
response.getWriter().print(vuv4());
response.getWriter().print(vuv3());
// response.getWriter().print(str3);
//response.getWriter().print(str2);
// String str = request.getParameter("name");
// response.getWriter().println("=>>>>>> "+str );
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
public String vuv1(){
String str="";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSet rs1 = null;
try {Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/num2";
con = DriverManager.getConnection(url, "root", "1234");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM vupalty");
str="<table border='1'><caption>Vuplaty</caption>";
str += "<tr>" + "<td>"+"kod_vuplatu" + "</td>" + "<td>"+"nomer_ygodu"+"</td>"+"<td>"+"data_vuplaty"+"</td>"+"<td>"+"suma_vupalat"+"</td></tr>";
while (rs.next()) {
str += "<tr>" + "<td>"+rs.getInt(1) + "</td>" + "<td>"+rs.getInt(2)+"</td>"+"<td>"+rs.getDate(3)+"</td>"+"<td>"+rs.getInt(4)+"</td></tr>";
//printString(str);
//str+=("<br />"+str);
// System.out.println(str);
}
str += "</table>";
System.out.println("успіх");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
System.err.println("Error: " + ex.getMessage());
}
}
return str;
}
public String vuv2(){
String str="";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSet rs1 = null;
try {Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/num2";
con = DriverManager.getConnection(url, "root", "1234");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT SUM(suma_vuplatu),data_vuplaty FROM vupalty group by data_vuplaty");
// rs1 = stmt.executeQuery("SELECT COUNT(data_vuplaty) FROM vupalty");
//SELECT SUM(strahova_suma),kod_filii FROM ygodu group by kod_filii"
// rs1.next();
// int cnt=rs.getInt(1);
// System.out.println(cnt);
//rs.next();
str="<script type='text/javascript' src='https://www.google.com/jsapi'></script>"+
"<script type='text/javascript'>"+
"google.load('visualization', '1', {packages:['imageareachart']});"+
"google.setOnLoadCallback(drawChart);"+
"function drawChart() {"+
"var data = google.visualization.arrayToDataTable(["+
"['date', 'suma vuplat'],";
int i=1;
while (rs.next()) {
//
str+= "['"+rs.getDate(2)+"', "+rs.getInt(1)+"]";
// "['"+buf+"', "+rs.getInt(4)+"]";
if (i!=5)
{
i++;
str+=",";
}
}
// String buf2="yra";
// str+= "['2004', 1000],"+
// "['2005', 1170],"+
//"['"+rs.getDate(3)+"', "+rs.getInt(4)+"],"+
//"['gfg', 660]";
str+=" ]);";
str+="var chart = new google.visualization.ImageAreaChart(document.getElementById('chart_div'));"+
"chart.draw(data, {width: 800, height: 240, min: 300, max: 1400, title: 'zalegnist sumu vuplat vid datu'});"+
"}"+
"</script>"+
//"</head>"+
"<body>"+
"<div id='chart_div'></div>"+
"</body>";
///"</html>");
System.out.println("успіх");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
System.err.println("Error: " + ex.getMessage());
}
}
return str;
}
public String vuv3(){
String str="";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSet rs1 = null;
try {Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/num2";
con = DriverManager.getConnection(url, "root", "1234");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM ygodu");
str="<table border='1'><caption>ygodu</caption>";
str += "<tr>" + "<td>"+"nomer ygodu" + "</td>" + "<td>"+"data_vusnovky"+"</td>"+"<td>"+"strahova_suma"+"</td>"+"<td>"+"tarfna_stavka"+"</td>"+"<td>"+"kod_filii"+"</td>"+"<td>"+"kod_vudy strahyvannya"+"</td></tr>"+"<td>";
while (rs.next()) {
str += "<tr>" + "<td>"+rs.getInt(1) + "</td>" + "<td>"+rs.getDate(2)+"</td>"+"<td>"+rs.getInt(3)+"</td>"+"<td>"+rs.getInt(4)+"</td>"+"<td>"+rs.getInt(5)+"</td>"+"<td>"+rs.getInt(6)+"</td></tr>"+"<td>";
//printString(str);
//str+=("<br />"+str);
// System.out.println(str);
}
str += "</table>";
System.out.println("успіх");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
System.err.println("Error: " + ex.getMessage());
}
}
return str;
}
public String vuv4(){
String str="";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSet rs1 = null;
try {Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/num2";
con = DriverManager.getConnection(url, "root", "1234");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT SUM(strahova_suma),kod_filii FROM ygodu group by kod_filii");
// rs1 = stmt.executeQuery("SELECT COUNT(data_vuplaty) FROM vupalty");
// rs1.next();
// int cnt=rs.getInt(1);
// System.out.println(cnt);
//rs.next();
str="<script type='text/javascript' src='https://www.google.com/jsapi'></script>"+
"<script type='text/javascript'>"+
"google.load('visualization', '1', {packages:['corechart']});"+
"google.setOnLoadCallback(drawChart);"+
"function drawChart() {"+
"var data = google.visualization.arrayToDataTable(["+
"['kod fillii', 'suma vuplat'],";
int i=0;
while (rs.next()) {
//
str+= "['"+rs.getInt(2)+"', "+rs.getInt(1)+"]";
// "['"+buf+"', "+rs.getInt(4)+"]";
if (i!=2)
{
i++;
str+=",";
}
}
// str+= "['Task', 'Hours per Day'],"+
// str+= "['Work', 11],"+
// "['Eat', 2],"+
// "['Commute', 2],"+
// "['Watch TV', 2],"+
// "['Sleep', 7]";
str+= "]);";
str+="var options = {"+
"title: 'rozpodil sum za filiamu'"+
"};"+
"var chart = new google.visualization.PieChart(document.getElementById('chart_div1'));"+
"chart.draw(data, options);"+
"}"+
"</script>"+
// </head>
"<body>"+
"<div id='chart_div1' style='width: 900px; height: 500px;'></div>"+
"</body>";
//</html>
System.out.println("успіх");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
System.err.println("Error: " + ex.getMessage());
}
}
return str;
}
}Висновок: На даній лабораторній роботі, я розглянув можливості графічного виведення за допомогою ресурсів html5 і java, та розробив ужиток, який графічно показує результати виконання Sql запитів.