




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.課 程 設(shè) 計 報 告 課程名稱:面向?qū)ο蟪绦蛟O(shè)計C+ 設(shè)計題目:教務管理系統(tǒng) 專 業(yè):計算機科學與技術(shù) 姓 名: 學 號: 指導教師:李 曉 虹2015 年 1 月 10 日課程設(shè)計報告模塊內(nèi)容要求:1.系統(tǒng)需求分析1.1 系統(tǒng)要求該系統(tǒng)使用Visual Basic 6.0語言進行整體系統(tǒng)設(shè)計,且擁有圖形用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫。且該系統(tǒng)使用Access來建立數(shù)據(jù)庫,Access多用于中小型企業(yè)以及人數(shù)相對不是較大的學校來設(shè)計中小型數(shù)據(jù)庫。一般學校的教務系統(tǒng)數(shù)據(jù)庫用Access來設(shè)計完全能達到要求。并通過調(diào)查,要求系
2、統(tǒng)需要有一些簡單的要求,由于操作人員的計算機知識普遍較差,要求系統(tǒng)要有良好的人機界面,讓操作人員一目了然。鑒于該系統(tǒng)的使用對象為兩大部分即教務處管理員和各班主任,要求有較好的權(quán)限管理。因為原始數(shù)據(jù)修改簡單方便,支持相對權(quán)限管理者可以直接修改數(shù)據(jù)。方便的數(shù)據(jù)查詢,支持多條件查詢。在相應的權(quán)限下,管理者刪除數(shù)據(jù)方便簡單,數(shù)據(jù)穩(wěn)定性較好。1.2需求分析本系統(tǒng)的用戶主要是教務處管理員和各班級班主任,通過該系統(tǒng)管理員可以對教師或?qū)W生的檔案信息進行查看和查詢,并且還可以對教師和學生的檔案信息、成績信息進行修改、增加或刪除等操作,這樣在一定程度上做到教務管理信息的安全性,從而使教務管理工作順利的進行。教務管
3、理中總是需要面對大量的錄入信息如學生個人檔案信息、教師個人檔案信息、學生班級基本信息、學生基本成績信息、學生成績查詢,教師檔案的查詢修改等。因此需要信息進行及時管理更新,及時了解各個管理環(huán)節(jié)中信息的變更,力求提高管理效率。由于本系統(tǒng)管理的對象較為單一,并且都是在校教師學生,況且每個數(shù)據(jù)內(nèi)容具有較強的關(guān)聯(lián)性,涉及的計算過程不是很復雜。本系統(tǒng)力求使系統(tǒng)功能界面操作簡潔明了,功能齊全且易于非計算機人員操作。根據(jù)學校教務管理系統(tǒng)需要實現(xiàn)的一些目標來分析,該系統(tǒng)將數(shù)據(jù)庫的設(shè)計可以抽象為簡單的六大類基本的數(shù)據(jù)表,即:總體教師檔案信息表、總體學生檔案信息表、學校所開設(shè)的各年級的班級及班級號信息表、各班級學生
4、信息表、各班級學生成績信息表、各年級開設(shè)的課程管理信息表。2.總體設(shè)計1.1 Visual Basic 6.0簡介Visual Basic 6.0(VB)2是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動編程語言,是一種我們常用的編程開發(fā)工具。從任何標準來說,VB都是世界上使用人數(shù)最多的語言不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語言,簡單點來說就是微軟為了更好的讓人們學習編程,應用Basic 開發(fā)語言的一套工具。VB擁有圖形用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序
5、員可以輕松的使用VB提供的組件快速建立一個應用程序。VB把過往的純代碼編程過度到可視化編程,將一些經(jīng)常要使用到的功能以一個個的控件的形式出現(xiàn),例如 Label(標簽)、TextBox(文本框)等等(都是本系統(tǒng)所用到的)。利用VB的數(shù)據(jù)訪問特性,用戶可以對包括Microsoft SQL Server、Access和其他企業(yè)數(shù)據(jù)庫在內(nèi)的大部分數(shù)據(jù)庫格式創(chuàng)建數(shù)據(jù)庫和前端應用程序,以及可調(diào)整的服務器端部件。利用ActiveX(TM)技術(shù),VB可使用如Microsoft Word、Microsoft Excel及其他Windows應用程序提供的功能,甚至可直接使用VB專業(yè)版和企業(yè)版創(chuàng)建的應用程序?qū)ο?。V
6、B 的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體 ,讓用戶用起來一目了然。它具有清晰地圖形界面,不需編寫大量代碼去描述界面元素的外觀和位置 。本系統(tǒng)所設(shè)計的頁面可以讓用戶清晰地看出所有管理的功能,讓他們簡單輕松地去完成復雜的教務管理工作。2.2教務管理系統(tǒng)總體設(shè)計圖3.詳細設(shè)計代碼:#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <set>#include <map>#include &l
7、t;list>#include <stack>#include <queue>#include <time.h>#include <cmath>using namespace std;/* 快速模匹配*/void getnext(char *p,int *next) int j,k; j=0;k=-1; next0=-1; while(j<strlen(p)-1) if(k=-1|pk=pj) j+;k+; nextj=k; else k=nextk; int KMP(char *s,char *p) int i,j; i=j=0;
8、int next100; getnext(p,next); while(i<strlen(s) if(j=-1|si=pj) i+;j+; else j=nextj; if(j=strlen(p)return i-j; return -1;class Course public: int grade; int regular_grade,exeperiment_grade,exam_paper_grade; char id10,name20; double caculateRecord();/計算綜合成績 double caculateCredit();/計算實際所得學分;/* 計算某一
9、科的綜合成績*/double Course:caculateRecord() double res; if(exeperiment_grade=-1)res=regular_grade*0.3+exam_paper_grade*0.7; else res=regular_grade*0.15+exeperiment_grade*0.15+exam_paper_grade*0.7; return res;/* 計算某一刻所得的學分*/double Course:caculateCredit() double cre,rec; rec=caculateRecord(); if(rec>90)
10、cre=grade; else if(rec>=80.0&&rec<90.0)cre=grade*0.8; else if(rec>=70.0&&rec<80.0)cre=grade*0.75; else if(rec>=60.0&&rec<70.0)cre=grade*0.6; else cre=0; return cre;class Student Course cou;/學生所選的課程 char id10,name20;/學號/姓名 int cmdid;/指令代號 int cnt;/所修課程數(shù) char
11、phonenum18,roomnum18,sex18;/電話號碼、寢室號、性別public: double credit;/學生的總學分 double totalRecord;/綜合成績 void tips();/提示內(nèi)容 void executeCmd();/執(zhí)行命令函數(shù) void getCmd(string cmd);/獲取命令參數(shù)函數(shù) void query();/查詢功能函數(shù) void caculateGrade();/計算成績 void delStu();/刪除學生功能函數(shù) void refresh();/更新數(shù)據(jù)函數(shù) void Sort(bool cmdnum);/排序功能函數(shù) vo
12、id Update(); void Exit();/* 功能使用提示*/void Student:tips() cout<<"-"<<endl; cout<<"學籍管理系統(tǒng)操作指令介紹n" cout<<" 數(shù)據(jù)錄入功能:Updaten" cout<<" 查詢功能:n 基本情況查詢:An 成績查詢:Bn"<< " 刪除功能:n 先鍵入del然后輸入學生學號/姓名即可n"<< " 排序功能:n 升序輸入:u
13、pn 降序輸入:down"<<endl; cout<<"輸入EOF表示退出此系統(tǒng)"<<endl; cout<<"-"<<endl;/* 退出系統(tǒng)*/void Student:Exit() system("exit");/* 數(shù)據(jù)寫入功能*/void Student:Update() Student stu100; Student tempstu; FILE *file; int cnt=0; file =fopen("B.txt","r
14、+"); while(1) fscanf(file,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade);/ strcpy(stucnt.id,id);/ strcpy(stucnt.cou.id,cou.id);/ strcpy(,);/ stucnt.cou.regular_grade=cou.regu
15、lar_grade;/ stucnt.cou.exam_paper_grade=cou.exam_paper_grade;/ stucnt.cou.exeperiment_grade=cou.exeperiment_grade;/ stucnt.cou.grade=cou.grade;/ cnt+; if(feof(file)break; printf("按照指定的格式輸出學生信息n"); scanf("%s%s%s%d%d%d%d",tempstu.id,tempstu.cou.id,,&tempstu.cou.
16、grade,&tempstu.cou.regular_grade,&tempstu.cou.exeperiment_grade,&tempstu.cou.exam_paper_grade); stucnt=tempstu; fprintf (file, "%s %s %s %d %d %d %dn",stu0.id,stu0.cou.id,,stu0.cou.grade,stu0.cou.regular_grade,stu0.cou.exeperiment_grade,stu0.cou.exam_paper_grade);
17、/ fclose(file);/* 將獲取的命令返回給cmdid,并根據(jù)cmdid的不同取值、 執(zhí)行相應的命令*/void Student:getCmd(string cmd) if(cmd0='A')cmdid = 1;/查詢基本情況 else if(cmd0='B')cmdid = 2;/查詢成績 else if(cmd1='e')cmdid = 3;/刪除學生 else if(cmd0='u')cmdid = 4;/升序排列 else if(cmd1='o')cmdid = 5;/降序排列 else if(c
18、md0='E'&&cmd1='O'&&cmd2='F')cmdid=6; else if(cmd0='U')cmdid=7;/數(shù)據(jù)錄入/* 查詢功能的實現(xiàn)*/void Student:query() char info100; int tmp=-1; printf("輸入學生的學號或宿舍號,查詢學生信息或宿舍信息n"); scanf("%s",id); printf("n"); FILE *file; file=fopen("A.
19、txt","r"); if(file=NULL)perror("Error opening"); else while(tmp=-1) fgets(info,100,file); tmp=KMP(info,id); if(tmp=0) puts(info); else if(tmp>=10&&tmp<=26) puts(info); tmp=-1; if(feof(file)break; fclose(file); cout<<"-"<<endl;/* 計算成績*/void
20、 Student:caculateGrade() credit=0.0; cnt=0; printf("輸入學生學號n"); char ids10; int tmp1=-1,tmp2=-1; double tmpRecord,tmpCredit; scanf("%s",ids); printf("n"); FILE *file1,*file2; file1=fopen("A.txt","r"); file2=fopen("B.txt","r"); if(f
21、ile1!=NULL&&file2!=NULL) while(tmp1=-1) fscanf(file1,"%st%st%st%st%st",id,name,sex,roomnum,phonenum); if(ids1=id1) tmp1=0; printf("學 號:%s 姓 名:%sn",ids,name);while(tmp2=-1)fscanf(file2,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_gra
22、de,&cou.exeperiment_grade,&cou.exam_paper_grade);if(ids1=id1) cnt+; tmpRecord=cou.caculateRecord(); tmpCredit=cou.caculateCredit(); printf("課程編號:%s 課程名稱:%8s 綜合成績:%.2lf 實得學分: %.2lfn",cou.id,,tmpRecord,tmpCredit); credit+=tmpCredit;if(feof(file2)break;printf("共修:%d科,實得總學
23、分為: %.2lfn",cnt,credit); /* 刪除某一個學生*/void Student:delStu() char ids10; Student stu100,stu0100; printf("輸入要刪除的學生的學號n"); scanf("%s",ids); FILE *file1,*file2,*file3,*file4; file3=fopen("A.txt","w"); file4=fopen("B.txt","w"); file1=fopen(&
24、quot;A.txt","r"); file2=fopen("B.txt","r+"); int cnt=0,cnt1=0; if(file1!=NULL&&file2!=NULL) while(1) fscanf(file1,"%st%st%st%st%st",id,name,sex,roomnum,phonenum); if(ids1!=id1) strcpy(stu0cnt1.id,id); strcpy(,name); strcpy(stu0cnt1.se
25、x,sex); strcpy(stu0cnt1.roomnum,roomnum); strcpy(stu0cnt1.phonenum,phonenum); cnt1+; if(feof(file1)break; fclose(file1); if(remove("A.txt")!=0) printf("ahgjagkajgn"); for(int i=0;i < cnt1;i +) fprintf(file3,"%s %6s %s %s %sn",stu0i.id,,stu0i.sex,stu0i.roomn
26、um,stu0i.phonenum); fclose(file3); while(1) fscanf(file2,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade); if(ids1!=id1) strcpy(stucnt.id,id); strcpy(stucnt.cou.id,cou.id); strcpy(,
27、); stucnt.cou.regular_grade=cou.regular_grade; stucnt.cou.exam_paper_grade=cou.exam_paper_grade; stucnt.cou.exeperiment_grade=cou.exeperiment_grade; stucnt.cou.grade=cou.grade; cnt+; if(feof(file2)break; if(remove("B.txt")!=0)printf("ahgkjagan"); for(int i=0;i<cnt;i+) fprintf
28、(file4, "%s %s %s %d %d %d %dn",stui.id,stui.cou.id,,stui.cou.grade,stui.cou.regular_grade,stui.cou.exeperiment_grade,stui.cou.exam_paper_grade); fclose(file4); /* 排序功能:首先按照實際學分進行排序,實際學分相等的話,按照綜合成績進行排序 cmp1采用從小到大進行排序,cmp2采用從打到小進行排序*/bool cmp1(Student a,Student b) return (a.cre
29、dit=b.credit)?a.totalRecord<b.totalRecord:a.credit<b.credit;bool cmp2(Student a,Student b) return (a.credit=b.credit)?(a.totalRecord>b.totalRecord):a.credit>b.credit;/* 學生成績或?qū)W分的升降序排列,cmdnum為true是從大到小,為false是從小到大進行排列*/void Student:Sort(bool cmdnum) FILE* file; file =fopen("B.txt"
30、;,"r"); Student stu100; int cnt=0; while(1) fscanf(file,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade); /stucnt.id=id; strcpy(stucnt.id,id); strcpy(stucnt.cou.id,cou.id); strcpy(stucnt.cou.nam
31、e,); stucnt.totalRecord=cou.caculateRecord(); stucnt.credit=cou.caculateCredit(); cnt+; if(feof(file)break; if(cmdnum)sort(stu,stu+cnt,cmp2); else sort(stu,stu+cnt,cmp1); printf("排序后結(jié)果為:n"); for(int i=0;i<cnt;i+) printf("學號:%s 編號:%s 名稱:%8s 綜合成績:%.2lf 實得學分:%.2lf 名次:%dn",stui.id,stui.cou.id,,stui.totalRecord,stui.credit,i+1); cout<<"-"<<endl;/* 執(zhí)行命令函數(shù)*/void Student:executeCmd() switch(cmdid) case 1: quer
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 柳州職業(yè)技術(shù)學院《新型材料毒理學評價》2023-2024學年第二學期期末試卷
- 眉山職業(yè)技術(shù)學院《寶石工藝學》2023-2024學年第二學期期末試卷
- 鐵嶺衛(wèi)生職業(yè)學院《食品制造與安全前沿科學》2023-2024學年第二學期期末試卷
- 德宏職業(yè)學院《果蔬加工工藝學》2023-2024學年第二學期期末試卷
- 嘉興南湖學院《休閑學概論》2023-2024學年第二學期期末試卷
- 2025年煤礦市場分析:智能化與高效利用推動行業(yè)轉(zhuǎn)型
- 2025年中考數(shù)學幾何模型歸納訓練:最值模型之胡不歸模型解讀與提分訓練(全國版)
- 遼寧廚房排煙施工方案
- 甘肅省白銀市2024-2025學年高二(上)期末生物試卷(含解析)
- 第12課 資本主義世界殖民體系的形成 課件- 課件-【知識精研】高一下學期統(tǒng)編版(2019)必修中外歷史綱要下
- 民用無人機操控員執(zhí)照(CAAC)考試復習重點題庫500題(含答案)
- 家族合伙企業(yè)合同協(xié)議書
- 工業(yè)機器人編程語言:URScript(UniversalRobots):UR機器人安全編程與碰撞檢測
- 5.1 實數(shù)指數(shù)冪-中職數(shù)學教學設(shè)計(高教版2021基礎(chǔ)模塊 下冊)
- 大學生心理安全教育(大學生安全教育課件)
- 巖土工程領(lǐng)域的前沿技術(shù)與未來發(fā)展
- 國家開放大學電大《現(xiàn)代漢語》形考任務參考答案
- 2024年天津市北辰城市資源開發(fā)利用有限公司招聘筆試沖刺題(帶答案解析)
- 四年級美術(shù)測國測復習題答案
- 資料分析(歷年國考真題)
- 畢業(yè)設(shè)計(論文)-幼苗移栽機結(jié)構(gòu)設(shè)計
評論
0/150
提交評論