學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告.doc
《學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告.doc(37頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
南 京 理 工 大 學(xué) 數(shù)據(jù)庫(kù)課程設(shè)計(jì) 作 者: 學(xué) 號(hào): 學(xué)院(系): 計(jì)算機(jī)科學(xué)與工程學(xué)院 專(zhuān) 業(yè): 網(wǎng)絡(luò)工程 題 目: 學(xué)生成績(jī)管理系統(tǒng) 指導(dǎo)老師: 衷宜 2013 年 9 月 目錄 一、概述 3 二、需求分析4 三、系統(tǒng)設(shè)計(jì)9 四、系統(tǒng)實(shí)施15 五、系統(tǒng)測(cè)試29 六、收獲和體會(huì) 33 七、附錄34 八、參考文獻(xiàn)34 一、概述 1、項(xiàng)目背景 當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開(kāi)信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開(kāi)發(fā)密切相關(guān),系統(tǒng)的開(kāi)發(fā)是系統(tǒng)管理的前提。目前隨著個(gè)大高校的擴(kuò)招,在校學(xué)生數(shù)量龐大。擁有一款好的學(xué)習(xí)成績(jī)管理系統(tǒng)軟件,對(duì)于加強(qiáng)對(duì)在校生的成績(jī)管理起到積極作用。并且,可以為在校生隨時(shí)查閱自己的成績(jī)信息、教師錄入成績(jī)、管理員進(jìn)行信息維護(hù)等提供方便,為學(xué)校節(jié)省大量人力資源本系統(tǒng)就是為了管理好學(xué)生成績(jī)信息而設(shè)計(jì)的。 2、編寫(xiě)目的 首先,學(xué)生成績(jī)管理是一個(gè)學(xué)校不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的管理者和學(xué)生以及學(xué)生家長(zhǎng)來(lái)說(shuō)都至關(guān)重要,所以一個(gè)良好的學(xué)生成績(jī)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩?hù)提供充足的信息和快捷的查詢(xún)手段。學(xué)生成績(jī)管理系統(tǒng)對(duì)學(xué)校加強(qiáng)學(xué)生成績(jī)管理有著極其重要的作用.作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)信息進(jìn)行管理,具有手工管理所無(wú)法比擬的優(yōu)點(diǎn)。例:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高管理者管理的效率,也是學(xué)校走向科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開(kāi)發(fā)設(shè)計(jì)這樣一套學(xué)生成績(jī)管理軟件成為很有必要的事情。其次,初步掌握軟件開(kāi)發(fā)的流程,熟悉delphi與SQL的使用方法,達(dá)到能夠較好的運(yùn)用兩者制成能實(shí)現(xiàn)初步功能的管理系統(tǒng),鍛煉自己的動(dòng)手能力,同時(shí),在合作中更好的與同學(xué)交流,這些都是必要的。最后,自己動(dòng)手編程序,能更好的提升對(duì)本專(zhuān)業(yè)的愛(ài)好,初步了解本專(zhuān)業(yè)的發(fā)展方向,為將來(lái)的畢業(yè)與找工作奠定基礎(chǔ)。3、軟件定義 該學(xué)生管理管理信息系統(tǒng)是基于Internet/Intranet及C++技術(shù),建立以以數(shù)據(jù)庫(kù)為后臺(tái)核心應(yīng)用、以服務(wù)為目的信息平臺(tái),對(duì)資源進(jìn)行科學(xué)的加工整序和管理維護(hù),為教學(xué)和科學(xué)研究提供文獻(xiàn)信息保障和提高管理學(xué)生成績(jī)的效率而設(shè)計(jì)的系統(tǒng)。 4、開(kāi)發(fā)環(huán)境 本系統(tǒng)采用windows7,XP作為操作平臺(tái),前臺(tái)開(kāi)發(fā)工具采用delphi7.0,數(shù)據(jù)庫(kù)管理采用SQL SERVER 2008。 二、需求分析 1、問(wèn)題的提出 為了提高高校學(xué)生成績(jī)信息的管理效率,方便學(xué)生和教師對(duì)學(xué)生成績(jī)信息進(jìn)行查詢(xún)、方便學(xué)校里面管理員去管理和查詢(xún)學(xué)生信息,建立一個(gè)學(xué)生成績(jī)管理系統(tǒng),使學(xué)生信息管理工作規(guī)范化,系統(tǒng)化,程序化,避免學(xué)生成績(jī)管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢(xún)和修改學(xué)生信息是必須而且十分迫切的工作。本次課程設(shè)計(jì)題目為《學(xué)生成績(jī)管理系統(tǒng)》,涉及成績(jī)管理系統(tǒng)的登錄界面、老師對(duì)學(xué)生成績(jī)的查詢(xún)、學(xué)生對(duì)學(xué)生成績(jī)的查詢(xún)、教務(wù)員對(duì)學(xué)生成績(jī)的增刪改查統(tǒng)計(jì)等內(nèi)容。本功能實(shí)現(xiàn)對(duì)學(xué)生信息、教師信息情況信息的管理和統(tǒng)計(jì)、課程信息和成績(jī)信息查看及維護(hù)。 2、系統(tǒng)的業(yè)務(wù)功能分析 學(xué)生成績(jī)管理系統(tǒng)應(yīng)當(dāng)將學(xué)生與教務(wù)員區(qū)分開(kāi)來(lái),因?yàn)樵?、刪、改、統(tǒng)計(jì)的權(quán)限應(yīng)當(dāng)只有教務(wù)員才擁有,學(xué)生只能查詢(xún)與自己相關(guān)的記錄,老師查詢(xún)自己所授課程的記錄,而教務(wù)員則錄入數(shù)據(jù),進(jìn)行增刪改與統(tǒng)計(jì)。另外,在日常學(xué)習(xí)生活中,為了方便老師和同學(xué)了解情況,需要提供平均分、最高(低)分、排名等供老師和學(xué)生查詢(xún)。 具體分析:按照教師,學(xué)生,管理員三種角色設(shè)計(jì)系統(tǒng)功能。 ①學(xué)生要能夠查詢(xún)自己所學(xué)課程的成績(jī),查看自己不同課程的成績(jī)、GPA以及排名,查看個(gè)人信息、修改個(gè)人登錄密碼等。 ②教師要實(shí)現(xiàn)對(duì)自己所教授課程中所有學(xué)生成績(jī)的查詢(xún)、以及對(duì)自己所教班上同學(xué)的各分?jǐn)?shù)段成績(jī)單人數(shù)成績(jī)的查詢(xún)(排序功能),個(gè)人資料的修改和修改個(gè)人登錄密碼等。 ③管理員要能夠?qū)崿F(xiàn)對(duì)管理員、教師、學(xué)生基本信息的增加、刪除、修改、查詢(xún)以及實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的增加、刪除(按學(xué)號(hào)、按班級(jí)、按課程號(hào)、按院系)、修改、查詢(xún)(按學(xué)號(hào)、按班級(jí)、按課程號(hào)、按院系)和數(shù)據(jù)統(tǒng)計(jì)分析以及對(duì)結(jié)果提供打印功能等。 個(gè)人信息 3、系統(tǒng)業(yè)務(wù)流程分析修改密碼 菜 單 退出 管理員 管理員信息 教師信息 信 息 管 理 登陸次數(shù)必須小于三 學(xué)生信息 成績(jī)查詢(xún) 成 績(jī) 管 理 成績(jī)管理 成績(jī)統(tǒng)計(jì) 系統(tǒng)登錄 學(xué)生管理系統(tǒng) 顯示制作人和版本 幫 助 個(gè)人信息 修改密碼 菜 單 退出 成 績(jī) 管 理 教師 成績(jī)查詢(xún) 顯示制作人和版本 幫 助 個(gè)人信息 修改密碼 菜 單 退出 學(xué)生 成績(jī)查詢(xún) 成 績(jī) 管 理 顯示制作人和版本 幫 助 4、完成的功能 系統(tǒng)的功能模塊劃分 《學(xué)生成績(jī)管理系統(tǒng)》包括八個(gè)模塊:系統(tǒng)登錄、學(xué)生基本信息管理、教師基本信息管理、管理員基本信息管理、學(xué)生成績(jī)信息查詢(xún)、學(xué)生成績(jī)信息管理,學(xué)生成績(jī)信息統(tǒng)計(jì),系統(tǒng)退出。 1、系統(tǒng)登錄模塊 (1)用戶(hù)人員在登錄界面中輸入用戶(hù)名與密碼。 (2)通過(guò)用戶(hù)名與數(shù)據(jù)庫(kù)里的用戶(hù)表相比配,將學(xué)生、教師與管里員區(qū)分開(kāi),三者各自進(jìn)入自己的頁(yè)面,初始密碼為:000000,登錄成功后,可以修改密碼。 (3)三者擁有各自權(quán)限,分別擁有不同的功能。 2、學(xué)生基本信息管理:管理員對(duì)所有學(xué)生信息進(jìn)行增刪改查,學(xué)生只能查詢(xún)自己的基本信息。 3、教師基本信息管理:管理員對(duì)所有教師信息進(jìn)行增刪改查,學(xué)生只能查詢(xún)自己的基本信息。 4、管理員基本信息管理:管理員對(duì)所有管理員信息進(jìn)行增刪改查。 5、學(xué)生成績(jī)信息查詢(xún):管理員查詢(xún)功能:可以按學(xué)號(hào)、班級(jí)、院系、教師工號(hào)等對(duì)學(xué)生成績(jī)分別進(jìn)行查詢(xún)、查某門(mén)課程的排名、最高分、最低分、績(jī)點(diǎn)、不及格人數(shù)等、查某班級(jí)某科目分?jǐn)?shù)段的人數(shù)。教師查詢(xún)功能:查詢(xún)所教課程的最高分、最低分、各分?jǐn)?shù)段人數(shù)、不及格人數(shù)等。學(xué)生查詢(xún)功能:查某學(xué)生所學(xué)課程的排名、最高分、最低分、績(jī)點(diǎn)、不及格人數(shù)等。 6、學(xué)生成績(jī)信息管理:管理員對(duì)學(xué)生成績(jī)進(jìn)行增刪改查。 7、學(xué)生成績(jī)信息統(tǒng)計(jì):按學(xué)號(hào)、班級(jí)、院系、教師工號(hào)等分別進(jìn)行統(tǒng)計(jì),并對(duì)結(jié)果提供打印能。 8、退出程序:退出該程序。 5、數(shù)據(jù)流程圖 數(shù)據(jù)流圖 信息管理(操作員、教師、學(xué)生) 查詢(xún)個(gè)人信息 管 理 員 學(xué) 生 成績(jī)管理(增刪改查) 學(xué)生成績(jī)管理系統(tǒng) 查詢(xún)個(gè)人成績(jī)、GPA 成績(jī)統(tǒng)計(jì)、打印 查詢(xún)課程成績(jī)情況 查詢(xún)個(gè)人信息 教 師 6、數(shù)據(jù)字典 (1).數(shù)據(jù)流 ①學(xué)院信息,包括學(xué)院編號(hào),學(xué)院名稱(chēng)等信息。 ②班級(jí)信息,包括班級(jí)編號(hào),學(xué)院編號(hào)等信息。 ③學(xué)生信息,包括學(xué)生編號(hào),學(xué)生姓名,性別,班級(jí),聯(lián)系方式等信息。 ④教師信息,包括教師工號(hào),教師姓名,性別,學(xué)院編號(hào),聯(lián)系方式等信息。 ⑤管理員信息,包括管理員編號(hào),管理員姓名,性別等信息。 ⑥用戶(hù)信息,包括用戶(hù)名,登錄密碼等信息。 ⑦課程信息,包括課程號(hào),課程名稱(chēng),學(xué)分,學(xué)時(shí),教師工號(hào)等信息。 (2).數(shù)據(jù)存儲(chǔ) ①成績(jī)表信息,包括學(xué)生編號(hào),課程編號(hào),課程績(jī)點(diǎn),課程成績(jī)等信息。 ②課程安排信息,包括課程編號(hào),課程名稱(chēng),教師工號(hào)等信息。 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è)計(jì) 1、數(shù)據(jù)表: (1)、數(shù)據(jù)庫(kù)的關(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ù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 sno char(10) Yes NOT NULL 學(xué)號(hào) sname char(20) no NOT NULL 姓名 Noname sex char(10) no NOT NULL 性別 classno char(10) no NOT NULL 班級(jí)號(hào) (外鍵) departid char(10) no NOT NULL 院系號(hào) (外鍵) phone char(20) no NULL 聯(lián)系方式 (2)、表的物理設(shè)計(jì): 表一學(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ù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 tno char(10) Yes NOT NULL 教師工號(hào) tname char(10) no NOT NULL 教師姓名 Noname departid char(10) no NOT NULL 院系號(hào) (外鍵) 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ù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 cno char(10) Yes NOT NULL 課程號(hào) cname char(20) no NOT NULL 課程名 credit char(10) no NOT NULL 學(xué)分 ctime char(10) no NOT NULL 學(xué)時(shí)數(shù) tno char(10) Yes NOT NULL 教師工號(hào) 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é)生成績(jī)表score 屬性名 數(shù)據(jù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 sno char(10) Yes NOT NULL 學(xué)號(hào) sname char(20) no NOT NULL 姓名 Noname cno char(10) Yes NOT NULL 課程號(hào) cname char(20) no NOT NULL 課程名 grade char(10) no NOT NULL 成績(jī) 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ù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 adminino char(10) Yes NOT NULL 工號(hào) 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ù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 departid char(10) yes NOT NULL 院系號(hào) departname char(20) no NOT NULL 院系名 Create table student( departid char(10) primary key, departname char(20) not null ); 表七班級(jí)表class 屬性名 數(shù)據(jù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 departid char(10) no NOT NULL 院系號(hào) (外鍵) classno char(10) yes NOT NULL 班級(jí)號(hào) classname char(10) no NOT NULL 班級(jí)名稱(chēng) Create table class ( departid char(10) foreign key references department(departid), classno char(10)primary key , classname char(10) not null ); 表八用戶(hù)表user 屬性名 數(shù)據(jù)類(lèi)型 是否為主鍵 是否為空 說(shuō)明 缺省值 userno Char(10) yes NOT NULL 用戶(hù)名 password Char(6) no NOT NULL 密碼 ‘000000’ Create table user( userno char(10) primary key, password char(6)not null ); 2、視圖,索引,數(shù)據(jù)庫(kù)權(quán)限:這些在這個(gè)學(xué)生成績(jī)管理系統(tǒng)中沒(méi)有用到。 3、軟件功能設(shè)計(jì) (1)、系統(tǒng)的結(jié)構(gòu)圖 修改密碼 退出 成績(jī)查詢(xún) 顯示制作人和版本 退出 修改密碼 成績(jī)查詢(xún) 個(gè)人信息 顯示制作人和版本 個(gè)人信息 幫 助 成 績(jī) 管 理 菜 單 幫 助 菜 單 成 績(jī) 管 理 成績(jī)統(tǒng)計(jì) 顯示制作人和版本 成績(jī)管理 學(xué)生信息 成績(jī)查詢(xún) 管理員信息 教師信息 退出 修改密碼 個(gè)人信息 幫 助 成 績(jī) 管 理 信 息 管 理 菜 單 學(xué)生 教師 管理員 系統(tǒng)登錄 學(xué)生管理系統(tǒng) 登陸次數(shù)必須小于三 (2)、功能表: 學(xué) 生 成 績(jī) 管 理 系 統(tǒng) 身份 功能模塊 細(xì)分模塊 功能具體描述 管 理 員 菜單 個(gè)人信息 顯示登錄管理員的個(gè)人信息(工號(hào)、姓名、性別) 修改密碼 管理員修改自己的登錄密碼 退出 管理員退出整個(gè)系統(tǒng) 信息管理 管理員信息 對(duì)所有管理員的信息進(jìn)行增刪改查 教師信息 對(duì)所有教師的信息進(jìn)行增刪改查 學(xué)生信息 對(duì)所有學(xué)生的信息進(jìn)行增刪改查 成績(jī)管理 成績(jī)查詢(xún) 可以按學(xué)號(hào)、班級(jí)、院系、教師工號(hào)等分別進(jìn)行查詢(xún) 查某學(xué)生所學(xué)課程的排名、最高分、最低分、績(jī)點(diǎn)、不及格人數(shù)等 查某班級(jí)某科目分?jǐn)?shù)段的人數(shù) 成績(jī)管理 對(duì)學(xué)生成績(jī)進(jìn)行增刪改查 成績(jī)統(tǒng)計(jì) 按學(xué)號(hào)、班級(jí)、院系、教師工號(hào)等分別進(jìn)行統(tǒng)計(jì) 對(duì)結(jié)果提供打印能 幫助 顯示該系統(tǒng)的制作人和版本 教 師 菜單 個(gè)人信息 顯示登錄教師個(gè)人信息(工號(hào)、姓名、性別、院系號(hào)、聯(lián)系方式) 修改密碼 教師修改自己的登錄密碼 退出 教師退出整個(gè)系統(tǒng) 成績(jī)管理 成績(jī)查詢(xún) 查詢(xún)所教課程的最高分、最低分、各分?jǐn)?shù)段人數(shù)、不及格人數(shù)等 成績(jī)統(tǒng)計(jì) 按學(xué)號(hào)、班級(jí)、院系、教師工號(hào)等分別進(jìn)行統(tǒng)計(jì) 幫助 顯示該系統(tǒng)的制作人和版本 學(xué) 生 菜單 個(gè)人信息 顯示登錄學(xué)生個(gè)人信息(學(xué)號(hào)、姓名、性別、班級(jí)號(hào)、院系號(hào)、聯(lián)系方式) 修改密碼 學(xué)生修改自己的登錄密碼 退出 學(xué)生退出整個(gè)系統(tǒng) 成績(jī)管理 成績(jī)查詢(xún) 查某學(xué)生所學(xué)課程的排名、最高分、最低分、績(jī)點(diǎn)、不及格人數(shù)等 幫助 顯示該系統(tǒng)的制作人和版本 (3)、功能描述:同功能表。 四、系統(tǒng)實(shí)施 (1)、系統(tǒng)的界面設(shè)計(jì): 1、登陸界面 2、密碼修改 3、個(gè)人信息 4、操作頁(yè)面 5、信息管理 6、成績(jī)查詢(xún) 7、成績(jī)管理 8、成績(jī)統(tǒng)計(jì) (2)、事件的設(shè)計(jì)過(guò)程: ①運(yùn)行軟件進(jìn)入主界面,在主界面登錄進(jìn)入各自操作主界面。 ②學(xué)生登錄后可在登錄界面進(jìn)行成績(jī)查詢(xún)、個(gè)人信息查詢(xún)及密碼修改。 ③教師登錄后可在登錄界面進(jìn)行功能選擇來(lái)完成自己所選擇的查詢(xún)與維護(hù)。 ④管理員登錄后可在登錄界面點(diǎn)擊各頁(yè)面標(biāo)簽選擇功能進(jìn)入相應(yīng)頁(yè)面。 (3)、主要代碼描述: 1、登錄 procedure TfrmLogin.btnOKClick(Sender: TObject); var sSQL: string; begin if Trim(Edit1.Text) = then begin gf_MessageBox(請(qǐng)?zhí)顚?xiě)用戶(hù)名!, MB_OK); Edit1.SetFocus; Exit; end else if Trim(Edit2.Text) = then begin gf_MessageBox(請(qǐng)?zhí)顚?xiě)密碼!, 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(賬號(hào)或密碼錯(cuò)誤三次,程序自動(dòng)關(guān)閉!,MB_OK); Application.Terminate; end; gf_MessageBox(賬號(hào)或密碼錯(cuò)誤,請(qǐng)重試!還剩 + IntToStr(3 - iErrorCount) + 次將自動(dòng)關(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 := 工號(hào): + 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 := 工號(hào): + 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é)號(hào): + 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、查詢(xún)數(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ù)時(shí)未填寫(xiě)學(xué)號(hào)!,MB_OK); edtNo.SetFocus; Exit; end else if Trim(edtName.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時(shí)未填寫(xiě)姓名!,MB_OK); edtName.SetFocus; Exit; end else if Trim(edtCourse.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時(shí)未填寫(xiě)課程號(hào)!,MB_OK); edtCourse.SetFocus; Exit; end else if Trim(edtCourseName.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時(shí)未填寫(xiě)課程名稱(chēng)!,MB_OK); edtCourseName.SetFocus; Exit; end else if Trim(edtScore.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時(shí)未填寫(xiě)成績(jī)!,MB_OK); edtScore.SetFocus; Exit; end else if Trim(edtGPA.Text) = then begin gf_MessageBox(插入數(shù)據(jù)時(shí)未填寫(xiě)平均績(jī)點(diǎn)!,MB_OK); edtGPA.SetFocus; Exit; end; if not TryStrToFloat(Trim(edtScore.Text),fScore) then begin gf_MessageBox(成績(jī)輸入不合法,請(qǐng)重輸!,MB_OK); edtScore.SetFocus; Exit; end else if not TryStrToFloat(Trim(edtGPA.Text),fScore) then begin gf_MessageBox(平均績(jī)點(diǎn)輸入不合法,請(qǐng)重輸!,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ā)生錯(cuò)誤。錯(cuò)誤信息: + 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(沒(méi)有數(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(沒(méi)有數(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ā)生錯(cuò)誤。錯(cuò)誤信息: + E.Message,MB_OK); end; end; SearchData; aqMaster.Locate(sno,sno,[]); end; 7、統(tǒng)計(jì) 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.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 學(xué)生 成績(jī)管理系統(tǒng) 設(shè)計(jì) 報(bào)告
鏈接地址:http://www.820124.com/p-6529254.html