tema: aspx web aplikacija za podršku rada skriptarnice ... · samo knjige se mogu naručiti...
TRANSCRIPT
Univerzitet u Novom Sadu
Tehnički fakultet
»MihajloPupin«
Zrenjanin
SEMINARSKI RAD
Predmet: Softversko inženjerstvo 2
- primer -
Tema: ASPX web aplikacija za podršku rada skriptarnice Tehničkog fakulteta „Mihajlo Pupin“ Zrenjanin
Profesor : Student:
Doc. Dr Ljubica Kazi Ime Prezime BrojIndeksa
Zrenjanin, 2018. godina
__________________________________________________________
1
Sadržaj:
1. Opis poslovnog procesa i poslovnog pravila
2. Specifikacija funkcionalnih zahteva sa profilima korisnika
3. Modeli u dizajnu softverskog rešenja
3.1. USE CASE dijagram
3.2. CDM dijagram
4. Korisničko uputstvo
5. Opis implementacije
5.1. Kratak opis primenjenih tehnologija
5.2. Tabelarni prikaz strukture slojeva i podslojeva aplikacije
5.3. SQL script za kreiranje baze podataka i stored procedura
5.4. Ključni delovi koda po slojevima i podslojevima, sa objašnjenjima
6. Zaključak
7. Literatura
__________________________________________________________
2
1. Opis poslovnog procesa i poslovnog pravila
POSLOVNI PROCES
Skriptarnica je organizaciona jedinica fakulteta gde studenti mogu da kupe obrasce, knjige i
zbirke zadataka. Svi materijali se mogu kupiti direktno na šalteru, ali mogu i naručiti putem
interneta ili telefonom.
Kada se naruči knjiga telefonom ili putem sajta, nakon izvršene uplate mora se skenirati
uplatnica, a tek nakon toga može se isporučiti poštom.
Kada druga institucija naručuje i plaća knjige, sastavlja se profaktura i faktura. Prilikom svake
kupovine izdaje se fiskalni isečak. Jednom godišnje realizuje se popis inventara (obrazaca,
knjiga i slično) u skriptarnici.
POSLOVNO PRAVILO
Samo knjige se mogu naručiti telefonom, odnosno putem interneta.
U jednom trenutku može se naručiti putem interneta maksimalno 3 knjige.
2. Specifikacija funkcionalnih zahteva sa profilima korisnika
Profil korisnika: radnik u skriptarnici
- Unos podataka o robi
- Tabelarni prikaz narudzbina sa statusom, filter prema statusu
- Izmena statusa narudzbine
- Unos vesti
- Unos podataka o popisu robe, Stampanje izvestaja o popisu
- Stampanje profakture, stampanje fakture (na osnovu narudzenice)
Profil korisnika: kupac
- Tabelarni prikaz robe sa filtriranjem po nazivu, autoru
- Unos podataka o narucivanju
- Tabelarni prikaz narudzbina sa statusom svake narudzbine
- Prikaz pojedinacne narudzbenice
- Stampanje pojedinacne narudzbenice
Profil: Neimenovani posetilac web sajta skriptarnice
- Prikaz cenovnika, stampanje cenovnika
- Prikaz vesti
- Registracija
- Prijava na sistem (logovanje)
__________________________________________________________
3
3. Modeli u dizajnu softverskog resenja
3.1.USE CASE dijagram
<<extend>>
<<extend>>
<<extend>><<friend>>
<<extend>>
<<use>>
Radnik u skriptarnici
Unos podataka o robi
Tabelarni prikaz narudzbina
Filter prema statusu
Izmena statusa narudzbine
Unos podataka o popisu robe
Stampanje faktureStampanje profakture
Stampanje izvestaja o popisu
__________________________________________________________
4
<<extend>>
<<access>>
<<extend>>
<<extend>>
Kupac
Tabelarni prikaz robe
Unos podataka o narucivanju
Prikaz pojedinacne narudzbenice
Case_13
Filtriranje robe prema nazivu, autoru
Tabelarni prikaz narudzbina
__________________________________________________________
5
<<extend>>
Neimenovani posetilac web sajta
Tabelarni prikaz cenovnika
Prikaz vesti
Stampanje cenovnika
3.2. CDM dijagram
__________________________________________________________
6
4. Korisnicko uputstvo
Opcije neimenovanog korisnika sajta prikazane su nakon pokretanja pocetnog ekrana web
aplikacije. Slika 1. Prikazuje pocetni ekran.
Izborom opcije “Vesti” ucitava se stranica sa prikazom vesti.
Izborom opcije “Cenovnik” dobija se spisak sve robe I cena.
__________________________________________________________
7
Neimenovani korisnik može I da se registruje kao kupac, korišćenjem opcije “Registracija”.
Nakon prijavljivanja, radnik skriptarnice dobija naslovnu stranicu sa različitim opcijama
menija. Podatke o popisu robe može da menja u okviru opcije “Cenovnik”, gde izborom ID
broja i unosom nove vrednosti cene ili količine, menja stanje navedene robe, koja se odmah
vidi na cenovniku.
__________________________________________________________
8
DALJE SE OPISUJU SVE OPCIJE PROGRAMA. OVO JE NARAVNO APLIKACIJA U
UPOTREBI I DIPLOMSKI RAD, A ZA SEMINARSKI RAD JE DOVOLJNO REALIZOVATI
SAMO PO JEDAN EKRAN ZA SVE OSNOVNE FUNKCIJE:
Unos, brisanje, izmena, tabelarni prikaz, filter, stampa, eksport u XML.
__________________________________________________________
9
5. Opis implementacije
5.1. Kratak opis primenjenih tehnologija
U ovom seminarskom radu korišćen je Visual Studio .NET 2010 i Microsoft SQL Server
2008 R2. U okviru realizacije programskog koda:
- Korisnički interfejs predstavljaju ASPX web forme
- Klase za rad sa podacima sa korisničkog interfejsa I baze podataka su iz
standardnog paketa klasa za rad sa SQL serverom (SQLClient)
5.2. Tabelarni prikaz strukture slojeva i podslojeva aplikacije
SLOJ PODSLOJ REALIZACIJA U
SEMINARSKOM RADU
PREZENTACIONI SLOJ Korisnički interfejs KI.sln (ASPX web forms)
Prezentaciona logika PL.dll (biblioteka klasa)
SLOJ SERVISA Web servis WS.Service1.asmx
(web servis tip projekta)
SLOJ POSLOVNE LOGIKE Klase poslovnih entiteta Isporuka kao klasa u BL.dll
Poslovna pravila Realizovana u okviru
metoda klasa poslovnih
entiteta
SLOJ ZA RAD SA
PODACIMA
Klase podataka KlasePodataka.dll
(svaka tabela u bazi
podataka ima 3 klase –
pojedinac, lista i DB)
5.3. SQL script za kreiranje baze podataka i stored procedura
USE [master]
GO
CREATE DATABASE [Skriptarnica]
GO
USE [Skriptarnica]
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Narudzbenica](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[RedniBroj] [int] NOT NULL,
[Godina] [int] NOT NULL,
[BrojNarudzbenice] [nvarchar] (50) NOT NULL,
[DatumNarucivanja] [datetime] NOT NULL,
[DatumPlacanja] [datetime] NULL,
[DatumIsporuke] [datetime] NULL,
[IdNarucioca] [int] NOT NULL,
[PrezimeNarucioca] [nvarchar](80) NULL,
__________________________________________________________
10
[ImeNarucioca] [nvarchar](80) NULL,
[NazivFirmeNarucioca] [nvarchar] (250) NULL,
[AdresaNarucioca] [nvarchar](250) NOT NULL,
[EmailNarucioca] [nvarchar] (250) NOT NULL,
[UkupanIznosZaUplatu] [real] NOT NULL
)
GO
ALTER TABLE [dbo].[Narudzbenica]
ADD CONSTRAINT [PK_Narudzbenica] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[Roba](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Oznaka] [nvarchar](50) NULL,
[SifraRobeZaKasu] [nvarchar] (40) NULL,
[Naziv] [nvarchar](250) NOT NULL,
[Autori] [nvarchar](250) NOT NULL,
[GodinaIzdanja] [int] NOT NULL,
[Izdavac] [nvarchar](250) NOT NULL,
[Cena] [real] NOT NULL,
[PDVproc] [real] NULL,
[KolicinaLager] [int] NOT NULL,
[IDTipRobe] [int] NOT NULL,
[DatumPodatka] [datetime] NOT NULL,
[Napomena] [nvarchar](250) NULL
)
GO
ALTER TABLE [dbo].[Roba]
ADD CONSTRAINT [PK_Roba] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[TipRobe](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Naziv] [nvarchar](80) NOT NULL,
[NazivOznake] [nvarchar](80) NOT NULL
)
GO
ALTER TABLE [dbo].[TipRobe]
ADD CONSTRAINT [PK_TipRobe] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[Obavestenje](
[ID] [int] IDENTITY(1,1) NOT NULL,
__________________________________________________________
11
[DatumYU] [nvarchar] (20) NOT NULL,
[Datum] [DateTime] NOT NULL,
[Vest] [nvarchar](250) NOT NULL
)
GO
ALTER TABLE [dbo].[Obavestenje]
ADD CONSTRAINT [PK_Obavestenje] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[Autor](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Prezime] [nvarchar](80) NOT NULL,
[Ime] [nvarchar](50) NOT NULL
)
GO
ALTER TABLE [dbo].[Autor]
ADD CONSTRAINT [PK_Autor] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[StavkaNar](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[IdNarudzbenice] [bigint] NOT NULL,
[IdRobe] [bigint] NOT NULL,
[Komada] [int] NOT NULL,
[CenaPoKomadu] [real] NOT NULL
)
GO
ALTER TABLE [dbo].[StavkaNar]
ADD CONSTRAINT [PK_StavkaNar] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
CREATE TABLE [dbo].[AutorRobe](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[IDRobe] [bigint] NOT NULL,
[IDAutora] [bigint] NOT NULL
)
GO
ALTER TABLE [dbo].[AutorRobe]
ADD CONSTRAINT [PK_AutorRobe] PRIMARY KEY CLUSTERED
(
__________________________________________________________
12
[ID] ASC
)
GO
CREATE TABLE [dbo].[Korisnik](
[ID] [int] IDENTITY (1,1) NOT NULL,
[KorisnickoIme] [nvarchar] (50) NOT NULL,
[Sifra] [nvarchar] (50) NOT NULL,
[Prezime] [nvarchar] (50) NULL,
[Ime] [nvarchar] (50) NULL,
[NazivFirme] [nvarchar] (250) NULL,
[Adresa] [nvarchar] (250) NOT NULL,
[Email] [nvarchar] (50) NOT NULL,
[Status] [nvarchar] (50) NOT NULL
)
GO
ALTER TABLE [dbo].[Korisnik]
ADD CONSTRAINT [PK_Korisnik] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
GO
ALTER TABLE [dbo].[StavkaNar] ADD CONSTRAINT [FK_StavkaNar_Roba] FOREIGN
KEY([IdRobe])
REFERENCES [dbo].[Roba] ([ID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StavkaNar] ADD CONSTRAINT [FK_StavkaNar_Narudzbenica]
FOREIGN KEY([IdNarudzbenice])
REFERENCES [dbo].[Narudzbenica] ([ID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AutorRobe] ADD CONSTRAINT [FK_AutorRobe_Autor] FOREIGN
KEY([IDAutora])
REFERENCES [dbo].[Autor] ([ID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AutorRobe] ADD CONSTRAINT [FK_AutorRobe_Roba] FOREIGN
KEY([IDRobe])
REFERENCES [dbo].[Roba] ([ID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Roba] ADD CONSTRAINT [FK_TipRobe_Roba] FOREIGN
KEY([IDTipRobe])
REFERENCES [dbo].[TipRobe] ([ID])
__________________________________________________________
13
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Narudzbenica] ADD CONSTRAINT [FK_Narudzbenica_Korisnik]
FOREIGN KEY([IDNarucioca])
REFERENCES [dbo].[Korisnik] ([ID])
ON UPDATE CASCADE
GO
5.4. Ključni delovi koda po slojevima i podslojevima, sa objašnjenjima
PREZENTACIONI SLOJ
Podsloj: Korisnički interfejs
Deo iz Web config – string konekcije
<configuration>
<connectionStrings>
<add name="Konekcija"
connectionString="Data Source=BUBILIS; Initial Catalog=Skriptarnica; Integrated
Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Deo za priključivanje standardnih biblioteka klasa
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
Punjenje combo box-a (drop down list)
// punjenje combo
ddlNazivRobe.Items.Clear();
ddlNazivRobe.Items.Add("izaberite...");
while (dr.Read())
{
ddlNazivRobe.Items.Add("[" + dr["ID"].ToString() + "]" +
dr["Naziv"].ToString() + "," + dr["GodinaIzdanja"].ToString());
}
SLOJ ZA RAD SA PODACIMA
Podsloj – Klase podataka
Otvaranje konekcije ka bazi podataka
__________________________________________________________
14
// konekcija na bazu
SqlConnection Veza = new
SqlConnection(ConfigurationManager.ConnectionStrings["Konekcija"].ConnectionString);
Veza.Open();
Preuzimanje podataka
String strSQL;
strSQL = "Select ID, Naziv, GodinaIzdanja from Roba order by Naziv";
SqlCommand Komanda = new SqlCommand(strSQL, Veza);
SqlDataReader dr = Komanda.ExecuteReader();
TREBA JOŠ DATI KLJUČNE DELOVE KODA KOJIMA SE OBJAŠNJAVAJU SVE
OSNOVNE FUNKCIJE: unos, brisanje, izmena, tabelarni prikaz, filtriranje…
__________________________________________________________
15
1. Zakljucak
U ovom seminarskom radu prikazana je realizovana prototipska aplikacija za podršku
radu skriptarnice fakulteta.
U delu specifikacije I dizajna obuhvaćene su sve najvažnije funkcije, a u delu
implementacije su realizovane samo osnovne funkcije ažuriranja, pretrage I štampe,
čime se ilustruje poznavanje osnovnih tehnika programiranja.
Dalji razvoj aplikacije odnosio bi se na realizaciju preostalih softverskih funkcija
potrebnih za pokrivanje svih očekivanih funkcionalnih karakteristika softvera, kao I
dodavanje automatizama, kontrole grešaka korisnika I slično.
2. Literatura
Korišćena literature za realizaciju ovog seminarskog rada:
[1]Jesse Liberty: “Programiranje na jeziku C#”, Mikro knjiga, 2007.
[2]Standardni web sajt Microsoft MSDN: https://msdn.microsoft.com/en-us/default.aspx