油气田管理系统
功能说明:
1 增添气田功能,用户按照给定的输入格式进行输入,在完成正确的输入操作之后,完成增添操作
2 删除气田功能,程序先把每个气田进行编号,并打印出所有气田的信息以及相应编号情况,用户选择正确的编号,即可完成删除操作,若是用户选择的编号超出范围,则提示用户删除操作有误
3 按气区浏览和查询油田功能,用户输入正确的气区,则可显示出相应的油田信息
4 按气藏类型汇总天然气存储量功能,用户输入一个气藏类型,即可显示各个地区的油气储量总和,在最后面显示中国拥有该气藏类型的油气总储量
5按埋深类型汇总天然气存储量功能,用户输入一个埋深类型,即可显示各个地区的油气储量总和,在最后面显示中国拥有该埋深类型的油气总储量
6 查看所有油田信息功能,使用该功能可以显示出所有的油田信息情况
7 退出功能,用户在完成想要完成的操作后,想要退出程序需要使用到该功能
8 选择想要完成上述哪项功能的功能,在用户完成一个操作之后,用户可以继续选择接下来想要实现的功能,比如增添油田,退出程序等功能,只要用户不选择退出程序,该程序将会一直运行
类图:
代码实现:
package gas;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
class Addgas{
String gasfieldNames;//气田名
String location;//气区
String gastype;//气藏类型
String coverName;//掩埋类型
double volume;//储量
//五个get操作,得到油田的所有信息
public String getGasfieldNames() {
return gasfieldNames;
}
public String getLocation() {
return location;
}
public String getGastype() {
return gastype;
}
public String getCoverName() {
return coverName;
}
public double getVolume() {
return volume;
}
//构造方法,为了存储信息
public Addgas(String gasfieldNames, String location, String gastype, String coverName, double volume){
this.gasfieldNames=gasfieldNames;
this.location=location;
this.gastype=gastype;
this.volume=volume;
this.coverName=coverName;
}
//打印所有信息
void getinformation(){
System.out.println(gasfieldNames+" "+location+" "+gastype+" "+coverName+" "+volume);
}
}
class gas{
//静态变量i做记录作用
static int i=0;
//list存储油气田信息
ArrayList<Addgas> gasList=new ArrayList<Addgas>();
//每次插入时新建的对象数组
Addgas addgas[]=new Addgas[100];
public gas(){
addgas[1]=new Addgas("苏格里","陕甘宁盆地","常规气","中浅层气",5336.52);
addgas[2]=new Addgas("克深气田","塔里木盆地","页岩气","浅层气",1891.22);
addgas[3]=new Addgas("普光气田","四川盆地","致密气","中浅层气",6002.0);
addgas[4]=new Addgas("涩北气田","柴达木盆地","煤层气","深层气",5332.52);
addgas[5]=new Addgas("二号油田","陕甘宁盆地","常规气","中浅层气",4336.52);
addgas[6]=new Addgas("三号油田","四川盆地","常规气","中浅层气",5836.52);
addgas[6]=new Addgas("四号油田","四川盆地","常规气","中浅层气",5586.52);
gasList.add(addgas[1]);
gasList.add(addgas[2]);
gasList.add(addgas[3]);
gasList.add(addgas[4]);
gasList.add(addgas[5]);
gasList.add(addgas[6]);
i=6;
mainview();
}
//选择操作
public void choice(){
System.out.println("请选择您需要的服务 *");
System.out.println("1:增添油田及其相关信息 *");
System.out.println("2:删除油田及其相关信息 *");
System.out.println("3:按气区浏览和查询油田信息 *");
System.out.println("4:按气藏类型汇总天然气存储量 *");
System.out.println("5:按埋深类型汇总天然气存储量 *");
System.out.println("6:查看所有油田信息 *");
System.out.println("7:退出 *");
System.out.print("请选择:");
int choice;
Scanner in=new Scanner(System.in);
choice=in.nextInt();
switch (choice){
case 1:
addgas();
break;
case 2:
deletegas();
break;
case 3:
scangas();
break;
case 4:
scangastype();
break;
case 5:
scancoverName();
break;
case 6:
viewinformation();
break;
}
}
//主菜单显示
public void mainview(){
System.out.println("******************************");
System.out.println(" 欢迎使用油气系统 *");
System.out.println("请选择您需要的服务 *");
System.out.println("1:增添油田及其相关信息 *");
System.out.println("2:删除油田及其相关信息 *");
System.out.println("3:按气区浏览和查询油田信息 *");
System.out.println("4:按气藏类型汇总天然气存储量 *");
System.out.println("5:按埋深类型汇总天然气存储量 *");
System.out.println("6:查看所有油田信息 *");
System.out.println("7:退出 *");
System.out.println("******************************");
System.out.print("请选择:");
int choice;
Scanner in=new Scanner(System.in);
choice=in.nextInt();
switch (choice){
case 1:
addgas();
break;
case 2:
deletegas();
break;
case 3:
scangas();
break;
case 4:
scangastype();
break;
case 5:
scancoverName();
break;
case 6:
viewinformation();
break;
case 7:
return;
}
}
//view查看
void viewinformation(){
for(int m=0;m<gasList.size();m++){
Addgas add=gasList.get(m);
add.getinformation();
}
System.out.println("");
System.out.println("-------------------------------");
choice();
}
//增添
void addgas(){
System.out.println("************增添操作**********");
System.out.println("请输入增添油田及其相关信息");
System.out.println("例如:苏格里 陕甘宁盆地 常规气 中浅层气 5336.52");
Scanner input=new Scanner(System.in);
String Input=input.nextLine();
String str[]=Input.split(" ");
String S=str[4];
float v=Float.parseFloat(S);
addgas[i]=new Addgas(str[0],str[1],str[2],str[3],v);
gasList.add(addgas[i]);
i++;
System.out.println("");
System.out.println("-------------------------------");
choice();
}
//删除
void deletegas(){
System.out.println("************删除操作**********");
for(int m=0;m<gasList.size();m++){
Addgas add=gasList.get(m);
System.out.print(m+1+":");
add.getinformation();
}
System.out.print("请输入需要删除的油田的序列数: ");
int choice;//表示选择,选择哪一行将会被删除
Scanner in=new Scanner(System.in);
choice=in.nextInt();
try {
gasList.remove(choice - 1);
System.out.println("您已成功完成删除操作");
}
catch(IndexOutOfBoundsException e){
System.out.println("输入有误,超出序列");
System.out.println("输入的数应该在区间[0,"+gasList.size()+"]之中");
System.out.print("请重新输入: ");
Scanner is=new Scanner(System.in);
choice=is.nextInt();
gasList.remove(choice - 1);
}
System.out.println("");
System.out.println("-------------------------------");
choice();
}
void scangas(){
System.out.println("************浏览气区**********");
System.out.print("请输入你要浏览的气区:");
Scanner in=new Scanner(System.in);
String choices;//输入需要浏览的气区
choices=in.nextLine();
int flag=0;//判断是否有输入的气区信息
for(int k=0;k<gasList.size();k++){
Addgas add=gasList.get(k);
if(choices.equals(add.getLocation())){
flag=1;
add.getinformation();
}
}
if(flag==0) {
System.out.println("系统中没有该气区的信息");
}
System.out.println("");
System.out.println("-------------------------------");
choice();
}
void scangastype(){
System.out.println("**********根据气藏类型查询**********");
System.out.println("气藏类型有:常规气 煤层气 页岩气 致密气");
System.out.print("请输入你要了解的气藏类型:");
String input;
Scanner in=new Scanner(System.in);
input=in.nextLine();
int length=gasList.size();
int arr[]=new int[length];
int m=0;//记录是输入气藏类型的数据
double SUM=0;
//先汇总所有和输入需要了解气藏类型相同的信息
for(int k=0;k<length;k++){
Addgas add=gasList.get(k);
if(input.equals(add.getGastype())){
arr[m]=k;
m++;
}
}
//汇总不同气区的信息
double sum[]=new double[m];
String name[]=new String[m];
int state[]=new int[m];
for(int k=0;k<m;k++){
state[k]=1;
}
//为两个数组赋值
for(int k=0;k<m;k++){
Addgas add=gasList.get(arr[k]);
sum[k]=add.getVolume();
name[k]=add.getLocation();
SUM=SUM+sum[k];
}
//算每个地区的油气储量总和
for(int a=0;a<m;a++){
for(int b=0;b<m;b++){
if(name[a].equals(name[b])&&a!=b){
sum[a]=sum[a]+sum[b];
}
}
}
//状态位,显示之后应该打印的信息
for(int h=0;h<m;h++){
for (int w=h+1;w<m;w++){
if(name[h].equals(name[w])){
state[w]=0;
}
}
}
//输出储量情况
for(int k=0;k<m;k++){
if(state[k]==1){
System.out.println("地区: "+name[k]+" 储量: "+sum[k]);
}
}
System.out.print("国家总储量: ");
System.out.printf("%.2f\n",SUM);
System.out.println("");
System.out.println("-------------------------------");
choice();
}
void scancoverName(){
System.out.println("**********根据埋深类型查询**********");
System.out.println("气藏类型有:浅层气 中浅层气 深层气");
System.out.print("请输入你要了解的埋深类型:");
String input;
Scanner in=new Scanner(System.in);
input=in.nextLine();
int length=gasList.size();
int arr[]=new int[length];
int m=0;//记录是输入埋深类型的数据
double SUM=0;
//先汇总所有和输入需要了解埋深相同的信息
for(int k=0;k<length;k++){
Addgas add=gasList.get(k);
if(input.equals(add.getCoverName())){
arr[m]=k;
m++;
}
}
//汇总不同气区的信息
double sum[]=new double[m];
String name[]=new String[m];
int state[]=new int[m];
for(int k=0;k<m;k++){
state[k]=1;
}
//为两个数组存储进信息
for(int k=0;k<m;k++){
Addgas add=gasList.get(arr[k]);
sum[k]=add.getVolume();
name[k]=add.getLocation();
SUM=SUM+sum[k];
}
//汇总每个地区的油量存储
for(int a=0;a<m;a++){
for(int b=0;b<m;b++){
if(name[a].equals(name[b])&&a!=b){
sum[a]=sum[a]+sum[b];
}
}
}
//状态位判断,判断是否输出该地信息
for(int h=0;h<m;h++){
for (int w=h+1;w<m;w++){
if(name[h].equals(name[w])){
state[w]=0;
}
}
}
//输出储量情况
for(int k=0;k<m;k++){
if(state[k]==1){
System.out.println("地区: "+name[k]+" 储量: "+sum[k]);
}
}
System.out.print("国家总储量: ");
System.out.printf("%.2f\n",SUM);
System.out.println("");
System.out.println("-------------------------------");
choice();
}
}
public class gasManage{
public static void main(String[]args){
new gas();
}
}
Addgas类里面对成员变量和方法的说明
成员变量:
gasfieldNames指的是气田名
location指的是气区
gastype指的是气藏类型
coverName指的是掩埋类型
volume指的是储量
方法:
getGasfieldNames()的作用是得到气田名信息
getLocation()的作用是得到气区信息
getGastype()的作用是得到气藏类型信息
getCoverName()的作用是得到掩埋类型信息
getVolume()的作用是得到储量信息
Addgas()是为了将输入的信息存储起来
getinformation()是为了打印出信息,显示所有的油气田信息
gas类里面对成员变量和方法的说明
成员变量:
i变量是为了记住插入的个数,以方便命名addgas[i]
gasList是为了记录插入的数据,用ArrayList存储
addgas是保存进ArrayList的信息
方法:
choice()的作用是让用户做出选择
mainview()的作用是显示进入系统的首个界面
viewinformation()作用是显示所有的油田信息
addgas()的作用是添加油气田信息
deletegas()的作用是删除油气田信息
scangas()的作用是气区浏览和查询油田功能,用户输入正确的气区,则可显示出相应的油田信息
scangastype()的作用是按气藏类型汇总天然气存储量功能,用户输入一个气藏类型,即可显示各个地区的油气储量总和,在最后面显示中国拥有该气藏类型的油气总储量
scancoverName()的作用是按埋深类型汇总天然气存储量功能,用户输入一个埋深类型,即可显示各个地区的油气储量总和,在最后面显示中国拥有该埋深类型的油气总储量
本系统的重点难点代码:
按气藏类型汇总天然气存储量,汇总天然气储量分为两种情况,一是汇总出各个地区该气藏类型的天然气储量,另一种是汇总全国该气藏类型的天然气储量。