Skip to content

Commit 0abae11

Browse files
[Rust] Task 2 is complete
1 parent 80885b4 commit 0abae11

5 files changed

Lines changed: 17 additions & 6 deletions

File tree

rust-method/src/queries/delete.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::task1::calculeaza_medii_generale;
12
use crate::Secretariat;
23
use crate::Student;
34
use crate::Materie;
@@ -156,6 +157,7 @@ pub fn delete(s: &mut Secretariat, query: &str) -> Result<(), String> {
156157
}
157158
"inrolari" => {
158159
delete_from_table(&mut s.inrolari, &conditii)?;
160+
calculeaza_medii_generale(s);
159161
Ok(())
160162
}
161163
_ => Err(format!(

rust-method/src/queries/select.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ impl Selectable for Student {
1818
"nume" => print!("{}", self.nume),
1919
"an_studiu" => print!("{}", self.an_studiu),
2020
"statut" => print!("{}", self.statut),
21-
"medie_generala" => print!("{:.2}", self.medie_generala),
21+
"medie_generala" =>
22+
print!("{:.2}",
23+
(self.medie_generala * 100.0f32).round() as f32 / 100.0f32),
2224
_ => return Err(format!("Camp invalid {:?}", field)),
2325
}
2426
Ok(())

rust-method/src/queries/update.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ impl Updateable for Student {
2323
.map_err(|_| format!("ID invalid: {:?}", value))?,
2424
"nume" =>
2525
self.nume = value.to_string(),
26-
"an studiu" =>
26+
"an_studiu" =>
2727
self.an_studiu = value
2828
.parse::<u8>()
2929
.map_err(|_| format!("An studiu invalid: {:?}", value))?,
@@ -35,7 +35,9 @@ impl Updateable for Student {
3535
}
3636
}
3737
"medie_generala" =>
38-
return Err("Buna incercare :) NU poti modifica media generala!".to_string()),
38+
self.medie_generala = value
39+
.parse::<f32>()
40+
.map_err(|_| format!("Medie invalida: {:?}", value))?,
3941
_ =>
4042
return Err(format!("Camp invalid {:?}", field))
4143
}
@@ -170,6 +172,7 @@ pub fn update(s: &mut Secretariat, query: &str) -> Result<(), String> {
170172
str_conditii.pop();
171173
}
172174

175+
173176
// Aici poti sa folosesti deja `nume_tabela`, `camp`, `valoare` si `str_conditii`
174177
// exemplu: parseaza conditii
175178
let conditii = parseaza_conditiile_where(&str_conditii)?;

rust-method/src/queries/where_clause.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ fn match_inrolare_on_conditie(inrolare: &Inrolare, cond: &Conditie) -> Result<bo
181181
"id_student" =>
182182
return match_num_on_conditie(inrolare.id_student, cond),
183183
"id_materie" =>
184-
return match_num_on_conditie(inrolare.id_student, cond),
184+
return match_num_on_conditie(inrolare.id_materie, cond),
185185
"note" => {
186186
let mut tokens = cond.valoare.split_whitespace();
187187

rust-method/src/task1.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,18 @@ pub fn calculeaza_medii_generale(s: &mut Secretariat) -> () {
155155
idx_inrolare += 1;
156156
}
157157

158-
student.medie_generala = suma_notelor / (nr_materii as f32);
158+
student.medie_generala = if nr_materii != 0 {
159+
suma_notelor / (nr_materii as f32)
160+
} else {
161+
0.0
162+
}
159163
}
160164
}
161165

162166
pub fn citeste_secretariat(nume_fisier: &str) -> Secretariat {
163167
let mut secretariat = Secretariat::default();
164168
let file = File::open(nume_fisier).unwrap_or_else(|_| {
165-
eprintln!("Eroare: nu pot deschide fișierul {:?}", nume_fisier);
169+
eprintln!("Eroare la deschiderea fisierului {:?}", nume_fisier);
166170
process::exit(255);
167171
});
168172

0 commit comments

Comments
 (0)