




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄目 錄1一、設計目的1二. 設計內容2三概要設計31.功能模塊圖32各個模塊詳細的功能描述。4四詳細設計51、輸入記錄模塊52、插入記錄模塊63、刪除記錄模塊(具體流程圖如圖所示)64、函數(shù)功能描述7五 測試數(shù)據(jù)及運行結果81.系統(tǒng)主界面82.輸入界面93.輸出教師信息界面114. 插入教師信息界面12六調試情況,設計技巧及體會12附錄 源代碼13一、設計目的本程序旨在訓練基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和結構數(shù)組的各種基本操作。本程序涉及結構體、數(shù)組、指針、文件等方面的知識。通過本程序的訓練,使讀者能對C語言的文件操作有一個更深刻的了解,掌握利用數(shù)組存儲結構實
2、現(xiàn)教師工資管理系統(tǒng),為進一步開發(fā)出高質量信息管理系統(tǒng)打下堅實的基礎。(1)鞏固和加強C+語言程序設計課程的理論知識。(2)掌握+語言的基本概念、語法、語義和數(shù)據(jù)類型的使用特點。(3)掌握+語言程序設計的方法及編程技巧,能正確使用+語言編寫程序。(4)進一步理解和運用結構化程設計的思想和方法;學會利用流程圖表示算法。(5)掌握調試程序的基本方法及上機操作方法。(6)掌握書寫程設計開發(fā)文檔的能力,學會撰寫課程設計總結報告。課程設計的思想和方法還可以作為畢業(yè)論文時的參考資料。(7)通過查閱手冊和文獻資料,培養(yǎng)自己獨立分析問題和解決問題的能力。為自己做畢業(yè)設計打好基礎。(8)初步掌握開發(fā)一個小型實用系
3、統(tǒng)的基本方法:結合實際應用的要求,使課程設計既覆蓋知識點,又接近工程實際需要。通過激發(fā)學習興趣,調動自己主動學習的積極性,并根據(jù)實際編程要求,訓練自己實際分析問題的能力及編程能力,并養(yǎng)成良好的編程習慣。(9)培養(yǎng)自己的創(chuàng)新能力和創(chuàng)新思維??梢愿鶕?jù)指導書和相關文獻上的參考算法,自己設計出相應的應用程序。(10)培養(yǎng)自己良好的程序設計風格。在實際編程中,為了提高編程質量,對空行、空格和注釋均有要求。自己在課程設計書寫代碼時,應該嚴格按要求處理,以便建立良好的程序設計風格。二. 設計內容每個教師的信息為:教師號、姓名、性別、單位名稱、家庭住址、聯(lián)系電話、基本工資、津貼、生活補貼、應發(fā)工資、電話費、水
4、電費、房租、所得稅、衛(wèi)生費、公積金、合計扣款、實發(fā)工資。注:應發(fā)工資=基本工資+津貼+生活補貼;合計扣款=電話費+水電費+房租+所得稅+衛(wèi)生費+公積金;實發(fā)工資=應發(fā)工資 合計扣款。1、教師信息處理(1) 輸入教師信息(2) 插入(修改)教師信息:(3) 刪除教師信息:(4) 瀏覽教師信息:提示:具體功能及操作參考題1。2、教師數(shù)據(jù)處理(1) 按教師號錄入教師基本工資、津貼、生活補貼、電話費、水電費、房租、所得稅、衛(wèi)生費、公積金等基本數(shù)據(jù)。(2) 教師實發(fā)工資、應發(fā)工資、合計扣款計算。提示:計算規(guī)則如題目。(3) 教師數(shù)據(jù)管理提示:輸入教師號,讀出并顯示該教師信息,輸入新數(shù)據(jù),將改后信息寫入文
5、件(4) 教師數(shù)據(jù)查詢:提示:輸入教師號或其他信息,即讀出所有數(shù)據(jù)信息,并顯示出來。(5) 教師綜合信息輸出提示:輸出教師信息到屏幕。三概要設計1.功能模塊圖主界面選擇操作1輸入教師信息2插入教師信息3修改教師信息教師工資管理系統(tǒng)4刪除教師信息5瀏覽教師信息6系統(tǒng)信息結 束7退出系統(tǒng)圖1教師工資系統(tǒng)功能模塊圖2各個模塊詳細的功能描述。(1)輸入教師信息模塊在主菜單中運用結構體teacher,輸入教師信息,首先建立鏈表,將用戶輸入的學生信息存儲到鏈表中,輸入完成后提示用戶時候繼續(xù)輸入,如果用戶輸入“Y”或“y”,則再次調用,實現(xiàn)繼續(xù)輸入學生信息的操作。如果用戶輸入“N”或“n”,則返回主菜單界面
6、。(2)插入教師信息模塊在主菜單中調用teacher *insert(),然后按照提示依次輸入教師信息,然后再調用void print()函數(shù)講所有的教師信息記錄打印出來。然后再返回主菜單界面。(3)修改教師信息模塊在主菜單中調用void edit()函數(shù)。按教師號查找教師信息,如果找到教師信息,調用void edit()函數(shù)提示用戶輸入新的教師信息,完成修改的操作。操作結束后提示用戶修改成功。然后返回主菜單界面。(4)刪除教師信息模塊在主菜單中調用del()函數(shù),以刪除教師信息,首先按學號查詢教師信息,如果沒有找到教師信息,給出提示信息。如果查找到該教師信息,給出改教師的全部信息,如果查找到
7、,則刪除該教師信息,給出刪除成功的提示信息。然后返回主菜單界面。(5)瀏覽教師信息模塊在主菜單中調用void print()函數(shù)來顯示教師信息,先判斷鏈表是否為空。如果鏈表不為空時,逐條顯示鏈表中教師的信息,顯示調用teacher *next()函數(shù)按照教師號的大小來顯示教師的信息。然后返回主菜單界面。(6)系統(tǒng)信息模塊 在主菜單中輸入6,可知系統(tǒng)信息、版本。(7)退出系統(tǒng)模塊將鏈表中的數(shù)據(jù)全部釋放掉,防止內存泄露。退出系統(tǒng)。四詳細設計1、輸入記錄模塊輸入教師信息的流程圖如下圖。首先要開辟一個新節(jié)點,并使p1,p2指向它。讀入一個教師數(shù)據(jù)給p1所指的節(jié)點。此時要使head=NULL,n=0,并
8、且p1->num!=0。開辟一個新節(jié)點,并使P1,p2指向它讀入一個教師數(shù)據(jù)給P1所指的結點 Head=NULL && n=0 <當讀入的p1->num!=o> N=n+1 N=1 真 假Head=p1 p2->next=p1把p1所指的結點 把p1所指的結點作為第一結點 連接到表尾 P2=p1再開辟一個新結點,使p1指向它讀入一個教師數(shù)據(jù)給p1所指結點具體流程圖如圖:2、插入記錄模塊插入記錄模塊具體流程圖如下圖所示: P1=head , p0=teacher 原來的鏈表是空表是 否 當p0->num>p1->num以及p1所指的
9、不是表尾結點 P2指向p1位置 P1向后移一個結點 P0->num<=p1->num將p0所 真 假指的結 p1指向頭結點 點作為 是 否 p1->next=p0唯一的 head=p0 p2->next=p0結點 p0->next=p1 p0->next=p1 p0->next=NULLf 鏈表是一個空鏈表真 假 P1=head輸 當num!=p1->num以及p1所指的結點不是表尾結點 P2=p1出 P1=p1->next P1是要刪除的結點 是 否空 p1所指的頭結點 是 否 輸出找不到表 head= p2->next= 教
10、師信息 P1->next p1->next3、刪除記錄模塊(具體流程圖如圖所示)4、函數(shù)功能描述(1) 保存數(shù)據(jù)函數(shù)save()函數(shù)原型:void save()功能描述:將鏈表teacher中的N個數(shù)據(jù)寫入到磁盤文件teacher_list中,如果保存成功,則給出提示保存成功,否則返回“cannot ofen file”表示無法打開文件,返回“file write error”表示文件輸入錯誤。(2)瀏覽教師信息函數(shù)query()函數(shù)原型:void query(struct teacher *p)功能描述:將鏈表teacher中的head指向p,然后讓用戶輸入教師號no,依次在鏈表
11、中需找p,如果教師號不對,則指針往后面撥動一下,使p=p->next;知道找到相對應的正確的教師號。然后打印出教師的基本信息。函數(shù)流程圖如圖5.2 所示p=head p->num=no p->num!=no p=p->next 打印教師信息 圖5.2(3) 修改教師信息函數(shù)edit()函數(shù)原型:void edit(struct teacher *p)功能描述:首先讓用戶輸入希望修改的教師的教師號a, 然后在鏈表中一條一條查找看p->num是否等于a,如果找到,則讓用戶再次輸入教師的具體信息,輸入完畢跳出,轉向主菜單界面。如果沒有找到,則令p=p->next。
12、直到查詢完所有的教師記錄。函數(shù)流程圖如圖5.3 所示輸入想修改教師信息的教師號ap->num=a Yes no p=p->next再次輸入教師信息5 測試數(shù)據(jù)及運行結果1.系統(tǒng)主界面 用戶剛進入系統(tǒng)時,如圖1、2所示。主菜單界面: 圖1 圖 22.輸入界面用戶在主菜單界面的時候輸入1,顯示如圖 圖2依次給出需要輸入的信息的,教師號、姓名、性別、單位名稱、家庭住址、聯(lián)系電話、基本工資、津貼、生活補貼、電話費、水電費、房租、所得稅、衛(wèi)生費、公積金等。當公積金輸入完成,系統(tǒng)將給出提示是否想繼續(xù)輸入教師信息,顯示如圖如果輸入Y或者y,則繼續(xù)輸入教師信息;如果輸入N或者n,則返回到主菜單界面
13、。顯示如下圖:3.輸出教師信息界面 如果已經(jīng)輸入教師信息,再在主菜單選擇4瀏覽教師信息,結果如圖:4. 插入教師信息界面 在主菜單中進入2插入教師信息,然后依次插入教師的所有信息,最后打印鏈表里的記錄,如圖:六調試情況,設計技巧及體會 持續(xù)一個學期的課程設計給了我太多的感觸,開始從題目上看,感覺題目很大,設計量很大,也很復雜,感覺不是簡單的就能解決的。這樣只用重新拾起書繼續(xù)來看,獲得新的知識和鞏固以前的C方面的知識。提升自己的能力。整個程序的設計是分模塊實現(xiàn)具體的功能,每個模塊分別由不同的函數(shù)構成。鏈表的建立實現(xiàn)輸入信息的功能,相比較于數(shù)組更加方便,更能夠節(jié)省內存空間等。通過使用文件fread
14、和fwrite函數(shù)方便的將數(shù)據(jù)信息寫入文件以及將文件中的信息載入顯示段。通過這個學期的課程設計的練習與設計我學會了很多,也更加熟悉C語言程序設計,從中得到了很多樂趣,很快樂,感覺C語言的世界里面奇妙無比。雖然在途中也遇到很多的苦難,但是還是通過問同學和學長解決了。最后看到自己設計的程序能夠運行起來特別的開心。這次的程序設計很有意義,也很鍛煉人的能力,特別是C語言方面的能力,為自己在C+語言方面打下基礎。附錄 源代碼#include<iostream>#include<fstream>#include<stdlib.h>#include<string&g
15、t;#include<iomanip>using namespace std;int i;class Person public: void display() cout << "姓名:" cin >> name; cout << "工號:" cin >> num;while(num<=0)cout<<"請重新輸入工號大于0的數(shù):"<<endl;cin>>num; string name;/名字 int num;/工號class Te
16、acher: public Person/教師public: Teacher() int s=1000; wage = s;butie1=0; void display1(); int wage;/基本工資 int time;int butie1;int jintie1;/課時void Teacher:display1() cout << "請輸入" Person:display(); cout << "請輸入教師的課時(小時): " cin >> time;while(time<=0)cout<<&
17、quot;請重新輸入課時大于0的數(shù):"<<endl;cin>>time;/補貼Teacher t100;Leader x100;Jianzhi j100;void show() cout << "t請輸入你要錄入的對象 :" << endl; cout << "tt 1:教師" << endl; cout << "tt 2:領導" << endl; cout << "tt 3:教師兼職領導" <
18、;< endl; cout << "tt 4:退出錄入" << endl; cout << "請選擇: "void jiaoshiluru()/教師錄入 ofstream outfile("教師.txt", ios:app); if (!outfile) cerr << "open error!" << endl; exit(0); int b; cout << "請選擇你要錄入教師的個數(shù):" cin >>
19、 b; for (i = 0; i < b; i+) ti.display1();cout<<"是否保存信息(y(Y)/n(N)"<<endl;char c;cin>>c;if(c='Y'|c='y') outfile << ti.num << " " << << " " << ti.wage << " " << ti.time <<
20、; endl; outfile.close();void wenjianluru()/文件錄入 int c; for (i = 0; i+) show(); cin >> c; if (c = 4) cout << "退出錄入成功。" << endl; system("cls"); break; else switch (c) case 1: jiaoshiluru(); break; case 2: Leaderluru(); break; case 3: jianzhiluru(); break; default:
21、 cout << "上一次輸入錯誤。" << endl; break; void jiaoshishuchu()/教師輸出顯示 ifstream infile("教師.txt", ios:in); int m; for (i = 0; i < 100; i+) ti.num=0; infile >> ti.num >> >> ti.wage >> ti.time;if (ti.num = 0) break; int jintie1; jintie1=ti.tim
22、e*30; m = ti.wage + jintie1;cout << "t教師: " <<setw(8)<< ti.num <<setfill(' ')<<setw(10)<< <<setfill(' ')<<setw(10)<<ti.wage<<setfill(' ')<<setw(14)<<jintie1<<setfill(' ')&l
23、t;<setw(12)<<ti.butie1<<setfill(' ')<<setw(10)<< m<< endl; infile.close();void leadershuchu()/領導輸出 ifstream infile("領導.txt", ios:in); int m; for (i = 0; i < 100; i+) xi.num =0; infile >> xi.num >> >> xi.wage >> xi.
24、butie; if (xi.num = 0) break; m = xi.wage + xi.butie; cout << "t領導:" <<setfill(' ')<<setw(8)<<xi.num <<setfill(' ')<<setw(10)<< <<setfill(' ')<<setw(10)<<xi.wage<<setfill(' ')<<s
25、etw(14)<<xi.jintie<<setfill(' ')<<setw(12)<<xi.butie<<setfill(' ')<<setw(10)<< m<< endl; infile.close();void shuchu()/輸出顯示 cout <<"tt 工號 名字 基本工資 課時津貼 補貼 總工資 " << endl; jiaoshishuchu(); leadershuchu(); jianzhishuchu
26、();void show3() cout << "t請輸入你要查詢的對象:" << endl; cout << "tt 1:教師查詢" << endl; cout << "tt 4:退出查詢" << endl; cout << " 請選擇一個操作:" void jiaoshichaxun() ifstream infile("教師.txt", ios:in); string nam; int num; int m
27、, n,x; cout<<"tt1.按教師的姓名查找ntt2.按教師的工號查找" cout<<"ntt 請選擇" cin>>x; switch(x) case 1:cout<<"tt請輸入要查找的教師的姓名:" cin>>nam; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0
28、) break; if (=nam) n+; m = ti.wage + (ti.time - 24) * 30;cout<<"tt工號 姓名 工資"<<endl; cout << "t教師: " <<" "<<ti.num << " " << << " " <<m << endl; if (n =0) cout << "沒有你
29、要查詢的教師。" << endl; infile.close();break;case 2: cout<<"tt請輸入要查找的教師的工號:" cin>>num; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; if (ti.num=num) n+; m = ti.wage + (ti.time - 24) * 30
30、;cout<<"tt工號 姓名 工資"<<endl; cout << "t教師: " <<" "<<ti.num << " " << << " " <<m << endl; if (n =0) cout << "沒有你要查詢的教師。" << endl; infile.close();break;default:cout&
31、lt;<"操作選擇錯誤!"<<endl;break; void wenjianchaxun()/文件查詢 int c; for (i = 0; i+) show3(); cin >> c; if (c = 4) cout << "退出查詢成功。" << endl; system("cls"); break; ; else switch (c) case 1: jiaoshichaxun(); break; case 2: leaderxhaxun(); break; case 3:
32、 jianzhichaxun(); break; default: cout << "上一次輸入錯誤。" << endl; break; void show5() cout << "t請輸入你要修改的對象:" << endl; cout << "tt 1:教師修改" << endl; cout << "tt 2:教師兼職領導修改" << endl; cout << "tt 3:退出修改"
33、<< endl; cout << " 請選擇一個操作:"void jiaoshixiugai()/教師修改 ifstream infile("教師.txt", ios:in); string nam; int n, n1, m1 = 0; cout << "請輸入你要修改教師的名字: " cin >> nam; cout << "請輸入你要修改的課時:" cin >> n; for (i = 0; i < 100; i+) infile
34、>> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; m1+; if ( =nam) n1 = ti.time; ti.time = n; n = n1; infile.close(); ofstream outfile("教師.txt", ios:out); for (i = 0; i < m1; i+) outfile << ti.num << " " << ti.na
35、me << " " << ti.wage << " " << ti.time << endl; outfile.close();void xiugai()/修改 int c; for (i = 0; i+) show5(); cin >> c; if (c = 3) cout << "ttt退出修改成功。" << endl; system("cls"); break; else switch (c) case 1: ji
36、aoshixiugai(); break; case 2: janzhi2xiugai(); break; default: cout << "上一次輸入錯誤。" << endl; break; void show6() cout << "t請選擇如下操作:" << endl; cout << "t1:教師刪除" << endl; cout << "t2:領導刪除" << endl; cout << &quo
37、t;t3:教師兼職領導刪除" << endl; cout << "t4:退出刪除" << endl; cout << "請選擇你的一個操作: "void jiaoshidel()/教師刪除 ifstream infile("教師.txt", ios:in); string nam;int num; int n,x; cout<<"tt1.按教師的姓名刪除ntt2.按教師的工號刪除" cout<<"ntt 請選擇"
38、cin>>x; switch(x) case 1:cout<<"tt請輸入要刪除的教師的姓名:"cin>>nam; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; if (=nam) n+;ti.num=0;break; if (n =0)cout << "沒有你要刪除的教師。"
39、 << endl;elsecout<<"刪除成功!"<<endl; infile.close();break;case 2: cout<<"tt請輸入要刪除的教師的工號:"cin>>num; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; if (ti.num=num) n+; t
40、i.num=0;break; if (n =0) cout << "沒有你要刪除的教師。" << endl;elsecout<<"刪除成功"<<endl; infile.close();break;default:cout<<"操作選擇錯誤!"<<endl;break; infile.close(); ofstream outfile("教師.txt", ios:out); for (i = 0; i < 100; i+) if (ti.
41、num != 0) outfile << ti.num << " " << << " " << ti.wage << " " << ti.time << endl; outfile.close(); void show_sort() cout << "請選擇如下操作:" << endl; cout << "tt 1:教師排序" << en
42、dl; cout << "tt 2:教師兼職領導排序" << endl; cout << "tt 3:退出排序" << endl; cout << "請選擇你的一個操作: "void jiaoshi_sort() /教師排序 ifstream infile("教師.txt", ios:in); int m100; for (i = 0; i < 100; i+) infile >> ti.num >> >
43、> ti.wage >> ti.time; if (ti.num = 0) break; mi = ti.wage + ti.time * 30; infile.close(); int count = i; Teacher teacher; int tmp; for (int x = 0; x < count - 1; +x) for (int y = x + 1; y < count; +y) if (mx < my) teacher = tx; tx = ty; ty = teacher; tmp = mx; mx = my; my = tmp; cout <<"tt 工號 名字 總工
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030工程投影機市場前景分析及發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030工程機械行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025年會計職稱考試《初級會計實務》錯題復盤強化復習題解析與練習
- 2023-2029年中國彩鋼復合板行業(yè)市場深度評估及投資戰(zhàn)略規(guī)劃報告
- 2025年中國點焊型應變計行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 中國辯偽點鈔機行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告(2024-2030)
- 中國光伏裝機行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報告
- 福建安全員證考試
- 崗位工作總結
- 社區(qū)河長工作總結
- 阿爾伯特;哈伯德-把信送給加西亞
- 2025中級消防設施操作員作業(yè)考試題及答案(1000題)
- 鐵路貨物運價規(guī)則
- 病房突發(fā)事件的應急與處理
- 光伏項目運維服務承包合同5篇
- 小學期末科學質量分析
- 《批判性思維原理和方法》全套教學課件
- 體外診斷試劑行業(yè)可行性分析報告
- 火鍋丸子供貨合同范本
- 《建筑施工模板安全技術規(guī)范》JGJ162-2024解析
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
評論
0/150
提交評論