database類設(shè)計學(xué)生信息管理C_第1頁
database類設(shè)計學(xué)生信息管理C_第2頁
database類設(shè)計學(xué)生信息管理C_第3頁
database類設(shè)計學(xué)生信息管理C_第4頁
database類設(shè)計學(xué)生信息管理C_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計報告課程設(shè)計題目:database類設(shè)計 (學(xué)生信息管理) 學(xué)生姓名 學(xué) 號 專 業(yè) 班 級 指導(dǎo)教師 二一一 年 十一月 二十四 日目錄目錄i1.概述11.1程序的基本功能21.2擴展功能22.課程設(shè)計的目的與要求2.1教學(xué)要求32.3教學(xué)目的33. 課程設(shè)計的內(nèi)容與安排3.1 詳細說明44.課程設(shè)計代碼55.程序運行截圖16參考文獻191 概述本課程設(shè)計是面向?qū)ο蟪绦蛟O(shè)計課程的后繼教學(xué)環(huán)節(jié),學(xué)好C+語言就必須堅持用面向?qū)ο蟮乃季S方式分析問題、解決問題,最好的方法是仿照教材編寫C+實際應(yīng)用程序。此次課程設(shè)計的題目及要求:實現(xiàn)一個簡單的學(xué)生信息管理系統(tǒng)。1.1程序的基本功能系統(tǒng)的主要功

2、能是注冊學(xué)生信息,對學(xué)生信息的增加修改,查詢等功能。1.2擴展功能 各種信息都將存入student.txt文件中。 2、課程設(shè)計的目的與要求2.1 教學(xué)目的在面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)的基礎(chǔ)上,根據(jù)軟件工程的方法與流程,在相對集中的實訓(xùn)教學(xué)時間內(nèi),通過一個功能較完整的小型應(yīng)用系統(tǒng)的設(shè)計與開發(fā),深入復(fù)習(xí)并進一步掌握面向?qū)ο蟮某绦蛟O(shè)計思想與方法。同時,作為整個實踐教學(xué)體系一部分,系統(tǒng)培養(yǎng)學(xué)生采用面向?qū)ο蟮姆椒ǚ治鰡栴}與解決問題的能力及團體組織與協(xié)作能力。2.2 教學(xué)要求從課程設(shè)計的目的出發(fā),通過設(shè)計工作的各個環(huán)節(jié),達到以下教學(xué)要求:1)根據(jù)實現(xiàn)的功能,劃分出合理的對象類,明確對象類間的關(guān)系。2) 為

3、每個對象類設(shè)計正確的域和方法,為每個方法設(shè)計合理的方法體。同時,為對象類及內(nèi)部的域和方法運用正確的修飾符,如訪問控制符等。3)編程簡練,程序功能齊全,能正確運行。4)說明書、流程圖要清楚,規(guī)范(必須采用UML格式)5)課題完成后必須按要求提交課程設(shè)計報告,格式規(guī)范,內(nèi)容詳實。3、課程設(shè)計的內(nèi)容與安排 設(shè)計一個Database類問題描述設(shè)計一個Database類。Database類是一個表的集合,而表又由行和列組成。例如,下面的雇員信息表包含三個記錄,每個記錄有四個字段( Employee、Name、Department和Boss)。學(xué)號姓名學(xué)院班主任111-11-1234CruzACCWard

4、er213-44-5649JohnstonMISMichaels321-88-7895TomFINBearskin基本要求能夠完成對數(shù)據(jù)庫的基本操作;包括創(chuàng)建數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)庫里面的表的添加,刪除;以及能夠完成對表結(jié)構(gòu)的修改(如添加或刪除字段),以及對表中的記錄進行添加和刪除;能夠完成對使用適當(dāng)?shù)牟樵冋Z言從一個或多個表中查找相關(guān)信息。測試數(shù)據(jù)可以選取高校人員(教師、學(xué)生、職工等)數(shù)據(jù)庫作為測試數(shù)據(jù)實現(xiàn)提示Database 類的公有接口包含如下數(shù)據(jù)成員: 創(chuàng)建一個表。 通過增加或刪除字段修改表結(jié)構(gòu)。 刪除一個表。 在表中增加一個記錄。 從表中刪除記錄。 用適當(dāng)?shù)牟樵冋Z言從一個或多個表中查找信息

5、。代碼如下:#include #include #include #include #include struct person /*個人信息*/ char name20; char num20; char Department20; char boss20; typedef struct linknode /定義節(jié)點的類型 struct person pe; /個人信息 bool flag; struct linknode* next;nodetype;class database nodetype* head;public: database(); database:database();

6、 linknode* creatdatabase(int); /創(chuàng)建鏈表 int databaselen(); /返回鏈表長度 nodetype* findnode(int); /通過查找序號返回節(jié)點的指針 nodetype* find(char c); /通過查找姓名返回節(jié)點的指針 int find2(char c); /通過查找姓名返回節(jié)點的序號 nodetype* insnode(int); /插入節(jié)點 void delnode(int); /刪除節(jié)點 nodetype* load(); /初始化:從外部讀入數(shù)據(jù) void readstr(FILE *f,char *string); /

7、讀行函數(shù) bool check(char *a, char *b); /對比兩個字符串是否相等 void help(); /顯示幫助菜單 void editperson(nodetype*); /編輯個人說明 void dispname(); /顯示所有學(xué)生姓名 void dispperson(nodetype*); /顯示一個學(xué)生的個人說明;/-class Operater database L1;public: void Loop(); /主循環(huán) void display(); /顯示菜單 ;/-database:database() head = NULL;/-bool database

8、:check(char *a, char *b) /對比兩個字符串是否相等 int i; int j=strlen(b); for(i=0; ij; i+) if(*a=*b) a+; b+; else return 0; return 1;/-nodetype*database:creatdatabase (int n) /創(chuàng)建鏈表 nodetype *h=NULL, *s, *t; int i=1; for(int j=0; jnext=NULL; t=h; else /創(chuàng)建其余節(jié)點 s=(nodetype*)malloc(sizeof(nodetype); s-next=NULL; t-

9、next=s; t=s; /t 始終指向生成的單鏈表的最后一個節(jié)點 i+; head=h; return h;/-void database:readstr(FILE *f,char *string) do fgets(string, 255, f); /fgets(): 從文件 f 讀入長度為 255-1 的字符串 while (string0 = /) | (string0 = n); return;/-nodetype*database:load() FILE *fp; nodetype *p; char c255; int num; if(fp=fopen(student.txt, r

10、)=NULL) cout打開文件失敗endl; return 0; readstr(fp, c); sscanf(c, The Length Of Link: %d, &num); /獲取鏈表長度 p=creatdatabase(num); /創(chuàng)建鏈表 for(int i=0; , c); readstr(fp, c); strcpy(p-pe.num, c); readstr(fp, c); strcpy(p-pe.Department , c); readstr(fp, c); strcpy(p-pe.boss , c); p=p-next; fclose(fp); ret

11、urn p;void database:dispname() /顯示所有學(xué)生姓名 nodetype* p=head; cout現(xiàn)有的學(xué)生: endl; cout=endl; if(p=NULL) cout沒有任何學(xué)生數(shù)據(jù)endl; while(p!=NULL) cout=endl; couttt學(xué)生的學(xué)號ttpe.numtt學(xué)生的姓名tt所屬的學(xué)院 ttpe.Departmenttt班主任姓名ttpe.boss; p=p-next; int database:databaselen() /返回鏈表長度 int i=0; nodetype* p=head; while(p!=N

12、ULL) p=p-next; i+; return i;/-nodetype* database:findnode (int i) /通過查找序號返回節(jié)點的指針 nodetype* p=head; int j=1; if( idatabaselen()|i=0 ) / i 上溢或下溢 return NULL; else while( p!=NULL & jnext; return p; /-nodetype* database:find(char c) /通過查找姓名返回節(jié)點的指針 nodetype* p=head; int j=1; strcat(c, n); /從外部讀入的字符串末尾都帶了

13、一個換行符 while( p!=NULL & !(check(c, ) /查找第 i 個節(jié)點并由 p 指向該節(jié)點 j+; p=p-next; return p;/-int database:find2(char c) /通過查找姓名返回節(jié)點的序號 nodetype* p=head; int j=1; strcat(c, n); /從外部讀入的字符串末尾都帶了一個換行符 while( p!=NULL & !(check(c, ) /查找第 i 個節(jié)點并由 p 指向該節(jié)點 j+; p=p-next; return j;nodetype*database:insn

14、ode(int i) nodetype *h=head, *p, *s; s=(nodetype*)malloc(sizeof(nodetype); /創(chuàng)建節(jié)點 s s-next=NULL; if(i=0) /i=0 時 s 作為該單鏈表的第一個節(jié)點 s-next = h; h=s; /重新定義頭節(jié)點 else p=findnode(i); /查找第 i 個節(jié)點,并由 p 指向該節(jié)點 if(p!=NULL) s-next=p-next; p-next=s; else cout輸入的 i 值不正確next; free(p); else p=findnode(i-1); /查找第 i-1 個節(jié)點,

15、并由 p 指向這個節(jié)點 if(p!=NULL & p-next!=NULL) s=p-next; / s 指向要刪除的節(jié)點 p-next=s-next; free(s); cout學(xué)生信息已被刪除; else cout輸入的 i 值不正確endl; head=h;void database:editperson(nodetype* p) char c100; cout請輸入姓名: c; strcat(c, n); strcpy(, c); cout請輸入學(xué)號: c; strcat(c, n); strcpy(p-pe.num, c); cout請輸入專業(yè): c;

16、 strcat(c, n); strcpy(p-pe.Department, c); cout班主任姓名: c; strcat(c, n); strcpy(p-pe.boss, c); cout編輯個人信息完成!endl; dispperson(p);void database:dispperson(nodetype* p) cout學(xué)生的姓名: ; cout學(xué)生的學(xué)號: pe.num; cout學(xué)生的專業(yè): pe.Department; cout班主任姓名: pe.boss;/-database:database() nodetype *pa=head, *pb; if(pa!

17、=NULL) pb=pa-next; if(pb=NULL) free(pa); else while(pb!=NULL) free(pa); pa=pb; pb=pb-next; free(pa); void Operater:display() coutendlendl; cout * 學(xué)生管理系統(tǒng) *endl; cout endl; cout endl; cout 菜單選頂 endl; cout =endl; cout endl; cout 1.學(xué)生注冊 2.刪除信息 endl; cout 3.信息顯示 4.查詢信息 endl; cout 5.修改信息 6.幫助菜單 endl; cout

18、 7.保存數(shù)據(jù) 0.退出系統(tǒng) endl; cout endl; cout endl; cout endl;void Operater:Loop() database L1; char ch20; nodetype *p, *head; int i; /存放節(jié)點序號 p=L1.load(); /初始化:從外部讀入數(shù)據(jù)創(chuàng)建鏈表 head=p; display(); while(1) coutendlendl; cout 6 ): ch; system(cls); if(L1.check(ch, 1) p=L1.insnode(0); head=p; system(cls); coutendl; c

19、out= 學(xué)生信息注冊 =endl; cout下面輸入個人信息: endl; L1.editperson(p); if(L1.check(ch, 2) system(cls); coutendl; cout= 刪除學(xué)生信息 =endl; L1.dispname(); cout請輸入學(xué)生姓名: ch; i=L1.find2(ch); L1.delnode(i); if(L1.check(ch, 3) system(cls); coutendl; cout=顯示所有信息 =endl; L1.dispname(); if(L1.check(ch, 4) system(cls); coutendl;

20、cout= 學(xué)生信息查詢 =endl; L1.dispname(); cout請輸入學(xué)生姓名: ch; p=L1.find(ch); L1.dispperson(p); if(L1.check(ch, 6) display(); if(L1.check(ch, 7) /保存數(shù)據(jù) FILE *fp; if(fp=fopen(student.txt, w)=NULL) cout打開文件失敗endl; return; int i; char t255; sprintf(t, The Length Of Link: %dn, L1.databaselen(); fputs(t, fp); strcpy(t, n); fputs(t, fp); p=L1.findnode(1); /將鏈表頭指針賦予 p for(i=0; ipe.num, fp); /輸出學(xué)號 fputs(, fp); /輸出姓名 fputs(t, fp); p=p-next; p=head; fclose(fp); if(L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論