Академический Документы
Профессиональный Документы
Культура Документы
on
Student Management System
BACHELOR OF TECHNOLOGY
in
INFORMATION TECHNOLOGY
Submitted By
Manish Yadav
2815364
Batch (2015-2019)
1
CANDIDATES DECLARATION
I hereby declare that the work presented in this training report entitled Student
Management System, submitted in partial fullfillment of the requirement for the award
of the degree of Bachelor of Technology in Information Technology, submitted to
Panipat Institute of Engineering & Technology, Kurukshetra University,
Kurukshetra, India is an authentic record of my own work carried out during the period
from 15TH June 2017 to To 30th July 2017 under the guidance of Mr.Rattandeep
Aneja..
The work reported in this project report has not been submitted by me for the award of
any other degree or diploma.
Date:18-08-2017 ManishYadav
i
CERTIFICATE
This is to certify that the summer training report (Code e.g. CSE-408) entitled Student
Management System done by Manish Yadav, Roll No. 2815364 is an authentic work
carried out by him at S.L.R Infotech under my guidance. The matter embodied in this
training title/ project work has not been submitted earlier for the award of any degree or
diploma to the best of my knowledge and belief.
Training Coordinator
ii
Acknowledgement
In the Acknowledgement page, the writer recognizes his indebtedness for guidance and
assistance of the director and F/I, project guide and other members of the
faculty/company. Courtesy demands that he also recognize specific contributions by
other persons or institutions such as libraries and research foundations.
Acknowledgements should be expressed simply, tastefully, and tactfully.
Manish Yadav
(Student Name)
iii
ABSTRACT
Introduction:
Today we are living the world where we surrounded by computers of daily and
personal as well as professional use. We know that a individual person or an
organization cannot survive without computers. From schools to big corporate houses
everyone needs computers. But only computers are not enough we need strong
softwares and large database to handle vast amount of data.
The main aim is to design something which is very basic, understandable to everyone
so that everyone can use easily and effectively because for making any project/product
our aim is to design product which is useful to our audience like corporate houses or the
common people. Today schools are developing at a very high rate with the increase in
number of students. So it becomes difficult to maintain their details like store, update
and retrive.
Body:
Student management contains various modules which are used for storing various
profiles with their respective data. That is the aim.Now the questions arrives how?
The process becomes simple and easy when you store data and retrive it in simple
steps.
In the very first part you need to select what you wish to do like login or register for the
first time you need to register yourself for saving your data.
After doing this you can go for login where after providing correct details which you
have provided in the previous step i.e registration you can login to access student
database which contains complete information about students .now second thing is it
sufficient?
The answer is no because sometimes you need to update you data like marks or mobile
So it becomes necessary to providing interface for users to access or update and a
special interface for deleting data of existing users. Then it looks great because you
iv
have most of the required inputs from the user that is our school staff.
Conclusion:
Certificate ii
Acknowledgement iii
Abstract iv
List of Figures vi
Chapter 1: INTRODUCTION 1
1.1 Objective 1
1.3 Login 6
v
List of Figures
vi
List of Tables
1
LIST OF ABBREVIATIONS USED
2
CHAPTER-1
INTRODUCTION
1.1 Objective:
The main objective of the project if to make use softwares in such a manner that staff can
maintain various records of students such as their name, class, roll no,
D.O.B, contact details and their marks.
Now the need is firstly save the record using user interface which can take the input from
staff in form of application form where he/she may enter the data corresponding to their
fields after successful submission of data which is stored in database using JDBC drivers.
After this successful submission of data he/she needs to access the stored data.
Which can only be accessed if the password and roll no matches to database records
which are provided during the time of form submission. If both things match i.e they are
successfully logged to database now they are able to access data.
This is the very first part/module where user is provided the user interface which id
designed using java windows programming (Swing and AWT) .This interface provides
predefined fields which are adjoined with fields which are able to take input from the
user and store it into the database which is done by using JDBC tools and drivers.
This section requires database which is MYSQL in our case. Where our data is stored and
the whole process is controlled by SQL. After successful submission he gets automated
message data successfully submitted which shows data saved without any failure.
3
After successful submission record submission he can login inorder to access his/her
student data if the password and roll matches to records provided by teacher. This part is
the very important part of database because it ensures safety of data access.
Only authorised users can access this data otherwise it can be in wrong hands and whole
database may in trouble. It includes various steps to get data from the database and the
user and mechanism which is responsible for checking both data very strictly.
Deleting Student:
In some of the cases if student is promoted or his studies complete his studies now his
data is required to get deleted. This mechanism again requires searching of that particular
student and then deleting his data by his roll no and finally data of student is deleted with
the confirmation message to ensure it not a mistake.
4
CHAPTER-2
SOFTWARE AND HARDWARE REQUIREMENTS
This project requires software and hardware which is easily available in the market. Most
of the resources came from open source which makes it more interesting and innovative
where with investing little money you can earn more.
Mostly java projects require system with better performance to meet the needs of
softwares like normal ram with good computation power.
The minimum software requirements for java are described in the following table.
2 Environment JRE
4 Technology JAVA
7 Connectivity JDBC
Table 2.1
Hardware Requirements:
The minimum hardware requirement for java project are described in the following table
5
1. Processor Pentium 2 266 MHz processor.
3. RAM 128 MB
Abbreviations
Table 2.2
6
CHAPTER-3
SOFTWARE REQUIREMENT ANALYSIS
3.1 DEFINE THE PROBLEM:
Our problem is to store the data of 100s or 1000s of student record without wasting time
and using simple UI and also perform various operation of deletion updation and
searching.
MODULE 1:
In this module user data is saved to the database using database connectivity. This
module ensures that user data is properly saved to the appropriate fields of table login.
MODULE 2:
In this module user is allowed to enter his login details to access his/her record. This
required database connectivity. After providing correct login details he can login to
access data.
MODULE 3:
In this module database is again connected to provide view data entered by the user to
the database this makes sure that he/she can keep check of records in the database.
MODULE 4:
In the module database connectivity is used to update user data to the database using
mechanism for searching respective data and also updating it.
MODULE 5:
In this module database is finally connected to delete the records provided by user. This
modules check that data provided to delete must be found in the database.
7
CHAPTER-4
SOFTWARE DESIGN
RDBMS
In this project we used rdbms that is relational database model.
8
CHAPTER-5
CODING
class signup
Connection con;
void start()
try
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","ro
ot","");
catch(SQLException e)
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
frame.setLayout(null);
frame.setSize(1400,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
9
try
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
exc.printStackTrace();
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,1400,60);
frame.add(toppanel);
// Botton Panel
bottompanel.setLayout(null);
bottompanel.setBackground(Color.WHITE);
bottompanel.setBounds(0,60,1400,800);
frame.add(bottompanel);
title.setBounds(300,3,800, 60);
title.setFont(new Font("comicSans",Font.BOLD,35));
toppanel.add(title);
// Background
try
10
BufferedImage myPicture = ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Background(Registe
r).jpg"));
bottompanel.add(picLabel);
bottompanel.add(startButton);
startButton.addActionListener(new ActionListener()
welcome();
});
frame.setVisible(true);
// Register frame
void welcome()
try
11
Class.forName("com.mysql.jdbc.Driver");
catch(SQLException e)
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
frame.setLayout(null);
frame.setSize(1400,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Icon setting
try
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
exc.printStackTrace();
toppanel.setLayout(null);
12
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,1400,60);
frame.add(toppanel);
// Bottom Panel
bottompanel.setLayout(null);
bottompanel.setBackground(Color.WHITE);
bottompanel.setBounds(0,60,1400,800);
frame.add(bottompanel);
title.setBounds(300,3,800, 60);
title.setFont(new Font("comicSans",Font.BOLD,35));
toppanel.add(title);
try
picLabel.setOpaque(true);
bottompanel.add(picLabel);
13
JButton registerButton = new JButton(register);
bottompanel.add(registerButton);
registerButton.addActionListener(new ActionListener()
frame();
});
bottompanel.add(signinButton);
signinButton.addActionListener(new ActionListener()
login();
});
frame.setVisible(true);
void frame()
14
frame.setLayout(null);
frame.setSize(1400,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
exc.printStackTrace();
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,1400,60);
frame.add(toppanel);
panel.setLayout(null);
panel.setBackground(Color.WHITE);
panel.setBounds(0,60,1400,700);
frame.add(panel);
title.setBounds(300,3,800, 60);
title.setFont(new Font("comicSans",Font.BOLD,35));
toppanel.add(title);
nameLabel2.setBounds(500,20, 400,40);
15
nameLabel2.setFont(new
Font("comicSans",Font.BOLD,35));
panel.add(nameLabel2);
IDLabel.setFont(new Font("comicSans",Font.BOLD,20));
panel.add(IDLabel);
classLabel.setFont(new
Font("comicSans",Font.BOLD,20));
panel.add(classLabel);
String
Class[]={"Select","Ist","IInd","IIIrd","IVth","Vth","VIth","VIIth","VII
Ith","IXth","Xth","XIth","XIIth"};
panel.add(nameText);
dobLabel.setFont(new Font("comicSans",Font.BOLD,20));
panel.add(dobLabel);
fnameLabel.setFont(new
Font("comicSans",Font.BOLD,20));
panel.add(fnameLabel);
panel.add(fnameText);
16
mnameLabel.setBounds(550, 290, 150, 30);
panel.add(mnameLabel);
panel.add(mnameText);
emailLabel.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(emailLabel);
panel.add(emailText);
mobileLabel.setFont(new
Font("comicSans",Font.BOLD,20));
panel.add(mobileLabel);
panel.add(mobileText);
passwordLabel.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(passwordLabel);
panel.add(passwordText);
genderLabel.setFont(newFont("comicSans",Font.BOLD,20));
17
genderLabel.setBounds(550, 470, 150, 30);
panel.add(genderLabel);
maleButton.setFont(newFont("comicSans",Font.BOLD,15));
maleButton.setBounds(650,470,70,35);
femaleButton.setFont(new
Font("comicSans",Font.BOLD,15));
femaleButton.setBounds(720,470,70,35);
group.add(maleButton);
group.add(femaleButton);
panel.add(maleButton);
panel.add(femaleButton);
maleButton.setSelected(true);
marksLabel.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(marksLabel);
sub1Label.setFont(new
Font("comicSans",Font.BOLD,20));
panel.add(sub1Label);
panel.add(sub1Text);
18
sub2Label.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(sub2Label);
panel.add(sub2Text);
panel.add(sub3Label);
sub4Label.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(sub4Label);
panel.add(sub4Text);
sub5Label.setFont(new
Font("comicSans",Font.BOLD,20));
panel.add(sub5Label);
panel.add(sub5Text);
er(new ActionListener()
welcome();
19
});
panel.add(signupButton);
signupButton.addActionListener(new ActionListener()
String ID=IDText.getText();
String Name=nameText.getText();
String fName=fnameText.getText();
String mName=mnameText.getText();
String dob=dobText.getText();
String Class =
comboBox1.getSelectedItem().toString();
String email=emailText.getText();
String mobile=mobileText.getText();
String password=passwordText.getText();
String sub1=sub1Text.getText();
String sub2=sub1Text.getText();
String sub3=sub1Text.getText();
String sub4=sub1Text.getText();
String sub5=sub1Text.getText();
String gender="";
if(maleButton.isSelected())
gender=maleButton.getText().trim();
20
else if(femaleButton.isSelected())
gender=femaleButton.getText().toString();
try
Statement st=con.createStatement();
int a=st.executeUpdate(insert);
if(a==0)
JOptionPane.showMessageDialog(panel,"Failed to Save,Duplicate
roll no found");
else
JOptionPane.showMessageDialog(null,"Data
Successfully Saved");
catch(SQLException e)
e.printStackTrace();
});
21
JButton registerButton = new JButton(login);
registerButton.setBounds(740, 550, 113, 44);
panel.add(registerButton);
registerButton.addActionListener(new ActionListener()
login();
});
frame.setVisible(true);
void login()
try
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","ro
ot","");
frame.setLayout(null);
frame.setSize(1400,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try
22
BufferedImage logo = ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Logo(Login).png"))
;
panel.add(picLabel);
// exc.printStackTrace();
testLabel.setFont(new
Font("comicSans",Font.BOLD,35));
panel.add(testLabel);
nameLabel1.setFont(new
Font("comicSans",Font.BOLD,25));
panel.add(nameLabel1);
panel.add(nameText1);
pwdLabel.setFont(new Font("comicSans",Font.BOLD,25));
panel.add(pwdLabel);
23
panel.add(passwordText);
panel.add(backButton);
backButton.addActionListener(new ActionListener()
welcome();
});
panel.add(signinButton);
signinButton.addActionListener(new ActionListener()
String name=nameText1.getText();
String pass=passwordText.getText();
try
pst=con.prepareStatement("Select *
From login where ID ='"+name+"'");
24
ResultSet rs=pst.executeQuery();
if(rs.next()){if(name.equals(rs.getString(1)) &&
pass.equals(rs.getString(8))){
JOptionPane.showMessageDialog(null,"User Authorised");
signin();}
else{
JOptionPane.showMessageDialog(null,"Incorrect Password");}}
else{
e.printStackTrace();
}}});
panel.add(resetButton);
resetButton.addActionListener(new ActionListener()
nameText1.setText("");
passwordText.setText("");
});
frame.setVisible(true);
void signin()
{ try {
25
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","ro
ot","");
catch(SQLException e)
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
frame.setLayout(null);
frame.setSize(1400,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png"))); }
{ exc.printStackTrace();}
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,1400,70);
26
frame.add(toppanel);
accountButton.addActionListener(new ActionListener()
JOptionPane.showMessageDialog(null,"ViewSelected");
view();
} });
middlepanel.add(updateButton);
updateButton.addActionListener(new ActionListener() {
JOptionPane.showMessageDialog(null,"Update selected");
update();}
});
middlepanel.add(deleteButton);
deleteButton.addActionListener(new ActionListener()
27
public void actionPerformed(ActionEvent arg0)
JOptionPane.showMessageDialog(null,"Delete selected");
delete();
}});
middlepanel.add(ExitButton);
ExitButton.addActionListener(new ActionListener()
System.exit(1);
} });
middlepanel.add(LogoutButton);
LogoutButton.addActionListener(new ActionListener()
JOptionPane.showMessageDialog(null,"Logout selected");
login();
} });
28
frame.setVisible(true);
// update frame
void update()
{ try
Class.forName("com.mysql.jdbc.Driver");
catch(SQLException e){
e.printStackTrace(); }
catch(ClassNotFoundException e)
{ e.printStackTrace(); }
frame.setLayout(null);
frame.setBounds(370,0,600,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
try {
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
}
{ exc.printStackTrace(); }
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
29
toppanel.setBounds(0,0,600,70);
frame.add(toppanel);
title.setBounds(100,5,500, 40);
title.setFont(new Font("comicSans",Font.BOLD,25));
toppanel.add(title);
panel.setLayout(null);
panel.setBackground(Color.WHITE);
panel.setBounds(0,70,600,800);
frame.add(panel);
catch(SQLException e)
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
frame.setLayout(null);
frame.setBounds(370,0,600,800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
try
30
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
exc.printStackTrace();
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,600,70);
frame.add(toppanel);
title.setBounds(100,5,500, 40);
title.setFont(new Font("comicSans",Font.BOLD,25));
toppanel.add(title);
panel.setLayout(null);
panel.setBackground(Color.WHITE);
panel.setBounds(0,70,600,800);
frame.add(panel);
panel.add(FMOBILELabel);
panel.add(FMOBILEText);
31
FEMAILLabel.setBounds(150, 500, 100, 30);
FEMAILLabel.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(FEMAILLabel);
panel.add(FEMAILText);
FPASSWORDLabel.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(FPASSWORDLabel);
panel.add(FPASSWORDText);
FSUB1Label.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(FSUB1Label);
panel.add(FSUB1Text);
FSUB2Label.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(FSUB2Label);
32
FGENDERLabel.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(FGENDERLabel);
panel.add(FGENDERText);
searchLabel.setFont(newFont("comicSans",Font.BOLD,20));
panel.add(searchLabel);
panel.add(searchText);
ExitButton.setFont(new
Font("comicSans",Font.BOLD,15));
panel.add(ExitButton);
ExitButton.addActionListener(new ActionListener()
System.exit(1);
});
33
JButton searchButton = new JButton(Search);
searchButton.setFont(new Font("comicSans",Font.BOLD,15));
panel.add(searchButton);
searchButton.addActionListener(new ActionListener() {
String search=searchText.getText();
try {
String select="select
ID,NAME,FNAME,MNAME,DOB,CLASS,MOBILE,PASSWORD,EMAIL,GENDER,SUB1,SUB2,SU
B3,SUB4,SUB5 from login where ID='"+search+"'";
Statement st=con.createStatement();
ResultSet rs=st.executeQuery(select);
if(rs!=null)
if(rs.next())
String ID=rs.getString(1);
String NAME=rs.getString(2);
String FNAME=rs.getString(3);
String MNAME=rs.getString(4);
String DOB=rs.getString(5);
String CLASS=rs.getString(6);
StringMOBILE=rs.getString(7);
StringPASSWORD=rs.getString(8);
String EMAIL=rs.getString(9);
StringGENDER=rs.getString(10);
String SUB1=rs.getString(11);
34
String SUB2=rs.getString(12);
String SUB3=rs.getString(13);
String SUB4=rs.getString(14);
String SUB5=rs.getString(15);
FIDText.setText(ID.toString());
FNAMEText.setText(NAME.toString());
FFNAMEText.setText(FNAME.toString());
FMNAMEText.setText(MNAME.toString());
FDOBText.setText(DOB.toString());
FCLASSText.setText(CLASS.toString());
FMOBILEText.setText(MOBILE.toString());
FPASSWORDText.setText(PASSWORD.toString());
FEMAILText.setText(EMAIL.toString());
FGENDERText.setText(GENDER.toString());
FSUB1Text.setText(SUB1.toString());
FSUB2Text.setText(SUB2.toString());
FSUB3Text.setText(SUB3.toString());
FSUB4Text.setText(SUB4.toString());
FSUB5Text.setText(SUB5.toString());
else{
35
JOptionPane.showMessageDialog(null,"No Data");
} }
catch (SQLException e)
JOptionPane.showMessageDialog(null,"NoData");
}}});
frame.setVisible(true);
// Delete frame
void delete(){
try{
Class.forName("com.mysql.jdbc.Driver");
catch(SQLException e)
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
frame.setLayout(null);
frame.setBounds(370,97,600,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
36
frame.setVisible(true);
try
frame.setIconImage(ImageIO.read(new
File("C:\\Users\\manish\\Desktop\\STUDENT\\icon+jar\\Frame.png")));
{exc.printStackTrace();
toppanel.setLayout(null);
toppanel.setBackground(Color.BLUE);
toppanel.setBounds(0,0,600,50);
frame.add(toppanel);
title.setBounds(100,5,500, 40);
title.setFont(new Font("comicSans",Font.BOLD,25));
toppanel.add(title);
panel.setLayout(null);
panel.setBackground(Color.WHITE);
panel.setBounds(0,50,600,750);
frame.add(panel);
DeleteLabel.setFont(new Font("comicSans",Font.BOLD,30));
panel.add(DeleteLabel);
FIDLabel.setFont(new Font("comicSans",Font.BOLD,30));
37
FIDLabel.setBounds(250, 180, 300,35 );
panel.add(FIDLabel);
panel.add(FIDText);
try {
panel.add(picLabel);}
// exc.printStackTrace();
panel.add(searchButton);
searchButton.addActionListener(new ActionListener()
String FID=FIDText.getText();
try
pst = con.prepareStatement("DELETE
FROM login WHERE ID = '"+FID+"'");
38
pst.executeUpdate();
JOptionPane.showConfirmDialog(null,
"Confirm Delete");
catch(Exception e)
JOptionPane.showMessageDialog(null,"No Data");
} }});
panel.add(returnButton);
returnButton.addActionListener(new ActionListener()
signin();} });
frame.setVisible(true);}
//MAIN METHOD
//main method
39
40
CHAPTER-6
Testing
Process of testing involves various checks knows as test so that project performance is
measured in terms of various parameters.
For testing any software we need to apply various steps for each level known as cases.
Case-1:
User provides his input in the form of registration details. Test checks that whether login
details are previously entered or not in case or wrong details it returns wrong input
Case-2:
In this case of login window user provides roll no and password to access student login
details if details are correct then a message is displayed authorised to access data
Case-3:
In this case if user provides a roll no to his details then he /she can access that data
randomly.
41
CHAPTER-7
OUTPUT:
42
Figure no :7.3
Figure no 7.4
43
Figure no: 7.5(Select operation)
44
Figure no:7.7(Update Data)
45
CHAPTER-8
CONCLUSION
Each and every project has its own pros and cons where as student database management
offers wide variety of advantages to school management to use like less paper work, easy
to update or delete new or old students to database without wasting too much time.
But depending too much upon software may become a big headache for the school staff
Like database is connected due to JDBC drivers .That me lead to wastage of our time and
money so it becomes important to know how your software works because knowledge is
the key to success without this you cannot be successful in any field.
46
1