第一篇:學生管理系統 設計總結
概述
隨著計算機技術的發展,特別是計算機網絡技術與數據庫技術的發展,使用人們的生活與工作方式發生了很大的改變。現代化管理高效、簡潔,數據庫始于20世紀60年代,經過40多年的發展,現在已經形成了理論體系,成為計算機軟件的一個重要分支。數據庫技術體現了當代先進的數據管理方法,使計算機的應用真正滲透到國民經濟各個部門,在數據處理領域發揮著越來越大的作用。
而互聯網技術的出現,更是進一步豐富的人類生活,數字化生存已經一步步走進我們的生活與工作。互聯網技術與數據庫技術的結合為計算的在人類生活中的應用帶來了巨大的影響。產業信息化,管理現代化,科學化已經成為行業發展的重要課題,這不僅是企業提高自身競爭力,甚至是國家提高綜合國力,走向國民富強的重要手段。
我國人口眾多,學生數目龐大,要進行信息化管理就需要建立合適的信息管理系統,在實現基礎的管理功能的同時做好數據的整理、安全功能。通過使用信息管理系統,可以極大提高工作效率。
背景分析
學生信息是學校管理中一項繁瑣的工作。管理人員需要建立學生的學籍,匯總每學期沒有拿到規定學分的學生,及這些學生的詳細情況;學生完成一門課程的學習后,教師學要錄入學生的考試成績,計算平均成績,匯總各分數段的人數;學生需要查詢已結業的各門課程的成績;班主任需要查詢本班學生的學習情況,包括每個課程的平均成績和每個學生的考試通過情況。為此,設計一套實用的學生信息管理系統就可以大大簡化管理人員、班主任和任課教師的工作,方便學生查詢自己的學習情況。此外還需要具備良好的擴充能力,以應付未來可能添加的新需求。
在賬戶管理方面需要分別處理老師和學生的賬戶,合理分配權限,做好系統安全。
總結
學生管理系統是一個典型的數據庫管理系統應用。在制作過程中遇到的困難并不太多,主要是規劃文檔期間經驗不足的問題,需要改很多遍。
接觸了軟件工程這門課程,我認為軟件工程和我們平時上專業課相對來講一個是宏觀一個是微觀。平時寫軟件是一個微觀的,講的是如何來實現各個功能的細微細節。而軟件工程就相對來講是一個宏觀調控,從整體方面來分析系統的結構,可行性等等。
寫軟件我們是照著一定的思想一定思路去寫下去,有人說其實寫軟件并不難,只要給你一個思路你就可以不斷地往下寫。我覺得確是如此,其實我們平時寫軟件我覺得并不是很難的事,平時即使遇到處理不了的技術問題,哪里編譯出現錯誤等等其實都可以在網上提問。技術問題一般我們都可以在網上得到答案,但軟件的思想不是我們看了一下就能真正理解的。
不論采用哪種方法來開發軟件,分析的過程都是提取系統需求的過程。分析工作主要包括3項內容,這就是理解,表達和驗證。首先,系統分析員通過用戶及領域專家的充分交流,力求完全理解用戶需求和該應用鄰域中的關鍵性的背景知識,并用某種無二義性的方式把這種理解表達成文檔資料。分析過程得出的最重要的文檔資料是軟件需求規格說明(在面向對象分析中,主要由對象模型,動態模型和功能模型組成)。
由于問題復雜,而且人與人之間的交流帶有隨意性和非形式化的特點,上述理解過程通常不能一次就達到理解的效果。因此,還必須進一步驗證軟件需求規格說明的正確性,完整性和有效性,如果發現了問題則進行修正。顯然,需求分析過程是系統分析員與用戶及領域
專家反復交流和多次修正的過程。也就是說,理解和驗證的過程通常交替進行,反復迭代,而且往往需要利用原型系統作為輔助工具。
由此可見,軟件工程在構筑、編寫文檔方面的工作實際上并不比編寫代碼的工作量要少,相反,有時候編寫代碼尤其是初步編寫代碼的工作量在整個工程中只占了很少的一部分工作。我們需要改變傳統的編寫軟件的觀點,從軟件工程的角度來看待問題,這也是我學習軟件工程這門課最大的收獲。
第二篇:學生管理系統個人總結
學生管理系統個人總結
概述
隨著計算機技術的發展,特別是計算機網絡技術與數據庫技術的發展,使用人們的生活與工作方式發生了很大的改變。現代化管理高效、簡潔,數據庫始于20世紀60年代,經過40多年的發展,現在已經形成了理論體系,成為計算機軟件的一個重要分支。數據庫技術體現了當代先進的數據管理方法,使計算機的應用真正滲透到國民經濟各個部門,在數據處理領域發揮著越來越大的作用。
而互聯網技術的出現,更是進一步豐富的人類生活,數字化生存已經一步步走進我們的生活與工作。互聯網技術
與數據庫技術的結合為計算的在人類生活中的應用帶來了巨大的影響。產業信息化,管理現代化,科學化已經成為行業發展的重要課題,這不僅是企業提高自身競爭力,甚至是國家提高綜合國力,走向國民富強的重要手段。
我國人口眾多,學生數目龐大,要進行信息化管理就需要建立合適的信息管理系統,在實現基礎的管理功能的同時做好數據的整理、安全功能。通過使用信息管理系統,可以極大提高工作效率。
背景分析
學生信息是學校管理中一項繁瑣的工作。管理人員需要建立學生的學籍,匯總每學期沒有拿到規定學分的學生,及這些學生的詳細情況;學生完成一門課程的學習后,教師學要錄入學生的考試成績,計算平均成績,匯總各分數段的人數;學生需要查詢已結業的各門課程的成績;班主任需要查詢本班學生的學習情況,包括每個課程的平均成績和
每個學生的考試通過情況。為此,設計一套實用的學生信息管理系統就可以大大簡化管理人員、班主任和任課教師的工作,方便學生查詢自己的學習情況。此外還需要具備良好的擴充能力,以應付未來可能添加的新需求。
在賬戶管理方面需要分別處理老師和學生的賬戶,合理分配權限,做好系統安全。
總結
學生管理系統是一個典型的數據庫管理系統應用。在制作過程中遇到的困難并不太多,主要是規劃文檔期間經驗不足的問題,需要改很多遍。
接觸了軟件工程這門課程,我認為軟件工程和我們平時上專業課相對來講一個是宏觀一個是微觀。平時寫軟件是一個微觀的,講的是如何來實現各個功能的細微細節。而軟件工程就相對來講是一個宏觀調控,從整體方面來分析系統的結構,可行性等等。
寫軟件我們是照著一定的思想一
定思路去寫下去,有人說其實寫軟件并不難,只要給你一個思路你就可以不斷地往下寫。我覺得確是如此,其實我們平時寫軟件我覺得并不是很難的事,平時即使遇到處理不了的技術問題,哪里編譯出現錯誤等等其實都可以在網上提問。技術問題一般我們都可以在網上得到答案,但軟件的思想不是我們看了一下就能真正理解的。
不論采用哪種方法來開發軟件,分析的過程都是提取系統需求的過程。分析工作主要包括3項內容,這就是理解,表達和驗證。首先,系統分析員通過用戶及領域專家的充分交流,力求完全理解用戶需求和該應用鄰域中的關鍵性的背景知識,并用某種無二義性的方式把這種理解表達成文檔資料。分析過程得出的最重要的文檔資料是軟件需求規格說明。
由于問題復雜,而且人與人之間的交流帶有隨意性和非形式化的特點,上述理解過程通常不能一次就達到理解的
效果。因此,還必須進一步驗證軟件需求規格說明的正確性,完整性和有效性,如果發現了問題則進行修正。顯然,需求分析過程是系統分析員與用戶及領域
專家反復交流和多次修正的過程。也就是說,理解和驗證的過程通常交替進行,反復迭代,而且往往需要利用原型系統作為輔助工具。
由此可見,軟件工程在構筑、編寫文檔方面的工作實際上并不比編寫代碼的工作量要少,相反,有時候編寫代碼尤其是初步編寫代碼的工作量在整個工程中只占了很少的一部分工作。我們需要改變傳統的編寫軟件的觀點,從軟件工程的角度來看待問題,這也是我學習軟件工程這門課最大的收獲。
個人總結
--------學生信息管理系統小結經過大家的努力,學生管理系統終于做完了,經過這次實習系統設計,自己總結了這個學生信息管理系統的一些問題,不過收獲還是頗為豐富的,再有理論知
識上結合實踐,使我學到了更多。
首先,更進一步的了解了數據庫的基本操作,在這之前,數據庫的學習僅僅剛開了個頭,我們只是在了解一些概念性的東西。在做這個系統之前,我連基本的連接數據庫,配文件dsn,數據庫查詢語句等這些東西都不熟練。現在對于數據庫的增刪改查操作比較熟練了,對于初學者來說,比較頭疼的就是對于單引號的處理。我的建議是如果不理解先把按照課本上正確的語句敲,然后在多次進行數據庫的鏈接,增刪改查操作中不斷總結規律。這次設計的學生信息管理系統,全在自己所掌握的知識下,進行編程設計,完全體現了自己在數據庫語言和程序設計課程學習狀況,充分地為自己以后更深入了數據庫語言奠下深厚的基礎。
縱觀此學生信息管理系統的整體概況,目前,自我認為設計良好,相關功能都能夠實現,功能強大,條理清晰,界面可觀性比較好。并且特色在于,所
設計的表單都在一個表單系統桌面中運行,比較符合系統的觀念。
在系統設計的過程中,我從中發現,學習數據庫要細心和有耐性,并且要不斷地從外界學習更多的技術才能設計出一套完美的系統
劉小慧2014年7月15日
學生管理系統開發總結報告
項目承擔部門:07級漢本2本
本組成員:田維祝胡鵬躍周延強馬勇 王飛霞
撰寫人:田維祝
完成日期:2014年12月22日
本文檔使用部門:項目組主管領導客戶維護人員用戶 評審人:
評審日期:
實際開發結果:
功能基本實現。
1、軟件產品描述
此項目主要是有關于學生的成績進行管理的應用軟件,他的主要適用對象是老師和學生,能夠減少老師的工作
時間和壓力同時能夠及時的讓學生對自己的成績等私人信息及時了解!
軟件模塊清單
文檔清單
進度
工作評價
對技術評價:
采用了以前沒有使用過的技術:如jsp ,mvc架構等 對質量評價:
由于時間較短所以很多東西沒有完善,產品少有瑕疵!技術總結積累:
通過這次實例我們把過去所學的java只靈活運用到了項目中,同時涉及到了數據庫的一些技術,網頁的設計美化,jsp網頁設計,讓我們受益匪淺。同時小組內技術交流大家學會了很多過去沒有怎么使用的技術或者軟件,如ps,eclipse,jdbc數據庫連接等等。經驗教訓:
通過這次實例開發,增進了團隊協作能力,增強了我們的編程思
想,鍛煉了我們的溝通能力。重要 的是我們學習了很多只是,加深了一些書本知識的理解,體驗了軟件的開發流程。
我們的缺陷在于,由于是初次合作所以彼此分工不明確。合作不夠密切!
最深體會:學無止境,多動手多思考!
asp.net課程設計
-----成績管理系統
韓
旭
強
計算機系應用技術1001班 2014年六月二十七日
學生成績管理系統總結
成員介紹
組長:韓旭強 組員:岳瑞杰
牛津
成員分工合作
岳瑞杰
韓旭強 牛津 功能實現
c#課程設計
實
訓
總
結
姓名: 班級:
學號:指導教師:
一學期很快就過去了,在這一學期中,我通過對visual c# 2014程序設計的學習獲得了很多知識。在本次c#課程設計中,我學習到了許多書本上沒有的知識,是我了解到程序開發的艱難。雖然這次實訓中有許多的不足,但起碼是了解了圖書管理系統開發的部分過程。這次課程設計給我提供了一個很好的機會,在設計中發現,有很多已經學過的東西我們沒有理解到位不能靈活運用于實際,不能很好的用來解決問題,這就需要自己不斷的大量的實踐,通過不斷的自學,不斷地發現問題,思考問題,進而解決問題。在這個過程中我們將深刻理解所學知識,同時也可以學到不少很實用的東西。
一 實訓選題
圖書管理系統的設計
二 實訓設計作品內容
這次的課程設計,我們需要做一個圖書管理系統的登錄界面及主界面。
三 設計中遇到的問題及解決方案
這次的課程設計,我們需要做一個圖書管理系統的登錄界面及主界面。在制作過程中,我親身體驗了一回系統的設計開發過程,很多東西書上寫的很清楚,貌似看著也很簡單,思路非常清晰。但真正需要自己想辦法去設計一個系統的時候才發現其中的難度。本次實訓中,在做到各個頁面之間的跳轉中,不知如何制作,在我像同學及老師的不斷請教中終于學會了。
四 作品的優點及不足
通過本次課程設計,我感覺我的作品的優點在于,各頁面之間的背景設計還是不錯的,不足在于設計頁面過于簡單,有的設計不是很合理。希望以后能改正,更加努力學習。
五 對實訓的意見及建議
通過這次課程設計的完成,使我對自己所學知識進一步的了解,同時通過實踐發現自己的不足,對知識的掌握及運用存在諸多的不完善。本系統也存在著很多不足,如系統十分簡單,實現功能也不夠完善。所以在今后的學習中我會繼續努力,完善自我。在本次的實訓中我感覺實訓的時間有點短,有些設計是需要時間來思考的,但兩天的時間過于短,由許多的功能無法實現及更改,希望學校加長對實訓時間的延長。還有就是實訓環境有點簡陋,實訓室沒辦法上網,有些東西不會而無法及時的上網查詢。希望領導能夠改善。對于建議,希望領導能給實訓室裝上風扇,最好能裝上空調。
第三篇:學生管理系統
import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;
public class Xsglxt extends JFrame implements ActionListener { JPanel mb1,mb2;JLabel bq1;JTextField wbk1;JButton an1,an2,an3,an4;JTable bg1;
JScrollPane gd1;Xsxx xsxx2;
public static void main(String[] args)
{
Xsglxt xs=new Xsglxt();}
public Xsglxt(){
mb1=new JPanel();
bq1=new JLabel(“請輸入姓名”);
wbk1=new JTextField(10);
an1=new JButton(“查詢”);
an1.addActionListener(this);
an1.setActionCommand(“chaxun”);
mb1.add(bq1);mb1.add(wbk1);mb1.add(an1);
mb2=new JPanel();
an2=new JButton(“添加”);
an2.addActionListener(this);
an2.setActionCommand(“tianjia”);
an3=new JButton(“修改”);
an3.addActionListener(this);
an3.setActionCommand(“xiugai”);
an4=new JButton(“刪除”);
an4.addActionListener(this);
an4.setActionCommand(“shanchu”);
mb2.add(an2);mb2.add(an3);mb2.add(an4);
xsxx2=new Xsxx();
bg1=new JTable(xsxx2);gd1=new JScrollPane(bg1);
this.add(gd1);this.add(mb1,“North”);this.add(mb2,“South”);
this.setTitle(“學生管理系統”);this.setSize(500,400);this.setLocation(201,181);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);
} public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals(“chaxun”)){
String xingming=this.wbk1.getText().trim();
String sql=“select * from xuesheng where xingming='”+xingming+“'”;
xsxx2=new Xsxx(sql);
bg1.setModel(xsxx2);} else if(e.getActionCommand().equals(“tianjia”)){
Tianjia tj=new Tianjia(this,“添加學生信息”,true);
xsxx2=new Xsxx();
bg1.setModel(xsxx2);
} else if(e.getActionCommand().equals(“xiugai”)){
int ii=this.bg1.getSelectedRow();
if(ii==-1)
{
JOptionPane.showMessageDialog(this,“請選中要修改的行”);
return;
}
new Xiugai(this,“修改學生信息”,true,xsxx2,ii);
xsxx2=new Xsxx();
bg1.setModel(xsxx2);}
else if(e.getActionCommand().equals(“shanchu”))
{
int ii=this.bg1.getSelectedRow();
if(ii==-1)
{
JOptionPane.showMessageDialog(this,“請選中要刪除的行”);
return;
}
String st=(String)xsxx2.getValueAt(ii,0);
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
Statement sm=null;
try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
ct=DriverManager.getConnection(“jdbc:odbc:sql server”,“sa”,“ydyd4488321”);
ps=ct.prepareStatement(“delete from xuesheng where xuehao=?”);
ps.setString(1,st);
ps.executeUpdate();
} catch(Exception e2){}
finally
{
try {
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
} catch(Exception e3){}
}
xsxx2=new Xsxx();
bg1.setModel(xsxx2);
} } }
第四篇:oracle學生成績管理系統設計
階段1.1成績管理系統實體關系設計
一、實驗目的和要求
(1)熟練掌握實體關系設計的方法。(2)通過需求分析結果,掌握E-R圖。
二、實驗內容和原理
實體關系設計是在需求分析的一個環節過程,在這一過程中產生E-R圖,該圖由實體、屬性和聯系三個要素構成。邏輯結構設計的任務就是把概念設計階段建立的基本E-R圖按照選定的系統軟件支持的數據模型,轉換成相應的邏輯模型。這種轉換要符合關系數據模型的原則。
E-R圖向關系模型轉換時要解決如何將實體和實體間的聯系轉換為關系,并確定這些關系的屬性和碼,這種轉換一般按下面的原則進行。
(1)一個實體轉換為一個關系,實體的屬性就是關系的屬性,實體的碼就是關系的碼。
(2)一個聯系也轉換為一個關系,聯系的屬性及聯系所連接的實體的碼都轉換為關系的屬性,但關系的碼會根據聯系的類型變化。
三、主要儀器設備
計算機一臺、Powerdesinger運行環境
四、操作方法與實驗步驟
在成績管理系統中,需要管理學生、課程和成績,以及它們之間的聯系。因此在該系統的E-R圖中,實體分別為學生、老師、課程。為了便于掌握,學生實體的屬性分別有學號、姓名、性別;課程實體的屬性有課程編號、課程名稱、學期、課程學分;教師實體的屬性有教師編號、姓名、性別。學生實體與課程實體有選課關系,而且一個學生可以選擇多門課程,一門課程也可以被多個學生選擇,因此學生和課程之間的聯系是m:n聯系。教師實體與課程實體有教授關系,一名教師可以教多門課程,一門課程也可以被多個教師教授,因此教師和課程之間的聯系是m:n聯系。學生在選課后會產生成績,教師授課后會產生授課地點及授課學期。根據上述分析,繪出的E-R圖如下圖所示。
階段1.2 成績管理系統結構設計
一、實驗目的和要求
1.了解數據庫中列的屬性以及各個屬性的含義。2.掌握為不同的列選擇不同的屬性及范圍。
二、實驗內容和原理
在管理信息系統中,物理結構設計主要是指如何將通過邏輯結構設計所得的系統邏輯結構型轉換為物理模型,并明確地指出系統的物理存儲結構。本實驗主要是利用CASE工具集PowerDesigner對成績管理系統進行物理結構的設計。
三、主要儀器設備
計算機一臺、Powerdesinger 運行環境、Oracle運行環境
四、操作方法與實驗步驟
在物理結構設計中需要考慮為每列設計合適的數據類型。成績管理系統中,學生(學號、姓名、性別)關系里,學號采用int來表示就可以了,而姓名設置成varchar2(20),性別只需要設置為char(2)。因為性別不是男就是女,因此只會占用兩個字節。所以最終我們可以將其物理表結構設置為:t_student(stuid int,stuname varchar2(20),sex char(2)。依照上述,課程的物理表結構為:t_course(couid int,couname varchar2(20),term char(2),credit number(3,1))。教師的物理存儲表結構為:t_teacher(teaid int,teaname varchar2(20),sex char(2))。選課的物理表結構為:t_selcour(sid int,cid int,score number.(4,2))。教課的物理表結構為:t_teacour(tid int,cid int,teaaddr varchar2(30),term char(2))。
(1)通過手動編寫SQL語句方式建立數據庫后臺
上述創建了代表學生實體的表t_student,其中stuid設置為主鍵,唯一標識一個學生。
表t_course用來代表課程實體,其中采用couid來標識一門課程。當課程名稱的長度大于20個字符時,varchar2可以自動擴展。
物理實體在物理結構中用t_teacher表來表示,teaid用來唯一標識一位教師,因此其不能空
選課表t_selcour中學生編號參考t_student表中的stuid,此時sid為外鍵,課程編號cid也作為外鍵參考t_course中的couid(2)通過PowerDesigner建立數據庫后臺。
第四步:到此,系統的概念模型就全部設計好了。接下來單擊菜單“工具”→“生成物理屬性模型”選項,就會彈出“物理數據模型生成選項”對話框,如下圖:
在“常規”選項卡中選擇“生成新的物理模型”單選鈕,并選擇DBMS為“OPACLE Version 10g”,“名稱”文本“MyPhysicalDataModel”,并單擊“確認”按鈕,在彈出得到路徑選擇對話框中輸入你想要放置生成的物理數據模型文件的位置,系統就會自動在指定的路徑下生成一個名為“MyPhysicalDataModal.pdm”的文件,并生成系統的物理模型,如下圖
CONGC
從菜單中選擇 Database---Generate Database選項。PowerDesigner將會在指定的路徑下生成一個名字為*.sql 的文本文件。里面存放可供Oracle 執行的用來建立數據庫實體的SQL語句。
階段1.3 成績管路系統存儲過程設計
一、實驗目的和要求
(1)了解存儲過程的設計目的以及方法。(2)掌握存儲過程的創建。
二、實驗內容和原理
存儲過程是在數據中定義的程序塊,它存放在數據庫服務端數據字典里。采用存儲過程可以提高過程代碼程序的執行速度和代碼共享度。具體有以下幾個特點。(1)過程存放在服務器端,減少了網絡傳輸的延時,提高了速度。(2)過程在執行一次之后,會駐留內存,后續的執行無需再經編譯過程,提高了執行效率。
三、主要儀器設備
計算機一臺,Oracle運行環境
四、操作方法與實驗步驟
1、創建存儲過程先向表t_student中插入數據,具體如下所示
2、每次向表t_student中插入數據時,只需要運行該過程就可以了。具體如下所示。表t_student中的列stuid被設置為主鍵,因此不可以存在重復值。在第二次運行時,因為輸入的第一個參數id與表中已存在的數據相同,所以插入時出現錯誤。
3、繼續向表中插入兩條記錄,其中當參數id不重復時,過程成功完成。
4、不僅可以通過存儲過程向表中插入數據,也可以通過一般的SQL語句向表中插入數據,如下所示。
5、向表中插入數據時,需要注意數據類型以及長度都需要與表中定義的相符,否則會出現錯誤,具體如下所示。
6、t_course表中列term被定義為char且長度為2,因此在插入數據時該列最大長度為2,超過該值會出現錯誤。課程表中只有已經存在的課程編號才能被插入到選課表中,否則會出錯,這樣就保證了數據的一致性。
7、t_selcour表的另外一個外鍵為第一列sid,在插入時只有當該值存在于學生表中的學生編號時,才能被成功插入,否則也會出現錯誤,具體如下所示。
8、對于向表t_teacour中插入數據時,同樣需要滿足外鍵參考主鍵的約束條件,具體如下所示。
9、向表t_teacour中插入一行記錄,其中tid存在于表t_teacher的列teaid中,cid存在于表t_course列couid中。如果插入的值不符合外鍵約束條件,會出現錯誤,具體如下所示。
10、在完成對表插入值后,可以關聯表查詢記錄。比如:查詢教師編號為1的教師所帶的課程編號、教師姓名、課程名稱、課程學分信息,具體如下所示。實現了查詢編號為1的老師所帶的課程編號、課程名稱等信息。在查詢時,為表命名別名時為了方便,各個表的連接通過主鍵外鍵約束來實現。
查看t_course及t_selcourse中的值
五、實驗結果與分析
實驗結果如上截圖所示。
六、討論、心得
grant select不支持對表中選定的幾列授權,只能將整個表的select權限授權出去。所以實驗中先建立了基于選課信息表的視圖SelectiveInfo1,視圖中包含成績列,學號列以及班級列(不包含其他的列)再將對視圖SelectiveInfo1的select權限授予角色teacher。
不同的用戶可以創建相同的表格,teacher用戶創建了table1,student用戶也創建了table1,且這兩個表格式完全相同的,那么其他用戶需要用這兩個表格時,可以用teacher.table1和student.table1加以區分。
實驗中遇到的問題可以上網百度,網上資源很豐富。
第五篇:學生考勤管理系統設計報告
C/C++程序設計專題實驗
報告
題目:學生考勤管理系統設計
班級:電子信息科學與技術131 姓名: 鄔
帥
斌
目錄
目錄......................................................................1 摘要........................................................................2 1.設計要求和目的.........................................................................................錯誤!未定義書簽。
1.1設計目的................................................................3 1.2問題描述................................................................3 1.3功能要求................................................................3 1.4問題的解決方案..........................................................3 2 設計思路和方法...........................................................................................................................4 3 主模塊設計....................................................................................................................................5 4.運行測試及結果.........................................................................................................................13 5.總結...........................................................................................................................................16 參考文獻.........................................................................................................................................16 源代碼..............................................................................................................................................17
摘要
隨著信息技術在管理上越來越深入的應用,管理信息系統的實施在技術上已經逐步成熟。管理信息系統是一個不斷發展的學科,任何單位要生存要發展,要提高效率地把內部活動有機地組織起來,就必須建立與自身特點相適應的信息管理系統。
由于學校的學生管理系統缺乏開發,而學生人數不斷增加,學生信息的不斷更新,所以,學生考勤管理系統的建立就顯得非常重要了。
本設計是基于Visual basic C++ 6.0開發環境,至上而下,層次化地設計學生考勤管理,綜合考慮學生考勤管理所涉及的多方面問題,結合學校和教師的情況,有步驟,條理清晰的設計,操作簡單,很方便的實現了學校和老師對學生考勤的管理。
關鍵詞:學生考勤管理 C++ 信息錄入 查詢
1.設計要求和目的
1.1設計目的
(1)進一步鍛煉學生對C++課程基礎知識和實踐技能的掌握和運用;
(2)要求學生基本掌握面向對象程序設計的基本思路和方法;
(3)要求學生能夠利用所學的基礎知識和技能,解決簡單的面向對象設計問題。
1.2問題描述
學生信息包括:學號、姓名、性別、年齡、班級等信息。
考勤信息包括:缺課日期、第幾節課、課程名稱、學生姓名、缺課類型(遲到、早退、請假和曠課)。
1.3功能要求
(1)添加功能:程序能夠添加學生的記錄和缺課記錄,提供選擇界面供用戶選擇所要添加的類別。添加學生記錄時,要求學號要唯一,如果添加了重復學號的記錄時,則提示數據添加重復并取消添加。
(2)查詢功能:可根據學號、姓名等信息對已添加的學生記錄進行查詢,如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。還可以按課程名、學生姓名對缺課記錄進行查詢。
(3)顯示功能:可顯示當前系統中所有學生的記錄和缺課記錄,每條記錄占據一行。
(4)編輯功能:可根據查詢結果對相應的記錄進行修改,修改時注意學號的唯一性。
(5)刪除功能:主要實現對已添加的學生記錄進行刪除。如果當前系統中沒有相應的記錄,則提示“記錄為空!”并返回操作。
(6)統計功能:能根據多種參數進行統計。能按課程名統計出學生曠課的信息、還可以按姓名統計出任一學生的曠課情況。需要排序。
(7)保存功能:可將當前系統中各類記錄存入文件中,存入方式任意。(8)讀取功能:可將保存在文件中的信息讀入到當前系統中,供用戶進行使用。
1.4問題的解決方案
根據系統功能要求,可以將問題解決分為以下步驟:
(1)應用系統分析,建立該系統的功能模塊框圖以及界面的組織和設計;(2)分析系統中的各個實體及它們之間的關系;(3)根據問題描述,設計系統的類層次;(4)完成類層次中各個類的描述;(5)完成類中各個成員函數的定義;
(6)完成系統的應用模塊;(7)功能調試;
(8)完成系統總結報告。(7)功能調試;
(8)完成系統總結報告。
2.設計思路和方法
2.1設計思路
根據設計要求,經分析可將整個系統劃分為7個功能模塊。數據管理中可以對學生的基本信息、課程的基本信息、學生缺課的查詢、添加、刪除和修改。查詢管理通過根據學生姓名,課程姓名 時間段兒等信息,查詢單個學生的缺課記錄,單科課的曠課記錄,單個學生的曠課記錄。功能模塊圖如下圖所示:
學生考勤管理程序建立學生缺課記錄修改學生缺課記錄查詢學生缺課記錄查看單科曠課記錄查看學生曠課記錄載入學生曠課記錄儲存學生曠課記錄
2.2數據結構設計
struct xueke {char xueke_name[50];int people_num;};這是定義了一個xueke結構體,用來存放一個學科名及其相應的曠課人數;
struct student { char name[50];long time;int lesson_time;char lesson_name[50];int chidao_num;
int zaotui_num;int qingjia_num;int kuangke_num;struct student *next;};這是定義了一個student的結構體,用來存放一個學生的考勤記錄,其中有,字符數組name[50],lesson_name[50],分別存放學生名字,缺課課程名字;int型變量lesson_time,chidao_num,zaotui_num,qingjia_num, kuangke_num,分別來存放,缺課節次,遲到次數,早退次數,請假次數,曠課次數 long型變量time,記錄時間。
3.主模塊設計
3.1建立學生缺課記錄子模塊
建立的學生人數,學生基本信息(包括缺課時間、學生姓名、課程名稱、節次、遲到次數、早退次數、請假次數、曠課次數),用creat()函數,如下圖:
開始int i,b;struct student *head,*p1,*p2;printf(“請輸入要建立資料的學生人數:”);scanf(“%d”,&b);head=p2=NULL;p1=(struct student *)malloc(LEN);輸入第一個學生成績head=p1;p2=p1;i=0;student_num++;inext=p1;p2=p1;student_num++;i++p2->next=NULL結束
3.2修改學生缺課記錄子模塊
開始char xiugai_name[50];char xiugai_xueke_name[50];int k;printf(”請輸入要修改的學生姓名與學科名稱:“);scanf(”%s%s“,xiugai_name,xiugai_xueke_name);struct student *p1,*p2;p2=(struct student *)malloc(LEN);p1=head;p1=p1->next;strcmp(xiugai_name,p1->name)!=0&&(p1->next!=NULL)&&strcmp(xiugai_xueke_name,p1->lesson_name)!strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0顯示修改菜單選擇修改項目并完成修改結束
3.3修改學生缺課記錄子模塊
開始int i=0;char chaxun_name[50];struct student *p;p=head;printf(”請輸入要查詢的人名:“);scanf(”%s“,chaxun_name);i
3.4查看單科曠課記錄子模塊
根據學科名稱和時間范圍查出所有在該范圍內曠課的學生以及次數,如下圖:
開始struct student *p1,*p2,*p3;char lesson[50];long look_time1,look_time2;int xunhuan_num=0;p3=(struct student *)malloc(LEN);p1=head;p2=p1->nextxunhuan_num
3.5查看學生曠課記錄子模塊
根據要查詢的學科名稱及時間段查出在改時間段內該門課上曠課的人數,如下圖:
開始int n,i,j,zhongjian;struct student *p1;char zhongjian_name[50];long look_time1,look_time2;printf(”請輸入第%d個學科名稱:“,i+1);scanf(”%s“,a[i].xueke_name);a[i].people_num=0;printf(”請輸入要查看的時間范圍由小到大“);scanf(”%ld%ld“,&look_time1,&look_time2);p1=head;i=0;Yi 3.6載入學生曠課記錄子模塊 可以載入實現儲存在當前文件夾中txt文件中所儲存的數據,如下圖: 開始struct student *p1=NULL,*p2=NULL,*head=NULL;struct student student_ziliao[100];int i=0,n=0;打開文件!feof(fp1)將文件里的數據存入結構體數組通過結構體數組建立鏈表結束 3.7儲存學生曠課記錄子模快 進入系統界面,進行數據的輸入,信息的保存調用相應的函數打開相應的地址,查詢各項信息。如下圖: 開始struct student *p1;p1=head;打開文件xueshengziliao.txtp1!=NULLN將數據寫入文件p1=p1->next;結束 Y 4.運行測試與結果 4.1開始菜單 4.2主菜單 4.3創建學生缺課記錄庫 4.4修改學生缺課記錄 4.5查詢學生缺課記錄 4.6查看單科曠課記錄 4.7查看學生曠課記錄 4.8載入曠課記錄 4.9儲存曠課記錄 5.總結 在老師同學的細心幫助下,結合網上的參考資料,這次設計總算順利完成。通過本次設計,讓我對C++基礎課程有了更加深刻的理解,在相關的能力上有了很大的提高,雖然在設計過程中遇到很大的困難,但是經過不斷的修改和調試,在此過程中受益匪淺。 這次的程序設計相對于平時的訓練還是有了進步的。學生考勤管理系統要求至少要有四個類,在起初,對于定義哪四個類我是不清楚的,通過仔細的研讀問題描敘終于在腦海里確定了這四個類。既然是學生考勤管理系統,那由學生缺課信息中的日期我想到了時間類,這是一個很簡單的類。從系統的幾大功能我又想到了系統的基礎就是缺課學生的缺課信息,于是我又想到了一個信息類,還有兩個類是根據兩個統計功能想到的,在現在看來似乎有些不妥。通過這次的課程設計我明白了學習程序設計語言必須要勤做實驗,通過實驗總結經驗。 平時遇到的一些小問題一定要重視,越是基礎的知識越要理解透徹。比如指針與數組方面的知識,一旦沒有弄清楚,在設計程序時就會吃虧。這次的課設中,我遇到了很多的問題,有的通過思考或查看書本解決了,有的還留在腦子里,只有通過孜孜不倦的求索我們才會有進步,不懂得思考就不能真正的掌握一門知識。這次的實驗給以了我警示,讓我明白我所掌握的知識還很欠缺,對于繼承與派生這一章的知識,我以為自己勉強掌握了,這次實驗后我發現我掌握得還不夠。基類的保護成員公有繼承到派生類,類外是否可以通過對象來訪問呢,原先我認為是可以的,經過這次程序設計,我知道我錯了。總之,我覺得做學問不應該馬虎,對于所學一定要有深入的理解,這也是我這次課設得到的啟示。 參考文獻: 劉銳宇.Visual C++從入門到精通.清華大學出版社 譚浩強.C++語言程序設計.清華大學出版社 設計源程序代碼: #include //stdio.h的內容用C++頭文件的形式表示 #include #include //動態內存分配 #include #include //I/O流控制頭文件 #define NULL 0 #define guding 10 #define LEN sizeof(struct student) //定義了一個常數宏LEN,它的值等于結構體student的所占內存大小 using namespace std;int student_num;FILE *fp1; //定義指針類型文件 struct xueke { char xueke_name[50];int people_num;}; struct student { char name[50];long time;int lesson_time;char lesson_name[50];int chidao_num;int zaotui_num;int qingjia_num;int kuangke_num;struct student *next;};void chaxun(struct student *head){ int i;char chaxun_name[50];cout<<”請輸入要查詢的人名:“; cin>>chaxun_name;struct student *p; if(head==NULL) cout<<”聯系人為空“;p=head;for(i=0;i if(strcmp(chaxun_name,p->name)==0){ cout<<”缺課時間:“< time<<”學生姓名:“< name<<”課程名稱:“< lesson_name<<”節次:“< lesson_time< 早退次數:“< zaotui_num<<”請假次數:“< qingjia_num<<”曠課次數:“< kuangke_num< p=p->next; //p的指針內容變成了p->next } } struct student *xiugai(struct student *head){ char xiugai_name[50];char xiugai_xueke_name[50];int k;cout<<”請輸入要修改的學生姓名與學科名稱【格式:學生姓名(空格)學科名稱】:“;cin>>xiugai_name>>xiugai_xueke_name;struct student *p1,*p2; p2=(struct student *)malloc(LEN);p1=head;if(head==NULL){ cout<<”沒有學生信息n“; return head;} while((strcmp(xiugai_name,p1->name)!=0||strcmp(xiugai_xueke_name,p1->lesson_name)!=0)&&(p1->next!=NULL)) p1=p1->next; if(strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0){ cout<<”===================================修改信息 =================================n“; cout<<” 1-修改缺課時間 n“; cout<<” 2-修改學生姓名 n“; cout<<” 3-修改課程名稱 n“; cout<<” 4-修改第幾節缺課 n“; cout<<” 5-修改遲到次數n“; cout<<” 6-修改早退次數n“; cout<<” 7-修改請假次數n“; cout<<” 8-修改曠課次數nn“; cout<<”==================================n“; cin>>k; switch(k) { case 1: cout<<”請輸入新的缺課時間:“; cin>>p1->time; break; case 2: cout<<”請輸入新的學生姓名:“; cin>>p1->name; break; case 3: cout<<”請輸入新的課程名稱:“; cin>>p1->lesson_name; break; case 4: cout<<”請輸入新的缺課節次:“; cin>>p1->lesson_time; break; case 5: cout<<”請輸入新的遲到次數:“; cin>>p1->chidao_num; break; case 6: cout<<”請輸入新的早退次數:“; cin>>p1->zaotui_num; break; case 7: cout<<”請輸入新的請假次數:“; cin>>p1->qingjia_num; break; case 8: cout<<”請輸入新的曠課次數:“; cin>>p1->kuangke_num; break; } } return head; } struct student *creat(){ int i,b; struct student *head,*p1,*p2; cout<<”請輸入要建立資料的學生人數:“; cin>>b; head=p2=NULL; p1=(struct student *)malloc(LEN); cout<<”【輸入格式:缺課時間(空格)學生姓名(空格)課程名稱(空格)第幾節(空格)遲到次數(空格)早退次數(空格)請假次數(空格)曠課次數】n“; cout<<”請輸入第1名學生信息:“; cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num; head=p1; p2=p1; student_num+=1; for(i=1;i { p1=(struct student*)malloc(LEN); cout<<”請輸入第“< cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num; p2->next=p1; p2=p1; student_num+=1; } p2->next=NULL; return head;} void print(struct student *head){ struct student *p;p=head;if(p==NULL) cout<<”沒有學生信息n“;while(p!=NULL) { cout<<”缺課時間:“< time<<”學生姓名:“< lesson_name<<”節次:“< lesson_time< zaotui_num<<請假次數:”< qingjia_num<<曠課次數:“< kuangke_num< p=p->next;} } struct student *tongji_lesson(struct student *head){ struct student *p1,*p2,*p3;char lesson[50];long look_time1,look_time2;int xunhuan_num=0;p3=(struct student *)malloc(LEN);if(head==NULL){ cout<<”沒有學生信息“; return(head);} p1=head;p2=p1->next;while(xunhuan_num while(p2!=NULL) { if(p2->kuangke_num>p1->kuangke_num) { p3->chidao_num=p2->chidao_num; p3->kuangke_num=p2->kuangke_num; p3->qingjia_num=p2->qingjia_num; p3->zaotui_num=p2->zaotui_num; p3->lesson_time=p2->lesson_time; p3->time=p2->time; strcpy(p3->lesson_name,p2->lesson_name); strcpy(p3->name,p2->name); p2->chidao_num=p1->chidao_num; p2->kuangke_num=p1->kuangke_num; p2->qingjia_num=p1->qingjia_num; p2->zaotui_num=p1->zaotui_num; p2->lesson_time=p1->lesson_time; p2->time=p1->time; strcpy(p2->lesson_name,p1->lesson_name); strcpy(p2->name,p1->name); p1->chidao_num=p3->chidao_num; p1->kuangke_num=p3->kuangke_num; p1->qingjia_num=p3->qingjia_num; p1->zaotui_num=p3->zaotui_num; p1->lesson_time=p3->lesson_time; p1->time=p3->time; strcpy(p1->lesson_name,p3->lesson_name); strcpy(p1->name,p3->name); } p1=p2; p2=p2->next; } p1=head; p2=p1->next; xunhuan_num++;} cout<<”請輸入要查看的學科名稱:“;cin>>lesson;cout<<”請輸入要查看的時間范圍【輸入格式:時間(空格)時間】“;cin>>look_time1>>look_time2;p1=head; while(p1!=NULL){ if(strcmp(lesson,p1->lesson_name)==0&&look_time1<=p1->time&&p1->time<=look_time2) cout<<”學生姓名:“< name<<” 曠課次數:“< kuangke_num< p1=p1->next;} return head;} struct student *tongji_student(struct student *head){ struct xueke a[10];int n,i,j,zhongjian;struct student *p1;char zhongjian_name[50];long look_time1,look_time2;if(head==NULL){ cout<<”沒有學生信息n“;return head; } cout<<”請輸入一共的學科數:“;cin>>n;for(i=0;i cout<<”請輸入第“<>a[i].xueke_name;a[i].people_num=0; }