第一篇:綜合實(shí)驗(yàn)3 職工信息管理系統(tǒng)--具體要求
綜合實(shí)驗(yàn)3 職工信息管理系統(tǒng)
內(nèi)容要求:
職工信息管理系統(tǒng)主要用來管理學(xué)校的教職工的基本信息。學(xué)校的職工主要分為教師、教輔人員和工人三種,其中教師分為全職教師和兼職教師。根據(jù)實(shí)際情況,提出以下設(shè)計(jì)要求:
(1)把職工信息數(shù)據(jù)保存在文件中,包括職工編號(hào)、姓名、性別、工資、出生時(shí)間、部門、參加工作時(shí)間和年齡,其中參加工作時(shí)間和年齡是通過函數(shù)求解出來的;
(2)職工類為抽象類,根據(jù)職工類,使用繼承的方法構(gòu)造出至少3個(gè)類,即教師類、教輔人員類和工人類;
(3)編寫同名的display()成員函數(shù),用來輸出當(dāng)前系統(tǒng)中保存的所有職工信息;
(4)按不同類別輸出系統(tǒng)總各種類別職工的信息,比如按照系輸出教師信息,按照
所屬類別(教師或者工人等)輸出職工信息;
(5)要求對(duì)“<<”和“>>”進(jìn)行運(yùn)算符重載,使得這兩個(gè)運(yùn)算法可以直接輸出某個(gè)
職工的全部個(gè)人信息,要考慮職工編號(hào)的長短和格式,考慮姓名有2個(gè)字或3
個(gè)字的情況來設(shè)定輸出姓名的對(duì)齊格式,以及其他為列出的情況;
(6)編寫函數(shù)能計(jì)算出全體職工的平均年齡;
(7)編寫函數(shù)能夠在系統(tǒng)中檢索指定信息,比如按照工號(hào)檢索、按照年齡檢索等;
(8)各個(gè)功能借助簡單菜單實(shí)現(xiàn),即通過輸入數(shù)字選擇某個(gè)具體功能,例如:
9—增加一位職工信息 —?jiǎng)h除一個(gè)職工信息 —顯示全部職工信息(教師、教輔人員和工人)—顯示全部教師職工信息 —顯示全部教輔人員職工信息 —按系輸出教師信息 —按姓名檢索職工信息 —按工號(hào)檢索職工信息 —退出系統(tǒng)
第二篇:職工信息管理系統(tǒng)
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22
職工信息管理系統(tǒng) 設(shè)計(jì)報(bào)告
學(xué)院
土木工程
班級(jí)
測繪C111
學(xué)號(hào)
117551
姓名
馬驍飛
成績
一、設(shè)計(jì)思路
1.要達(dá)到的目的
培養(yǎng)學(xué)生綜合利用VB語言進(jìn)行程序設(shè)計(jì)的能力,主要是培養(yǎng)學(xué)生綜合使用基本控件的、文件讀寫、數(shù)組操作等能力。
利用讀取數(shù)據(jù)按鈕,打開選中的數(shù)據(jù)文件職工.txt,并從該文件中讀取職工職工號(hào)、姓名、職稱和工資,保存在數(shù)組中,并顯示在文本框中。
清除文本框中的職工的信息。
在文本框中顯示職工的信息。
按照職工號(hào)查詢職工信息,并顯示。
按照姓名查詢職工信息,并顯示。
按照職工號(hào)修改職工信息,并顯示。
按照姓名修改職工信息,并顯示。
追加一條記錄數(shù)據(jù),并顯示。2.關(guān)鍵問題的解決
(1)通過“讀取數(shù)據(jù)”按鈕應(yīng)能利用應(yīng)能利用右側(cè)圖示樣式窗體形式,打開選中的數(shù)據(jù)文件職工.txt,并從該文件中讀取職工職工號(hào)、姓名、職稱和工資,保存在數(shù)組中,并顯示在文本框中。(2)通過“清除數(shù)據(jù)”按鈕應(yīng)能清除文本框中的內(nèi)容。(3)從“按職工號(hào)查詢”按鈕左端文本框輸入職工號(hào),單擊“按職工號(hào)查詢”,在窗體大的文本框中顯示查詢結(jié)果。從“按姓名查詢”按鈕左端文本框輸入姓名,單擊“按姓名查詢”按鈕,在窗體大的文本框中顯示查詢結(jié)果。(4)從“按職工號(hào)修改”(“按姓名修改”)按鈕,在輸入對(duì)話框中輸入職工號(hào),對(duì)查詢到的職工的職工號(hào)(姓名)進(jìn)行修改,在窗體大的文本框中顯示修改結(jié)果。
從輸入一條記錄后文本框中輸入一條記錄信息,單擊“追加數(shù)據(jù)并顯示結(jié)果”按鈕,添加到職工.txt中,并將追加數(shù)據(jù)后職工.txt的信息顯示窗體的大文本框中。
二、部分程序關(guān)鍵源代碼及注釋 rivate Sub Command1_Click()Form2.Show
End Sub
Private Sub Command2_Click()
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22 List1.Clear End Sub
Private Sub Command3_Click()e = True Unload Me End Sub
Private Sub Command4_Click()List1.Clear If Text3.Text = “117001” Then List1.AddItem “張三 117001” ElseIf Text3.Text = “117002” Then List1.AddItem “李四 117002” ElseIf Text3.Text = “117003” Then List1.AddItem “王五 117003” ElseIf Text3.Text = “117004” Then List1.AddItem “王六 117004” ElseIf Text3.Text = “117005” Then List1.AddItem “趙七 117005” ElseIf Text3.Text = “117006” Then List1.AddItem “李八 117006” ElseIf Text3.Text = “117007” Then List1.AddItem “劉九 117007” ElseIf Text3.Text = “117008” Then List1.AddItem “馬十
117008” Else: MsgBox “請(qǐng)輸入正確的職工號(hào)” End If
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22 End Sub
Private Sub Command5_Click()Dim a As String Dim b As String b = InputBox(“請(qǐng)輸入要修改的職工的職工號(hào)”)a = InputBox(“請(qǐng)輸入新的職工姓名”)
If b = “117001” Then List1.AddItem a & “
” & b ElseIf b = “117002” Then List1.AddItem a & “
” & b ElseIf b = “117003” Then List1.AddItem a & “
” & b ElseIf b = “117004” Then List1.AddItem a & “
” & b ElseIf b = “117005” Then List1.AddItem a & “
” & b ElseIf b = “117006” Then List1.AddItem a & “
” & b ElseIf b = “117007” Then List1.AddItem a & “
” & b ElseIf b = “117008” Then List1.AddItem a & “
” & b Else: MsgBox “請(qǐng)輸入正確的職工號(hào)” End If
List1.AddItem a & “
” & b End Sub
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22 Private Sub Command6_Click()List1.Clear If Text2.Text = “張三” Then List1.AddItem “張三 117001” ElseIf Text2.Text = “李四” Then List1.AddItem “李四 117002” ElseIf Text2.Text = “王五” Then List1.AddItem “王五 117003” ElseIf Text2.Text = “王六” Then List1.AddItem “王六 117004” ElseIf Text2.Text = “趙七” Then List1.AddItem “趙七 117005” ElseIf Text2.Text = “李八” Then List1.AddItem “李八 117006” ElseIf Text2.Text = “劉九” Then List1.AddItem “劉九 117007” ElseIf Text2.Text = “馬十” Then List1.AddItem “馬十
117008” Else: MsgBox “請(qǐng)輸入正確的職工姓名” End If End Sub
Private Sub Command7_Click()Dim a As String Dim b As String a = InputBox(“請(qǐng)輸入要修改的職工姓名”)b = Str(InputBox(“請(qǐng)輸入新職工號(hào)”))
If a = “張三” Then List1.AddItem a & “
” & b
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22 ElseIf a = “李四” Then List1.AddItem a & “
” & b ElseIf a = “王五” Then List1.AddItem a & “
” & b ElseIf a = “王六” Then List1.AddItem a & “
” & b ElseIf a = “趙七” Then List1.AddItem a & “
” & b ElseIf a = “李八” Then List1.AddItem a & “
” & b ElseIf a = “劉九” Then List1.AddItem a & “
” & b ElseIf a = “馬十” Then List1.AddItem a & “
” & b Else: MsgBox “請(qǐng)輸入正確的職工姓名” End If End Sub
Private Sub Command8_Click()Dim a As String Dim b As String
a = InputBox(“請(qǐng)輸入新員工姓名”)b = InputBox(“請(qǐng)輸入新員工的職工號(hào)”)
List1.AddItem a & “
” & b End Sub Private Sub Combo2_Change()Select Case Comb2.Text
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22 Case “*.txt” File1.Pattern = “*.txt” Case “*.ini” File1.Pattern = “*.ini” Case “*.doc” File1.Pattern = “*.doc” Case “*.*” File1.Pattern = “*.*” End Select End Sub
Private Sub Command1_Click()Dim fileno As Integer, strl As String fileno = FreeFile Open “職工信息.txt” For Input As #fileno i = 0 Do While Not EOF(fileno)Input #fileno, str1 Form1.List1.AddItem str1
i = i + 1 Loop Close #fileno Form1.Show Me.Hide End Sub
Private Sub Command2_Click()Form1.Show End Sub
職工信息管理系統(tǒng)設(shè)計(jì)報(bào)告(VB)編號(hào):22
Private Sub Drive1_Change()Dir1.Path = Drive1.Drive End Sub
Private Sub File1_Click()Text3.Text = File1.FileName End Sub
Private Sub VScroll1_Change()Form1.Show End Sub
三、設(shè)計(jì)方案的完善及目前存在的問題
1.設(shè)計(jì)方案要完善的地方
追加的信息無法加載到“職工信息txt”里 查詢只是單一的一對(duì)一輸入,不智能 文件類型的篩選問題暫未處理辦法 2.目前存在的問題
只是簡單的查詢,不適合大量數(shù)據(jù)的導(dǎo)入與導(dǎo)出,不方便查看
四、本次設(shè)計(jì)的收獲及心得體會(huì)
第一次嘗試程序的制作,覺得非常有意思,做成功以后很有成就感,我還發(fā)現(xiàn),程序制作出來的好壞直接影響使用者的工作效率,好的軟件可以使用戶事半功倍,對(duì)程序的運(yùn)作體系越了解,設(shè)計(jì)的軟件越智能,越能更好的服務(wù)于使用者,好好學(xué)習(xí)VB計(jì)算機(jī)語言,是磨刀不誤砍柴工的體現(xiàn)。
五、對(duì)該題目和VB設(shè)計(jì)的意見和建議
1.對(duì)該題目的意見和建議
Form2中的文件類型,有些偏難,在少數(shù)文件夾的情況下可以不用通過文件類型的篩選 2.對(duì)本次設(shè)計(jì)的意見和建議
對(duì)此次課程設(shè)計(jì)的時(shí)間安排應(yīng)更具體,應(yīng)有相應(yīng)的素材圖片,增添軟件的美感
第三篇:01-職工信息管理系統(tǒng)
軟件技術(shù)專業(yè)
計(jì)算機(jī)應(yīng)用基礎(chǔ)課程設(shè)計(jì)任務(wù)書
(13級(jí))
題目:職工信息管理系統(tǒng)
學(xué)生姓名:學(xué)號(hào):班級(jí):
題目類型:軟件工程(R)指導(dǎo)教師:
一. 課程設(shè)計(jì)的題目簡介
該設(shè)計(jì)要求學(xué)生以某企業(yè)職工信息管理業(yè)務(wù)為背景,設(shè)計(jì)、開發(fā)一套“職工信息管理系統(tǒng)”軟件。
通過該題目的設(shè)計(jì)過程,可以培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計(jì)的思想,加深對(duì)高級(jí)語言基本語言要素和控制結(jié)構(gòu)的理解,針對(duì)c語言中的重點(diǎn)和難點(diǎn)內(nèi)容進(jìn)行訓(xùn)練,獨(dú)立完成有一定工作量的程序設(shè)計(jì)任務(wù),同時(shí)強(qiáng)調(diào)好的程序設(shè)計(jì)風(fēng)格。得到軟件工程的綜合訓(xùn)練,提高解決實(shí)際問題的能力。
二. 課程設(shè)計(jì)的任務(wù)
1、查閱文獻(xiàn)資料,一般在5篇以上;
2、以某企業(yè)職工信息管理業(yè)務(wù)為背景,通過調(diào)研、分析現(xiàn)有的管理模式和已有的管理軟件,建立系統(tǒng)模型;
3、完成軟件結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì);
4、完成系統(tǒng)的軟件開發(fā)和測試工作;
5、撰寫設(shè)計(jì)說明書;
6、做好答辯工作。
三. 課程設(shè)計(jì)的主要內(nèi)容、功能及技術(shù)指標(biāo)
1、問題分析及解決方案框架確定:充分地分析和理解問題本身,弄清要求做什么。在確定解決方案框架過程中,綜合考慮系統(tǒng)功能,考慮怎樣使系統(tǒng)結(jié)構(gòu)清晰、合理、簡單和易于調(diào)試。最后確定每個(gè)過程和函數(shù)的簡單功能,以及過程(或函數(shù))之間的調(diào)用關(guān)系,并畫出函數(shù)之間的調(diào)用關(guān)系圖。
2、詳細(xì)設(shè)計(jì)和編碼:定義相應(yīng)的存儲(chǔ)結(jié)構(gòu),確定各個(gè)函數(shù)的算法,并畫出
流程圖,在此基礎(chǔ)上進(jìn)行代碼設(shè)計(jì),每個(gè)明確的功能模塊程序一般不超過60行,否則要進(jìn)一步劃分。
3、上機(jī)前程序靜態(tài)檢查:上機(jī)前程序靜態(tài)檢查可有效提高調(diào)試效率,減少上機(jī)調(diào)試程序時(shí)的無謂錯(cuò)誤。靜態(tài)檢查主要有兩種途徑:用一組測試數(shù)據(jù)手工執(zhí)行程序;通過閱讀或給別人講解自己的程序而深入全面地理解程序邏輯。把程序中的明顯錯(cuò)誤事先排除。
4、程序調(diào)試與測試:采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設(shè)計(jì)測試數(shù)據(jù)確定疑點(diǎn),通過修改程序來證實(shí)它或繞過它。調(diào)試正確后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果。
5、完成課程設(shè)計(jì)報(bào)告
① 需求和規(guī)格說明:設(shè)計(jì)題目和問題描述:題目要解決的問題是什么; ② 設(shè)計(jì)思路:主要算法思想,程序功能圖,函數(shù)之間的調(diào)用關(guān)系圖;設(shè)計(jì)表示:每個(gè)函數(shù)或過程的功能,列出每個(gè)過程或函數(shù)所調(diào)用的過程或函數(shù),并畫出各函數(shù)的流程圖;
詳細(xì)設(shè)計(jì):主要算法的偽代碼;
③ 調(diào)試報(bào)告:調(diào)試過程中遇到的主要問題,是如何解決的;對(duì)設(shè)計(jì)和編碼的回顧討論和分析;改進(jìn)設(shè)想;經(jīng)驗(yàn)和體會(huì)等;
④ 程序?qū)崿F(xiàn)注釋;
⑤ 附錄:源程序清單和結(jié)果。如果題目規(guī)定了測試數(shù)據(jù),則結(jié)果要求包含這些測試數(shù)據(jù)和運(yùn)行輸出,當(dāng)然還可以含其他測試數(shù)據(jù)和運(yùn)行輸出。
6、職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號(hào)不重復(fù))。設(shè)計(jì)“職工信息管理系統(tǒng)”,使之能提供以下功能:
系統(tǒng)以菜單方式工作;
職工信息錄入功能(職工信息用文件保存);
職工信息瀏覽功能;
查詢和排序功能:(至少一種查詢方式)按工資查詢、按學(xué)歷查詢等;職工信息的刪除與修改。
四. 課程設(shè)計(jì)提交的成果
1.設(shè)計(jì)說明書一份,內(nèi)容包括:
1)中文摘要100字;關(guān)鍵詞3-5個(gè);
2)前言;
3)系統(tǒng)分析(包含需要的系統(tǒng)流程圖);
4)系統(tǒng)總體設(shè)計(jì)(包含總體軟件結(jié)構(gòu)圖、總體數(shù)據(jù)結(jié)構(gòu));
5)詳細(xì)設(shè)計(jì);
6)系統(tǒng)測試(包含測試方案、測試用例、測試結(jié)果及軟件可靠性分析);
7)軟件使用說明書(核心界面說明);
8)設(shè)計(jì)總結(jié)、參考文獻(xiàn)、致謝等。
2.刻制光盤一張。
五. 課程設(shè)計(jì)的主要參考文獻(xiàn)
1C/C++程序設(shè)計(jì)教程(第二版),王連相,中國鐵道出版社,2011 2C語言程序設(shè)計(jì),譚浩強(qiáng),清華大學(xué)出版社,1999
3C程序設(shè)計(jì)題解與上機(jī)指導(dǎo),譚浩強(qiáng),清華大學(xué)出版社,1999
4C/C++程序設(shè)計(jì)上機(jī)指導(dǎo)與測試(第二版),王連相,中國鐵道出版社,2011
5C語言函數(shù)手冊,機(jī)械工業(yè)出版社,1999
6C語言的實(shí)際應(yīng)用,安徽科學(xué)技術(shù)出版社,2000
2014年1月13日
第四篇:職工信息管理系統(tǒng)源代碼
#include
intnum;
/*定義一個(gè)職工信息的結(jié)構(gòu)體*/ char name[20];
/*定義一個(gè)職工信息的結(jié)構(gòu)體*/
char sex[10];
//用字符串存放職工的性別數(shù)據(jù)
char birth[20];//用字符串存放職工的出生年月數(shù)據(jù)
char deta[20];//用字符串存放職工的工作年月數(shù)據(jù)
char education[20];//用字符串存放職工的學(xué)歷數(shù)據(jù)
double salary;
//用字符串存放職工的性別數(shù)據(jù)
char work[30];//用字符串存放職工的職務(wù)數(shù)據(jù)
char addr[20];//用字符串存放職工的地址數(shù)據(jù)
char tel[20];//用字符串存放職工的電話數(shù)據(jù) }worker[100];//用結(jié)構(gòu)體數(shù)組存放職工的所有信息 void menu();
void input();
void save();
void read();
void display();
void add();
void search();
voidsearch_education();
voidsearch_num();
void del();
void modify();
void main()
{ char s;
system(“color 3f”);
printf(“nn”);
printf(“ t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);
printf(“ t┃**********************************************************┃n”);
printf(“ t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃n”);
printf(“ t┃***┃************************************************┃***┃n”);
printf(“ t┃***┃***
****┃***┃n”);
printf(“ t┃***┃***
歡迎使用職工信息管理系統(tǒng)
****┃***┃n”);
printf(“ t┃***┃***
****┃***┃n”);
printf(“ t┃***┃***
****┃***┃n”);
printf(“ t┃***┃***
制作人吳青伶
****┃***┃n”);
printf(“ t┃***┃***
****┃***┃n”);
printf(“ t┃***┃***
2013.12.28
****┃***┃n”);
printf(“ t┃***┃***
****┃***┃n”);
printf(“ t┃***┃************************************************┃***┃n”);
printf(“ t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃n”);
printf(“ t┃**********************************************************┃n”);printf(“ t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);do { menu();printf(“Do you want to continue?(y/n)”);
s=getchar();}while(s=='Y'||s=='y');} void menu()/*菜單函數(shù)*/ { int b;printf(“t
n”);printf(“t
n”);printf(“t
n”);printf(“t
n”);printf(“t
n”);printf(“t
請(qǐng)選擇
n”);printf(“t
------------------------------n”);printf(“t
||
||
n”);printf(“t
||
1.職工信息錄入
||
n”);printf(“t
||
2.職工信息瀏覽
||
n”);printf(“t
||
3.職工信息添加
||
n”);printf(“t
||
4.職工信息查詢
||
n”);printf(“t
||
5.職工信息刪除
||
n”);printf(“t
||
6.職工信息修改
||
n”);printf(“t
||
0.退出
||
n”);printf(“tn”);printf(“n 輸入你的選擇項(xiàng)(0~6):n”);
scanf(“%d”,&b);
switch(b)
{
case 1 : //職工信息錄入、保存
input();
save();
getchar();
break;
case 2 ://讀入職工信息并顯示
read();
display();
getchar();break;
case 3 : //添加職工信息
add();getchar();break;
case 4 : //查詢職工信息
search();getchar();break;
case 5 : //讀入職工信息并實(shí)現(xiàn)職工信息刪除功能
read();
del();
getchar();
break;
case 6 : //讀入職工信息并修改職工信息
read();modify();getchar();break;
case 0 : exit(0);//退出
default:break;} } void input()
//錄入職工信息 {
inti,flag,j;printf(“輸入職工個(gè)數(shù)(默認(rèn)個(gè)數(shù)為2):”);scanf(“%d”,&N);fflush(stdin);//清除緩存 for(i=0;i { loop: printf(“職工號(hào):”);scanf(“%d”,&worker[i].num);fflush(stdin);flag=1;if(worker[N].num<0) printf(“請(qǐng)輸入正整數(shù):n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工號(hào)重復(fù),請(qǐng)重新輸入!n”); goto loop; } } printf(“姓名:”);scanf(“%s”,worker[i].name);fflush(stdin);printf(“性別:”);scanf(“ %s”,worker[i].sex);fflush(stdin);printf(“出生年月:”);scanf(“%d”,&worker[i].birth);fflush(stdin);printf(“工作年月:”);scanf(“%lf”,&worker[i].deta);fflush(stdin);printf(“請(qǐng)輸入學(xué)歷(中專=zz,大專=dz,本科=bk,研究生=y(tǒng)js):n”);scanf(“%s”,worker[i].education);fflush(stdin);printf(“工資:”);scanf(“%lf”,worker[i].salary);fflush(stdin);printf(“職務(wù):”);scanf(“%s”,worker[i].work);fflush(stdin);printf(“住址:”);scanf(“%s”,worker[i].addr);fflush(stdin);printf(“電話:”);scanf(“%s”,worker[i].tel);fflush(stdin); } printf(“n創(chuàng)建完畢!n”);} void save() //保存函數(shù) { FILE *fp;int i; if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只寫方式打開一個(gè)二進(jìn)制文件 { printf(“ncannot open filen”); exit(0);} for(i=0;i void read() //讀入函數(shù) { FILE *fp;int i=0; if((fp=fopen(“worker.txt”,“rb”))==NULL)//以只讀方式為輸出打開磁盤文件中的一個(gè)二進(jìn)制文件 { printf(“ncannot open filen”); exit(0);} do{ fread(&worker[i],sizeof(struct worker),1,fp);//從worker.txt文件向內(nèi)存讀入數(shù)據(jù)(二進(jìn)制) i++;}while(!feof(fp));fclose(fp); N=i-1;} void display() //信息瀏覽函數(shù) { int i;for(i=0;i { printf(“職工號(hào):%dn”,worker[i].num);printf(“姓名:%sn”,worker[i].name);printf(“性別:%sn”,worker[i].sex);printf(“出生年月:%dn”,worker[i].birth);printf(“工作年月:%dn”,worker[i].deta);printf(“學(xué)歷:%sn”,worker[i].education);printf(“工資:%lfn”,worker[i].salary);printf(“職務(wù):%dn”,worker[i].work);printf(“住址:%sn”,worker[i].addr);printf(“電話:%sn”,worker[i].tel); } } void add() //添加函數(shù) { FILE *fp;int i;struct worker p;double t;printf(“n請(qǐng)輸入新增加職工的信息:n”); printf(“請(qǐng)輸入職工號(hào):n”); scanf(“%d”,&p.num); for(i=0;i { while(worker[i].num==p.num) { printf(“ 工號(hào)重復(fù),請(qǐng)重新輸入!n”); scanf(“%d”,&p.num); } } printf(“請(qǐng)輸入姓名:n”);scanf(“%s”,p.name);printf(“請(qǐng)輸入性別:n”);scanf(“%s”,p.sex);printf(“請(qǐng)輸入出生年月:n”);scanf(“%d”,&p.birth);printf(“請(qǐng)輸入工作年月:n”);scanf(“%d”,&p.deta);printf(“請(qǐng)輸入學(xué)歷(中專=zz,大專=dz,本科=bk,=yjs:):n”);scanf(“%s”,p.education);printf(“請(qǐng)輸入工資:n”);scanf(“%lf”,&t);p.salary=t;printf(“請(qǐng)輸入職務(wù):n”);scanf(“%s”,p.work);printf(“請(qǐng)輸入住址:n”);scanf(“%s”,p.addr);printf(“請(qǐng)輸入電話:n”);scanf(“%s”,p.tel);printf(“n添加完畢!n”); if((fp=fopen(“worker.txt”,“ab”))==NULL)//以追加方式打開一個(gè)二進(jìn)制文件尾部 { printf(“ncannot open filen”);exit(0); } fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);} void search() //查詢函數(shù) { int c;do { puts(“nsearch by=>n1.學(xué)歷2.職工號(hào)3.取消并返回”);printf(“Which you needed?:n”);scanf(“%d”,&c); 研究生if(c>3||c<1) { puts(“nchoiceerror!please again!”);getchar();//此語句用于接受在執(zhí)行上一句時(shí)最后輸出的回車符 } } while(c>3||c<1); { switch(c) { case 1:search_education();break;case 2:search_num();break;case 3:menu();break; } } } void search_education() //按學(xué)歷查詢函數(shù) { inti,flag=0;char s[10];printf(“n請(qǐng)輸入你要查詢的學(xué)歷:n”);scanf(“%s”,s);for(i=0;i { if(strcmp(s,worker[i].education)==0) { printf(“職工號(hào):%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性別:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“學(xué)歷(中專=zz,大專=dz,yjs):%sn”,worker[i].education);printf(“工資:%lfn”,worker[i].salary);printf(“職務(wù):%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“電話:%sn”,worker[i].tel);flag++; } } if(flag==0) printf(“n對(duì)不起沒有找到!n”);getchar();} void search_num() //按工號(hào)查詢函數(shù) { inti,s,flag=0;printf(“n輸入要查詢的職工號(hào)!:n”);scanf(“%d”,&s); 本科=bk,研究生=for(i=0;i { if(s==worker[i].num) { printf(“職工號(hào):%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性別:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“學(xué)歷(中專=zz,大專=dz,本科=bk,研究生=y(tǒng)js):%sn”,worker[i].education); printf(“工資:%lfn”,worker[i].salary);printf(“職務(wù):%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“電話:%sn”,worker[i].tel); flag++; } } if(flag==0)printf(“n對(duì)不起沒有找到!please”); getchar();} void del() //刪除函數(shù) { inti,j;FILE *fp;char name[20];char c;if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只寫方式打開一個(gè)二進(jìn)制文件 { printf(“ncannot open filen”);exit(0); } printf(“請(qǐng)輸入要?jiǎng)h除的職工的姓名:”);scanf(“%s”,name);for(i=0;i if(strcmp(name,worker[i].name)==0)//判斷輸入的姓名和原來的姓名是否相同 { printf(“找到該職工,是否刪除?(y/n)”); fflush(stdin); scanf(“%c”,&c); if(c =='Y'||c=='y') { for(j=i;j worker[j]=worker[j+1]; printf(“刪除成功!n”); //break; } } } if(i>=N){ printf(“沒有找到該職工!n ”); return;} else { N=N-1; for(i=0;i if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1) { printf(“ncannot save filen”);getchar(); } fclose(fp);} } void modify() //修改函數(shù) { struct worker p;FILE *fp;inti,n;double t;printf(“n輸入要修改的職工號(hào):n”);scanf(“%d”,&n); for(i=0;i if(n==worker[i].num) { printf(“找到該職工的信息(任意鍵繼續(xù))!”); printf(“n請(qǐng)輸入職工的信息!n”); printf(“請(qǐng)輸入姓名:n”);scanf(“%s”,p.name); printf(“請(qǐng)輸入性別:n”);scanf(“%s”,p.sex); printf(“請(qǐng)輸入出身年月:n”);scanf(“%d”,&p.birth);printf(“請(qǐng)輸入工作年月:n”);scanf(“%lf”,&p.deta); printf(“請(qǐng)輸入學(xué)歷(中專=zz,大專=dz,yjs):n”);scanf(“%s”,p.education);printf(“請(qǐng)輸入工資:n”);scanf(“%lf”,&t); p.salary=t;printf(“請(qǐng)輸入職務(wù):n”);scanf(“%s”,p.work); printf(“請(qǐng)輸入住址:n”);scanf(“%s”,p.addr); 本科=bk,研究生= } printf(“請(qǐng)輸入電話:n”);scanf(“%s”,p.tel);p.num=n; if((fp=fopen(“worker.txt”,“r+”))==NULL)//以讀寫的方式將修改的信息寫入磁盤文件 { printf(“ncannot open filen”); exit(0); } fseek(fp,i*sizeof(struct worker),0);//將位置指針移到i*sizeof(struct worker)個(gè)字節(jié)處 fwrite(&p,sizeof(struct worker),1,fp); fclose(fp); printf(“修改成功!n”); break;} } if(i>=N)printf(“n未找到該職工!n”); 題目:職工信息系統(tǒng) 功能包括: ? 建立職工信息數(shù)據(jù)(職工編號(hào),姓名,性別,年齡,電話,職務(wù),工資和家庭成員信息)和信息簡表(編號(hào),姓名,電話)? 根據(jù)職工編號(hào)查詢職工信息(查詢時(shí)需要身份確認(rèn)。單位領(lǐng)導(dǎo)和人事秘書可以看到職工所有信息;財(cái)務(wù)處人員可以看到職工編號(hào),姓名,性別,年齡,電話,工資;一般職工僅能查到信息簡表)? 增加新職工信息(由人事秘書完成,需要身份確認(rèn))? 刪除職工信息(由人事秘書完成,需要身份確認(rèn))? 修改職工工資(由財(cái)務(wù)處人員完成,需要身份確認(rèn))? 要求所有信息能夠存儲(chǔ)在文件中,并具有良好的用戶界面 #include //ct用來儲(chǔ)存文件中數(shù)據(jù)組數(shù),Admin用來儲(chǔ)存登陸后該用戶的權(quán)限,//na用來儲(chǔ)存登錄所輸?shù)木幪?hào),方便主菜單內(nèi)使用其顯示當(dāng)前用戶 void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*職工編號(hào),姓名,性別,年齡,職務(wù),電話,工資和家庭成員信息*/ public: };void staff::printf() //輸出的選擇,判斷其職務(wù),選擇調(diào)用哪個(gè)輸出 { if(Admin==1||Admin==2)printf1();else int num;char name[LIM],sex[3];int age;char job[10],phone[15];double wages;char home[20];int admin;void printf();void printf1();void printf2();void printf3(); } if(Admin==3)printf2();else printf3();void staff::printf1() //領(lǐng)導(dǎo)及人事秘書能見的輸出 { } void staff::printf2() //財(cái)務(wù)人員能見的輸出 { } void staff::printf3() //普通員工能見的輸出 { cout< switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜單 { cout<<“t╔╤╤╤╤╤╤職工編號(hào): ”< //二級(jí)菜單 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陸的實(shí)現(xiàn)部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“輸入有誤,編號(hào)為一串?dāng)?shù)字,請(qǐng)重新輸入:n”; for(int i=1;i<=ct;i++)} fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu; { streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cerr << “■查找出錯(cuò)!程序?qū)⑼顺?!■n”;system(“pause”); exit(EXIT_FAILURE); } find.read((char *)&stu, sizeof stu);if(stu.num==na){ } w=1;Admin=stu.admin;} if(w==0){cout<<“t┣╋**登錄失??!未找到相應(yīng)的信息!程序?qū)⑼顺?*╋┫”< } int stu_num() //計(jì)算數(shù)據(jù)組數(shù) { } staff stu;ifstream stunum;stunum.open(file,ios_base::in|ios_base::binary);if(stunum.is_open()){ } stunum.close();return ct;stunum.seekg(0);while(stunum.read((char *)&stu,sizeof stu))ct++;system(“pause”);system(“cls”);void setadmin(staff &stu,char jobs[10]) //增加職工時(shí)根據(jù)職務(wù)設(shè)置權(quán)限 { char job1[10]=“總經(jīng)理”;char job2[10]=“副總經(jīng)理”;char job3[10]=“人事秘書”;char job4[10]=“財(cái)務(wù)人員”; } void add() // 輸入數(shù)據(jù)的函數(shù),增加職工 { if(Admin==2){ staff stu;if((!strcmp(stu.job,job1))||(!strcmp(stu.job,job2)))stu.admin=1;else if(!strcmp(stu.job,job3))stu.admin=2;else if(!strcmp(stu.job,job4))stu.admin=3; ofstream fout(file, ios_base::out | ios_base::app | ios_base::binary); if(!fout.is_open()) { cerr << “不能打開 ” << file << “ 文件:n”; exit(EXIT_FAILURE); } cout << “★增加職員信息★請(qǐng)輸入職工姓名:(按Enter鍵退出輸入!):n”;eatline(); cin.get(stu.name, LIM); while(stu.name[0]!= '
第五篇:【課程設(shè)計(jì)】職工信息管理系統(tǒng)