學(xué)生成績管理系統(tǒng)設(shè)計報告.doc
《學(xué)生成績管理系統(tǒng)設(shè)計報告.doc》由會員分享,可在線閱讀,更多相關(guān)《學(xué)生成績管理系統(tǒng)設(shè)計報告.doc(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
南 京 理 工 大 學(xué) 數(shù)據(jù)庫課程設(shè)計 作 者: 學(xué) 號: 學(xué)院(系): 計算機(jī)科學(xué)與工程學(xué)院 專 業(yè): 網(wǎng)絡(luò)工程 題 目: 學(xué)生成績管理系統(tǒng) 指導(dǎo)老師: 衷宜 2013 年 9 月 目錄 一、概述 3 二、需求分析4 三、系統(tǒng)設(shè)計9 四、系統(tǒng)實施15 五、系統(tǒng)測試29 六、收獲和體會 33 七、附錄34 八、參考文獻(xiàn)34 一、概述 1、項目背景 當(dāng)今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復(fù)雜的信息管理,計算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。目前隨著個大高校的擴(kuò)招,在校學(xué)生數(shù)量龐大。擁有一款好的學(xué)習(xí)成績管理系統(tǒng)軟件,對于加強(qiáng)對在校生的成績管理起到積極作用。并且,可以為在校生隨時查閱自己的成績信息、教師錄入成績、管理員進(jìn)行信息維護(hù)等提供方便,為學(xué)校節(jié)省大量人力資源本系統(tǒng)就是為了管理好學(xué)生成績信息而設(shè)計的。 2、編寫目的 首先,學(xué)生成績管理是一個學(xué)校不可缺少的部分,它的內(nèi)容對于學(xué)校的管理者和學(xué)生以及學(xué)生家長來說都至關(guān)重要,所以一個良好的學(xué)生成績管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。學(xué)生成績管理系統(tǒng)對學(xué)校加強(qiáng)學(xué)生成績管理有著極其重要的作用.作為計算機(jī)應(yīng)用的一部分,使用計算機(jī)對學(xué)生成績信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn)。例:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高管理者管理的效率,也是學(xué)校走向科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)設(shè)計這樣一套學(xué)生成績管理軟件成為很有必要的事情。其次,初步掌握軟件開發(fā)的流程,熟悉delphi與SQL的使用方法,達(dá)到能夠較好的運(yùn)用兩者制成能實現(xiàn)初步功能的管理系統(tǒng),鍛煉自己的動手能力,同時,在合作中更好的與同學(xué)交流,這些都是必要的。最后,自己動手編程序,能更好的提升對本專業(yè)的愛好,初步了解本專業(yè)的發(fā)展方向,為將來的畢業(yè)與找工作奠定基礎(chǔ)。3、軟件定義 該學(xué)生管理管理信息系統(tǒng)是基于Internet/Intranet及C++技術(shù),建立以以數(shù)據(jù)庫為后臺核心應(yīng)用、以服務(wù)為目的信息平臺,對資源進(jìn)行科學(xué)的加工整序和管理維護(hù),為教學(xué)和科學(xué)研究提供文獻(xiàn)信息保障和提高管理學(xué)生成績的效率而設(shè)計的系統(tǒng)。 4、開發(fā)環(huán)境 本系統(tǒng)采用windows7,XP作為操作平臺,前臺開發(fā)工具采用delphi7.0,數(shù)據(jù)庫管理采用SQL SERVER 2008。 二、需求分析 1、問題的提出 為了提高高校學(xué)生成績信息的管理效率,方便學(xué)生和教師對學(xué)生成績信息進(jìn)行查詢、方便學(xué)校里面管理員去管理和查詢學(xué)生信息,建立一個學(xué)生成績管理系統(tǒng),使學(xué)生信息管理工作規(guī)范化,系統(tǒng)化,程序化,避免學(xué)生成績管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查詢和修改學(xué)生信息是必須而且十分迫切的工作。本次課程設(shè)計題目為《學(xué)生成績管理系統(tǒng)》,涉及成績管理系統(tǒng)的登錄界面、老師對學(xué)生成績的查詢、學(xué)生對學(xué)生成績的查詢、教務(wù)員對學(xué)生成績的增刪改查統(tǒng)計等內(nèi)容。本功能實現(xiàn)對學(xué)生信息、教師信息情況信息的管理和統(tǒng)計、課程信息和成績信息查看及維護(hù)。 2、系統(tǒng)的業(yè)務(wù)功能分析 學(xué)生成績管理系統(tǒng)應(yīng)當(dāng)將學(xué)生與教務(wù)員區(qū)分開來,因為增、刪、改、統(tǒng)計的權(quán)限應(yīng)當(dāng)只有教務(wù)員才擁有,學(xué)生只能查詢與自己相關(guān)的記錄,老師查詢自己所授課程的記錄,而教務(wù)員則錄入數(shù)據(jù),進(jìn)行增刪改與統(tǒng)計。另外,在日常學(xué)習(xí)生活中,為了方便老師和同學(xué)了解情況,需要提供平均分、最高(低)分、排名等供老師和學(xué)生查詢。 具體分析:按照教師,學(xué)生,管理員三種角色設(shè)計系統(tǒng)功能。 ①學(xué)生要能夠查詢自己所學(xué)課程的成績,查看自己不同課程的成績、GPA以及排名,查看個人信息、修改個人登錄密碼等。 ②教師要實現(xiàn)對自己所教授課程中所有學(xué)生成績的查詢、以及對自己所教班上同學(xué)的各分?jǐn)?shù)段成績單人數(shù)成績的查詢(排序功能),個人資料的修改和修改個人登錄密碼等。 ③管理員要能夠?qū)崿F(xiàn)對管理員、教師、學(xué)生基本信息的增加、刪除、修改、查詢以及實現(xiàn)對學(xué)生成績的增加、刪除(按學(xué)號、按班級、按課程號、按院系)、修改、查詢(按學(xué)號、按班級、按課程號、按院系)和數(shù)據(jù)統(tǒng)計分析以及對結(jié)果提供打印功能等。 個人信息 3、系統(tǒng)業(yè)務(wù)流程分析修改密碼 菜 單 退出 管理員 管理員信息 教師信息 信 息 管 理 登陸次數(shù)必須小于三 學(xué)生信息 成績查詢 成 績 管 理 成績管理 成績統(tǒng)計 系統(tǒng)登錄 學(xué)生管理系統(tǒng) 顯示制作人和版本 幫 助 個人信息 修改密碼 菜 單 退出 成 績 管 理 教師 成績查詢 顯示制作人和版本 幫 助 個人信息 修改密碼 菜 單 退出 學(xué)生 成績查詢 成 績 管 理 顯示制作人和版本 幫 助 4、完成的功能 系統(tǒng)的功能模塊劃分 《學(xué)生成績管理系統(tǒng)》包括八個模塊:系統(tǒng)登錄、學(xué)生基本信息管理、教師基本信息管理、管理員基本信息管理、學(xué)生成績信息查詢、學(xué)生成績信息管理,學(xué)生成績信息統(tǒng)計,系統(tǒng)退出。 1、系統(tǒng)登錄模塊 (1)用戶人員在登錄界面中輸入用戶名與密碼。 (2)通過用戶名與數(shù)據(jù)庫里的用戶表相比配,將學(xué)生、教師與管里員區(qū)分開,三者各自進(jìn)入自己的頁面,初始密碼為:000000,登錄成功后,可以修改密碼。 (3)三者擁有各自權(quán)限,分別擁有不同的功能。 2、學(xué)生基本信息管理:管理員對所有學(xué)生信息進(jìn)行增刪改查,學(xué)生只能查詢自己的基本信息。 3、教師基本信息管理:管理員對所有教師信息進(jìn)行增刪改查,學(xué)生只能查詢自己的基本信息。 4、管理員基本信息管理:管理員對所有管理員信息進(jìn)行增刪改查。 5、學(xué)生成績信息查詢:管理員查詢功能:可以按學(xué)號、班級、院系、教師工號等對學(xué)生成績分別進(jìn)行查詢、查某門課程的排名、最高分、最低分、績點(diǎn)、不及格人數(shù)等、查某班級某科目分?jǐn)?shù)段的人數(shù)。教師查詢功能:查詢所教課程的最高分、最低分、各分?jǐn)?shù)段人數(shù)、不及格人數(shù)等。學(xué)生查詢功能:查某學(xué)生所學(xué)課程的排名、最高分、最低分、績點(diǎn)、不及格人數(shù)等。 6、學(xué)生成績信息管理:管理員對學(xué)生成績進(jìn)行增刪改查。 7、學(xué)生成績信息統(tǒng)計:按學(xué)號、班級、院系、教師工號等分別進(jìn)行統(tǒng)計,并對結(jié)果提供打印能。 8、退出程序:退出該程序。 5、數(shù)據(jù)流程圖 數(shù)據(jù)流圖 信息管理(操作員、教師、學(xué)生) 查詢個人信息 管 理 員 學(xué) 生 成績管理(增刪改查) 學(xué)生成績管理系統(tǒng) 查詢個人成績、GPA 成績統(tǒng)計、打印 查詢課程成績情況 查詢個人信息 教 師 6、數(shù)據(jù)字典 (1).數(shù)據(jù)流 ①學(xué)院信息,包括學(xué)院編號,學(xué)院名稱等信息。 ②班級信息,包括班級編號,學(xué)院編號等信息。 ③學(xué)生信息,包括學(xué)生編號,學(xué)生姓名,性別,班級,聯(lián)系方式等信息。 ④教師信息,包括教師工號,教師姓名,性別,學(xué)院編號,聯(lián)系方式等信息。 ⑤管理員信息,包括管理員編號,管理員姓名,性別等信息。 ⑥用戶信息,包括用戶名,登錄密碼等信息。 ⑦課程信息,包括課程號,課程名稱,學(xué)分,學(xué)時,教師工號等信息。 (2).數(shù)據(jù)存儲 ①成績表信息,包括學(xué)生編號,課程編號,課程績點(diǎn),課程成績等信息。 ②課程安排信息,包括課程編號,課程名稱,教師工號等信息。 administror E/R圖: admininame adminino owns classname owns department classno class departid owns owns userno tno username owns departid sname sno teacher owns tname user owns sex student teach of credit Study of departid sex phone phone ctime course grade of grade tno cno cname owns GPA score sno cname cno 三、系統(tǒng)設(shè)計 1、數(shù)據(jù)表: (1)、數(shù)據(jù)庫的關(guān)系模式: student(sno, sname, sex, classno, departed, phone); teacher(tno, tname, departid, sex, phone); course(cno, cname, credit, ctime, tno); score(sno, sname, cno, cname, grade, GPA); administror(adminino,adimniname,sex); department(departed, departname); class(departed, classno, classname); user(userno,password); 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 sno char(10) Yes NOT NULL 學(xué)號 sname char(20) no NOT NULL 姓名 Noname sex char(10) no NOT NULL 性別 classno char(10) no NOT NULL 班級號 (外鍵) departid char(10) no NOT NULL 院系號 (外鍵) phone char(20) no NULL 聯(lián)系方式 (2)、表的物理設(shè)計: 表一學(xué)生信息表student Create table student( sno char(10) primary key, sname char(20) not null default ‘Noname’, sex char(10) not null , classno char(10) foreign key references class(classno) , departid char(10) foreign key references department(departid), phone char(20) ); 表二教師信息表teacher 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 tno char(10) Yes NOT NULL 教師工號 tname char(10) no NOT NULL 教師姓名 Noname departid char(10) no NOT NULL 院系號 (外鍵) sex char(10) no NOT NULL 性別 phone char(11) no NULL 聯(lián)系方式 Create table student( tno char(10) primary key, tname char(10) not null default ‘Noname’ , sex char(10) not null , departid char(10) forgein key refrences department(departid), phone char(20) ); 表三課程信息表course 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 cno char(10) Yes NOT NULL 課程號 cname char(20) no NOT NULL 課程名 credit char(10) no NOT NULL 學(xué)分 ctime char(10) no NOT NULL 學(xué)時數(shù) tno char(10) Yes NOT NULL 教師工號 Create table student( cno char(10) , cname char(20) not null, credi char(10) not null , ctime char(10) not null, tno char(10) , primary key(cno, tno) ); 表四學(xué)生成績表score 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 sno char(10) Yes NOT NULL 學(xué)號 sname char(20) no NOT NULL 姓名 Noname cno char(10) Yes NOT NULL 課程號 cname char(20) no NOT NULL 課程名 grade char(10) no NOT NULL 成績 GPA Float no NULL GPA Create table score ( sno char(10) , sname char(20) not null, cno char(10), cname char(20) not null, Score char(10) not null, GPA float, primary key(sno,cno) ); 表五管理員信息表administror 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 adminino char(10) Yes NOT NULL 工號 admininame Char(20) no NOT NULL 姓名 Noname sex char(10) no NOT NULL 性別 Create table student( adminino char(10) primary key, admininame char(20) not null default ‘Noname’, sex char(10) not null ); Adminino admininame sex 200000 張娜 女 200001 王強(qiáng) 男 表六院系表department 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 departid char(10) yes NOT NULL 院系號 departname char(20) no NOT NULL 院系名 Create table student( departid char(10) primary key, departname char(20) not null ); 表七班級表class 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 departid char(10) no NOT NULL 院系號 (外鍵) classno char(10) yes NOT NULL 班級號 classname char(10) no NOT NULL 班級名稱 Create table class ( departid char(10) foreign key references department(departid), classno char(10)primary key , classname char(10) not null ); 表八用戶表user 屬性名 數(shù)據(jù)類型 是否為主鍵 是否為空 說明 缺省值 userno Char(10) yes NOT NULL 用戶名 password Char(6) no NOT NULL 密碼 ‘000000’ Create table user( userno char(10) primary key, password char(6)not null ); 2、視圖,索引,數(shù)據(jù)庫權(quán)限:這些在這個學(xué)生成績管理系統(tǒng)中沒有用到。 3、軟件功能設(shè)計 (1)、系統(tǒng)的結(jié)構(gòu)圖 修改密碼 退出 成績查詢 顯示制作人和版本 退出 修改密碼 成績查詢 個人信息 顯示制作人和版本 個人信息 幫 助 成 績 管 理 菜 單 幫 助 菜 單 成 績 管 理 成績統(tǒng)計 顯示制作人和版本 成績管理 學(xué)生信息 成績查詢 管理員信息 教師信息 退出 修改密碼 個人信息 幫 助 成 績 管 理 信 息 管 理 菜 單 學(xué)生 教師 管理員 系統(tǒng)登錄 學(xué)生管理系統(tǒng) 登陸次數(shù)必須小于三 (2)、功能表: 學(xué) 生 成 績 管 理 系 統(tǒng) 身份 功能模塊 細(xì)分模塊 功能具體描述 管 理 員 菜單 個人信息 顯示登錄管理員的個人信息(工號、姓名、性別) 修改密碼 管理員修改自己的登錄密碼 退出 管理員退出整個系統(tǒng) 信息管理 管理員信息 對所有管理員的信息進(jìn)行增刪改查 教師信息 對所有教師的信息進(jìn)行增刪改查 學(xué)生信息 對所有學(xué)生的信息進(jìn)行增刪改查 成績管理 成績查詢 可以按學(xué)號、班級、院系、教師工號等分別進(jìn)行查詢 查某學(xué)生所學(xué)課程的排名、最高分、最低分、績點(diǎn)、不及格人數(shù)等 查某班級某科目分?jǐn)?shù)段的人數(shù) 成績管理 對學(xué)生成績進(jìn)行增刪改查 成績統(tǒng)計 按學(xué)號、班級、院系、教師工號等分別進(jìn)行統(tǒng)計 對結(jié)果提供打印能 幫助 顯示該系統(tǒng)的制作人和版本 教 師 菜單 個人信息 顯示登錄教師個人信息(工號、姓名、性別、院系號、聯(lián)系方式) 修改密碼 教師修改自己的登錄密碼 退出 教師退出整個系統(tǒng) 成績管理 成績查詢 查詢所教課程的最高分、最低分、各分?jǐn)?shù)段人數(shù)、不及格人數(shù)等 成績統(tǒng)計 按學(xué)號、班級、院系、教師工號等分別進(jìn)行統(tǒng)計 幫助 顯示該系統(tǒng)的制作人和版本 學(xué) 生 菜單 個人信息 顯示登錄學(xué)生個人信息(學(xué)號、姓名、性別、班級號、院系號、聯(lián)系方式) 修改密碼 學(xué)生修改自己的登錄密碼 退出 學(xué)生退出整個系統(tǒng) 成績管理 成績查詢 查某學(xué)生所學(xué)課程的排名、最高分、最低分、績點(diǎn)、不及格人數(shù)等 幫助 顯示該系統(tǒng)的制作人和版本 (3)、功能描述:同功能表。 四、系統(tǒng)實施 (1)、系統(tǒng)的界面設(shè)計: 1、登陸界面 2、密碼修改 3、個人信息 4、操作頁面 5、信息管理 6、成績查詢 7、成績管理 8、成績統(tǒng)計 (2)、事件的設(shè)計過程: ①運(yùn)行軟件進(jìn)入主界面,在主界面登錄進(jìn)入各自操作主界面。 ②學(xué)生登錄后可在登錄界面進(jìn)行成績查詢、個人信息查詢及密碼修改。 ③教師登錄后可在登錄界面進(jìn)行功能選擇來完成自己所選擇的查詢與維護(hù)。 ④管理員登錄后可在登錄界面點(diǎn)擊各頁面標(biāo)簽選擇功能進(jìn)入相應(yīng)頁面。 (3)、主要代碼描述: 1、登錄 procedure TfrmLogin.btnOKClick(Sender: TObject); var sSQL: string; begin if Trim(Edit1.Text) = then begin gf_MessageBox(請?zhí)顚懹脩裘? MB_OK); Edit1.SetFocus; Exit; end else if Trim(Edit2.Text) = then begin gf_MessageBox(請?zhí)顚懨艽a!, MB_OK); Edit2.SetFocus; Exit; end; iErrorCount := iErrorCount + 1; sSQL := select a.userno,a.password,b.tname,b.usertype + from [user] a + left join (select tno,tname,1 as UserType from teacher + union all + select sno,sname,2 from student + union all + select adminino,admininame,0 from administror) b on a.userno = b.tno + where a.userno = + QuotedStr(Trim(Edit1.Text)) + and a.password = + QuotedStr(Trim(Edit2.Text)); gf_OpenSQL(sSQL, DM.aqPublic); if DM.aqPublic.IsEmpty then begin if iErrorCount >= 3 then begin gf_MessageBox(賬號或密碼錯誤三次,程序自動關(guān)閉!,MB_OK); Application.Terminate; end; gf_MessageBox(賬號或密碼錯誤,請重試!還剩 + IntToStr(3 - iErrorCount) + 次將自動關(guān)閉程序!,MB_OK); Edit1.SelectAll; Edit1.SetFocus; end else begin gr_LoginUser.sUserID := DM.aqPublic.FieldByName(userno).AsString; gr_LoginUser.sUserName := DM.aqPublic.FieldByName(tname).AsString; gr_LoginUser.iType := DM.aqPublic.FieldByName(usertype).AsInteger; SetLoginInfo; Self.Hide; Application.CreateForm(TfrmStuSource, frmStuSource); case gr_LoginUser.iType of 0: begin frmStuSource.sbMain.Panels[0].Text := 工號: + gr_LoginUser.sUserID; frmStuSource.sbMain.Panels[1].Text := 姓名: + gr_LoginUser.sUserName; frmStuSource.sbMain.Panels[2].Text := 登錄身份:管理員; end; 1: begin frmStuSource.S1.Visible := False; frmStuSource.N3.Visible := False; frmStuSource.N10.Visible := False; frmStuSource.sbMain.Panels[0].Text := 工號: + gr_LoginUser.sUserID; frmStuSource.sbMain.Panels[1].Text := 姓名: + gr_LoginUser.sUserName; frmStuSource.sbMain.Panels[2].Text := 登錄身份:教師; end; 2: begin frmStuSource.S1.Visible := False; frmStuSource.N10.Visible := False; frmStuSource.N11.Visible := False; frmStuSource.sbMain.Panels[0].Text := 學(xué)號: + gr_LoginUser.sUserID; frmStuSource.sbMain.Panels[1].Text := 姓名: + gr_LoginUser.sUserName; frmStuSource.sbMain.Panels[2].Text := 登錄身份:學(xué)生; end; end; frmStuSource.ShowModal; end; end; procedure TfrmLogin.FormShow(Sender: TObject); begin iErrorCount := 0; end; procedure TfrmLogin.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 13 then Edit2.SetFocus; end; procedure TfrmLogin.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 13 then btnOKClick(Sender); end; 2、修改密碼 function TfrmChangPwd.ChangePwd: Boolean; var sSQL: string; OldPwd,NewPwd: string; begin Result := True; if Trim(edtNewPwd1.Text) = Trim(edtNewPwd2.Text) then begin gf_MessageBox(兩次輸入的新密碼不相同,MB_OK); edtNewPwd2.SetFocus; Result := False; Exit; end; OldPwd := Trim(edtOldPsw.Text); NewPwd := Trim(edtNewPwd1.Text); sSQL := update [user] set password = + QuotedStr(NewPwd) + where userno = + QuotedStr(gr_LoginUser.sUserID); gf_ExecSQL(sSQL,DM.aqSQL); end; procedure TfrmChangPwd.btnOKClick(Sender: TObject); begin if not ChangePwd then begin gf_MessageBox(密碼修改成功!, MB_OK); Exit; end; end; 3、查詢數(shù)據(jù) procedure TfrmScoreMange.SearchData; var sSQL: string; begin sSQL := select a.sno,a.sname,b.sex,b.phone,a.cno,a.cname,a.score,a.GPA,d.departname,c.classname + from score a + left join student b on a.sno = b.sno + left join class c on b.classno = c.classno + left join department d on b.departid = d.departid + where 1 = 1; case gr_LoginUser.iType of 0: begin end; 1: begin sSQL := sSQL + and exists(select 1 from course where cno = a.cno and tno = + QuotedStr(gr_LoginUser.sUserID) + ); end; 2: begin sSQL := sSQL + and a.sno = + QuotedStr(gr_LoginUser.sUserID); end; end; if Trim(edtSNo.Text) <> then sSQL := sSQL + and a.sno = + QuotedStr(Trim(edtSNo.Text)); if Trim(edtSName.Text) <> then sSQL := sSQL + and a.sName = + QuotedStr(Trim(edtSName.Text)); if Trim(edttno.Text) <> then sSQL := sSQL + and exists(select * from course where cno = a.cno and tno = + QuotedStr(Trim(edttno.Text)) + ); if Trim(cbxSDepart.Text) <> 全部 then sSQL := sSQL + and d.departname = + QuotedStr(Trim(cbxSDepart.Text)); if Trim(cbxSClass.Text) <> 全部 then sSQL := sSQL + and c.ClassName = + QuotedStr(Trim(cbxSClass.Text)); gf_OpenSQL(sSQL, aqMaster); end; 4、增加記錄 procedure TfrmScoreMange.AddData; var sSQL: string; fScore: Double; begin if Trim(edtNo.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫學(xué)號!,MB_OK); edtNo.SetFocus; Exit; end else if Trim(edtName.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫姓名!,MB_OK); edtName.SetFocus; Exit; end else if Trim(edtCourse.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫課程號!,MB_OK); edtCourse.SetFocus; Exit; end else if Trim(edtCourseName.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫課程名稱!,MB_OK); edtCourseName.SetFocus; Exit; end else if Trim(edtScore.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫成績!,MB_OK); edtScore.SetFocus; Exit; end else if Trim(edtGPA.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時未填寫平均績點(diǎn)!,MB_OK); edtGPA.SetFocus; Exit; end; if not TryStrToFloat(Trim(edtScore.Text),fScore) then begin gf_MessageBox(成績輸入不合法,請重輸!,MB_OK); edtScore.SetFocus; Exit; end else if not TryStrToFloat(Trim(edtGPA.Text),fScore) then begin gf_MessageBox(平均績點(diǎn)輸入不合法,請重輸!,MB_OK); edtGPA.SetFocus; Exit; end; if gf_MessageBox(是否新增所輸數(shù)據(jù)?,MB_YESNO + MB_ICONWARNING) = IDNO then Exit; sSQL := sSQL + insert into score(sno,sname,cno,cname,score,GPA) + values(%s,%s,%s,%s,%s,%s); sSQL := Format(sSQL,[QuotedStr(Trim(edtNo.Text)),QuotedStr(Trim(edtName.Text)),QuotedStr(Trim(edtCourse.Text)) ,QuotedStr(Trim(edtCourseName.Text)),QuotedStr(Trim(edtScore.Text)),QuotedStr(Trim(edtGPA.Text))]); try gf_ExecSQL(sSQL,aqPublic); except on E: Exception do begin gf_MessageBox(保存數(shù)據(jù)發(fā)生錯誤。錯誤信息: + E.Message,MB_OK); end; end; SearchData; end; 5、刪除記錄 procedure TfrmScoreMange.DelData; var sSQL: string; begin if (aqMaster.IsEmpty) or (not aqMaster.Active) then begin gf_MessageBox(沒有數(shù)據(jù)可以刪除!,MB_OK + MB_ICONWARNING); Exit; end; if gf_MessageBox(刪除數(shù)據(jù)后將不能恢復(fù),是否刪除?,MB_YESNO + MB_ICONWARNING) = IDNO then Exit; sSQL := delete from score where sno = + QuotedStr(aqMaster.FieldByName(sno).AsString) + and cno = + QuotedStr(aqMaster.FieldByName(cno).AsString); gf_ExecSQL(sSQL,aqPublic); SearchData; end; 6、修改記錄 procedure TfrmScoreMange.EditData; var sSQL: string; sno: string; begin if (aqMaster.IsEmpty) or (not aqMaster.Active) then begin gf_MessageBox(沒有數(shù)據(jù)可以修改!,MB_OK + MB_ICONERROR); Exit; end; sno := aqMaster.FieldByName(sno).AsString; sSQL := update score set sno = %s,sname = %s, cno = %s, cname = %s, score = %s, GPA = %s where sno = + QuotedStr(aqMaster.FieldByName(sno).AsString) + and cno = + QuotedStr(aqMaster.FieldByName(cno).AsString); sSQL := Format(sSQL,[QuotedStr(Trim(edtNo.Text)),QuotedStr(Trim(edtName.Text)),QuotedStr(Trim(edtCourse.Text)) ,QuotedStr(Trim(edtCourseName.Text)),QuotedStr(Trim(edtScore.Text)),QuotedStr(Trim(edtGPA.Text))]); try gf_ExecSQL(sSQL,aqPublic); except on E: Exception do begin gf_MessageBox(修改數(shù)據(jù)發(fā)生錯誤。錯誤信息: + E.Message,MB_OK); end; end; SearchData; aqMaster.Locate(sno,sno,[]); end; 7、統(tǒng)計 procedure TfrmScoreStat.StatData(iType: Integer); var sSQL: string; sCondition1,sCondition2: string; i: Integer; begin for i := 0 to dgMaster.Columns.Count - 1 do dgMaster.Columns[i].Visible := True; sSQL := from score a + left join student b on a.sno = b.sno + left join class c on b.classno = c.classno + left join department d on b.departid = d.departid ; case iType of 1: begin sCondition1 := select a.sno,a.sname,c.classname,d.departname,a.cno,a.cname,max(a.score) as MaxScore, + min(a.score) as MinScore,convert(decimal(18,2),avg(convert(float,a.score))) as avgScore, + sum(case when convert(float,a.score) <60 then 0 else 1 end) as Fail ; sCondition2 := group by a.sno,a.sname,c.classname,d.departname,a.cno,a.cname; end; 2: begin dgMaster.Columns[0].Visible := False; dgMaster.Columns[1].Visible := False; sCondition1 := select c.classname,d.departname,a.cno,a.cname,max(a.score) as MaxScore, + min(a.score) as MinScore,convert(decimal(18,2),avg(convert(float,a.score))) as avgScore, + sum(case when convert(float,a.score) <60 then 0 else 1 end) as Fail ; sCondition2 := group by c.classname,d.departname,a.cno,a.cname; end; 3: begin dgMaster.Columns[0].Visible := False; dgMaster.Columns[1].Visible := False; dgMaster.Columns[2].Visible := False; sCondition1 := select d.departname,a.cno,a.cname,max(a.score) as MaxScore, + min(a.score) as MinScore,convert(decimal(18,2),avg(convert(float,a.score))) as avgScore, + sum(case when convert(float,a.score) <60 then 0 else 1 end) as Fail ; sCondition2 := group by d.departname,a.cno,a.cname; end; 4: begin dgMaster.Columns[0].Visible := False; dgMaster.Columns[1].Visible := False; dgMaster.Columns[2].Visible := False; dgMaster.Columns[3].Visible := False; sCondition1 := select a.cno,a.cname,max(a.score) as MaxScore, + min(a.score) as MinScore,convert(decimal(18,2),avg(convert(float,a.score))) as avgScore, + sum(case when convert(float,a.score) <60 then 0 else 1 end) as Fail ; sCondition2 := group by a.cno,a.cname; end; end; sSQL := sCondition1 + sSQL + sCondition2; gf_OpenSQL(sSQL, aqMaster); end; 8、打印 procedure CopyDbDataToExcel(Args: array of const); var iCount, jC- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 學(xué)生 成績管理系統(tǒng) 設(shè)計 報告
鏈接地址:http://www.3dchina-expo.com/p-6529254.html