第一篇:C語言職工信息管理系統(tǒng)設(shè)計
#include
int num;char name[10];char sex;
int age;char xueli[30];
int wage;
char addr[30];
long int tel;}em[100];
/*定義一個結(jié)構(gòu)體*/
void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify();/*定義各函數(shù)*/
void menu()
/*菜單函數(shù)*/ { printf(“
☆☆☆計算機科學(xué)與技術(shù)學(xué)系☆☆☆n”);
printf(“n”);
printf(“
∮08802班 關(guān)麗霞∮n”);
printf(“n”);printf(“
******************職工信息管理****************n”);printf(“
1.錄入職工信息”);printf(“
2.瀏覽職工信息n”);printf(“
3.查詢職工信息”);printf(“
4.刪除職工信息n”);
printf(“
5.添加職工信息”);printf(“
6.修改職工信息n”);printf(“
7.退出n”);printf(“
********************謝謝使用******************n”);
printf(“n”);
printf(“n”);
}
void main(){
menu();/*調(diào)用菜單函數(shù)*/ int n,flag;char a;do {
printf(“請選擇你需要操作的步驟(1--7):n”);
scanf(“%d”,&n);
if(n>=1&&n<=7)
{
flag=1;
break;
}
else
{
flag=0;
printf(“您輸入有誤,請重新選擇!”);
} }
while(flag==0);
while(flag==1)
{
switch(n)
{
case 1:printf(“
◆◆◆輸入職工信息◆◆◆n”);printf(“n”);input();break;
case 2:printf(“
◆◆◆瀏覽職工信息◆◆◆n”);printf(“n”);display();break;
case 3:printf(“
◆◆◆按職工號查詢職工信息◆◆◆n”);printf(“n”);search();break;
case 4:printf(“
◆◆◆刪除職工信息◆◆◆n”);printf(“n”);del();break;
case 5:printf(“
◆◆◆添加職工信息◆◆◆n”);printf(“n”);add();break;
case 6:printf(“
◆◆◆修改職工信息◆◆◆n”);printf(“n”);modify();break;
case 7:exit(0);break;
default :break;
}
getchar();
printf(“n”);
printf(“是否繼續(xù)進行(y or n):n”);
scanf(“%c”,&a);
if(a=='y')
{
flag=1;
system(“cls”);/*清屏*/
menu();/*調(diào)用菜單函數(shù)*/
printf(“請再次選擇你需要操作的步驟(1--6):n”);
scanf(“%d”,&n);
printf(“n”);
}
else
exit(0);}
}
void input()
/*錄入函數(shù)*/ {
int i,m;
printf(“請輸入需要創(chuàng)建信息的職工人數(shù)(1--100):n”);
scanf(“%d”,&m);
for(i=0;i { printf(“職工號: ”); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf(“%8d ”,em[i].num); printf(“n”); printf(“請輸入姓名: ”); scanf(“%s”,em[i].name); getchar(); printf(“請輸入性別(f--女 m--男): ”); scanf(“%c”,&em[i].sex); printf(“請輸入年齡: ”); scanf(“%d”,&em[i].age); printf(“請輸入學(xué)歷: ”); scanf(“%s”,em[i].xueli); printf(“請輸入工資: ”); scanf(“%d”,&em[i].wage); printf(“請輸入住址: ”); scanf(“%s”,em[i].addr); printf(“請輸入電話: ”); scanf(“%d”,&em[i].tel); printf(“n”); } printf(“n創(chuàng)建完畢!n”); save(m);} void save(int m)/*保存文件函數(shù)*/ { int i;FILE*fp;if((fp=fopen(“employee_list”,“wb”))==NULL)/*創(chuàng)建文件并判斷是否能打開*/ { printf(“cannot open filen”); exit(0);} for(i=0;i if(fwrite(&em[i],sizeof(struct employee),1,fp)!=1) printf(“file write errorn”); fclose(fp);} int load()/*導(dǎo)入函數(shù)*/ { FILE*fp;int i=0; if((fp=fopen(“employee_list”,“rb”))==NULL){ printf(“cannot open filen”); exit(0);} else { do { fread(&em[i],sizeof(struct employee),1,fp); i++; } while(feof(fp)==0);} fclose(fp);return(i-1);} void display()/*瀏覽函數(shù)*/ { int i;int m=load();printf(“n 職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”);for(i=0;i printf(“n %dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } void del() /*刪除函數(shù)*/ { int m=load();int i,j,n,t,flag;char name[20];printf(“n 原來的職工信息:n”); display(); /* 調(diào)用瀏覽函數(shù)*/ printf(“n”);printf(“請輸入要刪除的職工的姓名:n”);scanf(“%s”,name);for(flag=1,i=0;flag&&i if(strcmp(em[i].name,name)==0) { printf(“n已找到此人,原始記錄為:n”); printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”); printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); printf(“n確實要刪除此人信息請按1,不刪除請按0n”); scanf(“%d”,&n); if(n==1) /*如果刪除,則其他的信息都往上移一行*/ { for(j=i;j { strcpy(em[j].name,em[j+1].name); em[j].num=em[j+1].num; em[j].sex=em[j+1].sex; em[j].age=em[j+1].age; strcpy(em[j].xueli,em[j+1].xueli); em[j].wage=em[j+1].wage; strcpy(em[j].addr,em[j+1].addr); em[j].tel=em[j+1].tel; } flag=0; } } } if(!flag) m=m-1;else printf(“n對不起,查無此人!n”); printf(“n 瀏覽刪除后的所有職工信息:n”); save(m); /*調(diào)用保存函數(shù)*/ display();/*調(diào)用瀏覽函數(shù)*/ printf(“n繼續(xù)刪除請按1,不再刪除請按0n”);scanf(“%d”,&t);switch(t){ case 1:del();break; case 0:break; default :break;} } void add()/*添加函數(shù)*/ { FILE*fp;int n; int count=0; int i; int m=load(); printf(“n 原來的職工信息:n”); display(); /* 調(diào)用瀏覽函數(shù)*/ printf(“n”); fp=fopen(“emploee_list”,“a”); printf(“請輸入想增加的職工數(shù):n”);scanf(“%d”,&n); for(i=m;i<(m+n);i++) { printf(“n 請輸入新增加職工的信息:n”); printf(“請輸入職工號: ”); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf(“%8d ”,em[i].num); printf(“n”); printf(“請輸入姓名: ”); scanf(“%s”,em[i].name); getchar(); printf(“請輸入性別(f--女 m--男): ”); scanf(“%c”,&em[i].sex); printf(“請輸入年齡: ”); scanf(“%d”,&em[i].age); printf(“請輸入學(xué)歷: ”); scanf(“%s”,em[i].xueli); printf(“請輸入工資: ”); scanf(“%d”,&em[i].wage); printf(“請輸入住址: ”); scanf(“%s”,em[i].addr); printf(“請輸入電話: ”); scanf(“%d”,&em[i].tel); printf(“n”); count=count+1; printf(“已增加的人數(shù):n”); printf(“%dn”,count);} printf(“n添加完畢!n”); m=m+count;printf(“n瀏覽增加后的所有職工信息:n”);printf(“n”);save(m); display(); fclose(fp);} void search()/*查詢函數(shù)*/ { int t,flag;do { printf(“n按職工號查詢請按1;按學(xué)歷查詢請按2;按電話號碼查詢請按3,進入主函數(shù)按4n”); scanf(“%d”,&t); if(t>=1&&t<=4) { flag=1; break; } else { flag=0; printf(“您輸入有誤,請重新選擇!”); } } while(flag==0); while(flag==1){ switch(t) { case 1:printf(“按職工號查詢n”);search_num();break; case 2:printf(“按學(xué)歷查詢n”);search_xueli();break; case 3:printf(“按電話號碼查詢n”);search_tel();break; case 4:main();break; default:break; } } } void search_num(){ int num; int i,t; int m=load(); printf(“請輸入要查找的職工號(20001111---20009999):n”); scanf(“%d”,&num); for(i=0;i if(num==em[i].num){ printf(“n已找到此人,其記錄為:n”); printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”); printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); break;} if(i==m) printf(“n對不起,查無此人n”); printf(“n”); printf(“返回查詢函數(shù)請按1,繼續(xù)查詢職工號請按2n”); scanf(“%d”,&t); switch(t) { case 1:search();break; case 2: break; default:break; } } void search_xueli(){ char xueli[30]; int i,t; int m=load(); printf(“請輸入要查找的學(xué)歷:n”); scanf(“%s”,xueli); for(i=0;i if(strcmp(em[i].xueli,xueli)==0){ printf(“n已找到,其記錄為:n”); printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”); printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } if(i==m) printf(“n對不起,查無此人n”); printf(“n”); printf(“返回查詢函數(shù)請按1,繼續(xù)查詢學(xué)歷請按2n”); scanf(“%d”,&t); switch(t) { case 1:search();break; case 2:break; default :break; } } void search_tel(){ long int tel; int i, t; int m=load(); printf(“請輸入要查找的電話號碼:n”); scanf(“%ld”,&tel); for(i=0;i if(tel==em[i].tel){ printf(“n已找到此人,其記錄為:n”); printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”); printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); break;} if(i==m) printf(“n對不起,查無此人n”); printf(“n”); printf(“返回查詢函數(shù)請按1,繼續(xù)查詢電話號碼請按2n”); scanf(“%d”,&t); switch(t) { case 1:search();break; case 2:break; default :break; } } void modify()/*修改函數(shù)*/ { int num;char name[10];char sex; int age;char xueli[30]; int wage; char addr[30]; long int tel; int b,c,i,n,t,flag; int m=load();/*導(dǎo)入文件內(nèi)的信息*/ printf(“n 原來的職工信息:n”); display(); /* 調(diào)用瀏覽函數(shù)*/ printf(“n”); printf(“請輸入要修改的職工的姓名:n”);scanf(“%s”,name);for(flag=1,i=0;flag&&i if(strcmp(em[i].name,name)==0) { printf(“n已找到此人,原始記錄為:n”); printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話 n”); printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); printf(“n確實要修改此人信息請按1;不修改請按0n”); scanf(“%d”,&n); if(n==1) { printf(“n需要進行修改的選項n 1.職工號 2.姓名 3.性別 4.年齡 5.學(xué)歷 6.工資 7.住址 8.電話n”); printf(“請輸入你想修改的那一項序號:n”); scanf(“%d”,&c); if(c>8||c<1) printf(“n選擇錯誤,請重新選擇!n”); } flag=0; } } if(flag==1)printf(“n對不起,查無此人!n”); do { switch(c) /*因為當(dāng)找到第i個職工時,for語句后i自加了1,所以下面的應(yīng)該把改后的信息賦值給第i-1個人*/ { case 1:printf(“職工號改為: ”); scanf(“%d”,&num); em[i-1].num=num; break; case 2:printf(“姓名改為: ”); scanf(“%s”,name); strcpy(em[i-1].name,name); break; case 3:printf(“性別改為: ”); getchar(); scanf(“%c”,&sex); em[i-1].sex=sex; break; case 4:printf(“年齡改為: ”); scanf(“%d”,&age); em[i-1].age=age; break; case 5:printf(“學(xué)歷改為: ”); scanf(“%s”,xueli); strcpy(em[i-1].xueli,xueli); break; case 6:printf(“工資改為: ”); scanf(“%d”,wage); break; case 7:printf(“住址改為: ”); scanf(“%s”,addr); strcpy(em[i-1].addr,addr); break; case 8:printf(“電話改為: ”); scanf(“%ld”,&tel); em[i-1].tel=tel; break; } printf(“n”); printf(“n是否確定所修改的信息?n 是 請按1;不,重新修改 請按2: n”); scanf(“%d”,&b); } while(b==2); printf(“n瀏覽修改后的所有職工信息:n”); printf(“n”); save(m); display(); printf(“n繼續(xù)修改請按1,不再修改請按0n”); scanf(“%d”,&t); switch(t){ case 1:modify();break; case 0:break; default :break;} } 職工信息管理系統(tǒng)設(shè)計報告(VB)編號:22 職工信息管理系統(tǒng) 設(shè)計報告 學(xué)院 土木工程 班級 測繪C111 學(xué)號 117551 姓名 馬驍飛 成績 一、設(shè)計思路 1.要達(dá)到的目的 培養(yǎng)學(xué)生綜合利用VB語言進行程序設(shè)計的能力,主要是培養(yǎng)學(xué)生綜合使用基本控件的、文件讀寫、數(shù)組操作等能力。 利用讀取數(shù)據(jù)按鈕,打開選中的數(shù)據(jù)文件職工.txt,并從該文件中讀取職工職工號、姓名、職稱和工資,保存在數(shù)組中,并顯示在文本框中。 清除文本框中的職工的信息。 在文本框中顯示職工的信息。 按照職工號查詢職工信息,并顯示。 按照姓名查詢職工信息,并顯示。 按照職工號修改職工信息,并顯示。 按照姓名修改職工信息,并顯示。 追加一條記錄數(shù)據(jù),并顯示。2.關(guān)鍵問題的解決 (1)通過“讀取數(shù)據(jù)”按鈕應(yīng)能利用應(yīng)能利用右側(cè)圖示樣式窗體形式,打開選中的數(shù)據(jù)文件職工.txt,并從該文件中讀取職工職工號、姓名、職稱和工資,保存在數(shù)組中,并顯示在文本框中。(2)通過“清除數(shù)據(jù)”按鈕應(yīng)能清除文本框中的內(nèi)容。(3)從“按職工號查詢”按鈕左端文本框輸入職工號,單擊“按職工號查詢”,在窗體大的文本框中顯示查詢結(jié)果。從“按姓名查詢”按鈕左端文本框輸入姓名,單擊“按姓名查詢”按鈕,在窗體大的文本框中顯示查詢結(jié)果。(4)從“按職工號修改”(“按姓名修改”)按鈕,在輸入對話框中輸入職工號,對查詢到的職工的職工號(姓名)進行修改,在窗體大的文本框中顯示修改結(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è)計報告(VB)編號: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 “請輸入正確的職工號” End If 職工信息管理系統(tǒng)設(shè)計報告(VB)編號:22 End Sub Private Sub Command5_Click()Dim a As String Dim b As String b = InputBox(“請輸入要修改的職工的職工號”)a = InputBox(“請輸入新的職工姓名”) 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 “請輸入正確的職工號” End If List1.AddItem a & “ ” & b End Sub 職工信息管理系統(tǒng)設(shè)計報告(VB)編號: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 “請輸入正確的職工姓名” End If End Sub Private Sub Command7_Click()Dim a As String Dim b As String a = InputBox(“請輸入要修改的職工姓名”)b = Str(InputBox(“請輸入新職工號”)) If a = “張三” Then List1.AddItem a & “ ” & b 職工信息管理系統(tǒng)設(shè)計報告(VB)編號: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 “請輸入正確的職工姓名” End If End Sub Private Sub Command8_Click()Dim a As String Dim b As String a = InputBox(“請輸入新員工姓名”)b = InputBox(“請輸入新員工的職工號”) List1.AddItem a & “ ” & b End Sub Private Sub Combo2_Change()Select Case Comb2.Text 職工信息管理系統(tǒng)設(shè)計報告(VB)編號: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è)計報告(VB)編號: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è)計方案的完善及目前存在的問題 1.設(shè)計方案要完善的地方 追加的信息無法加載到“職工信息txt”里 查詢只是單一的一對一輸入,不智能 文件類型的篩選問題暫未處理辦法 2.目前存在的問題 只是簡單的查詢,不適合大量數(shù)據(jù)的導(dǎo)入與導(dǎo)出,不方便查看 四、本次設(shè)計的收獲及心得體會 第一次嘗試程序的制作,覺得非常有意思,做成功以后很有成就感,我還發(fā)現(xiàn),程序制作出來的好壞直接影響使用者的工作效率,好的軟件可以使用戶事半功倍,對程序的運作體系越了解,設(shè)計的軟件越智能,越能更好的服務(wù)于使用者,好好學(xué)習(xí)VB計算機語言,是磨刀不誤砍柴工的體現(xiàn)。 五、對該題目和VB設(shè)計的意見和建議 1.對該題目的意見和建議 Form2中的文件類型,有些偏難,在少數(shù)文件夾的情況下可以不用通過文件類型的篩選 2.對本次設(shè)計的意見和建議 對此次課程設(shè)計的時間安排應(yīng)更具體,應(yīng)有相應(yīng)的素材圖片,增添軟件的美感 #include intnum; /*定義一個職工信息的結(jié)構(gòu)體*/ char name[20]; /*定義一個職工信息的結(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 請選擇 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 輸入你的選擇項(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 : //讀入職工信息并實現(xiàn)職工信息刪除功能 read(); del(); getchar(); break; case 6 : //讀入職工信息并修改職工信息 read();modify();getchar();break; case 0 : exit(0);//退出 default:break;} } void input() //錄入職工信息 { inti,flag,j;printf(“輸入職工個數(shù)(默認(rèn)個數(shù)為2):”);scanf(“%d”,&N);fflush(stdin);//清除緩存 for(i=0;i { loop: printf(“職工號:”);scanf(“%d”,&worker[i].num);fflush(stdin);flag=1;if(worker[N].num<0) printf(“請輸入正整數(shù):n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工號重復(fù),請重新輸入!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(“請輸入學(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)//以只寫方式打開一個二進制文件 { 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)//以只讀方式為輸出打開磁盤文件中的一個二進制文件 { printf(“ncannot open filen”); exit(0);} do{ fread(&worker[i],sizeof(struct worker),1,fp);//從worker.txt文件向內(nèi)存讀入數(shù)據(jù)(二進制) i++;}while(!feof(fp));fclose(fp); N=i-1;} void display() //信息瀏覽函數(shù) { int i;for(i=0;i { printf(“職工號:%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請輸入新增加職工的信息:n”); printf(“請輸入職工號:n”); scanf(“%d”,&p.num); for(i=0;i { while(worker[i].num==p.num) { printf(“ 工號重復(fù),請重新輸入!n”); scanf(“%d”,&p.num); } } printf(“請輸入姓名:n”);scanf(“%s”,p.name);printf(“請輸入性別:n”);scanf(“%s”,p.sex);printf(“請輸入出生年月:n”);scanf(“%d”,&p.birth);printf(“請輸入工作年月:n”);scanf(“%d”,&p.deta);printf(“請輸入學(xué)歷(中專=zz,大專=dz,本科=bk,=yjs:):n”);scanf(“%s”,p.education);printf(“請輸入工資:n”);scanf(“%lf”,&t);p.salary=t;printf(“請輸入職務(wù):n”);scanf(“%s”,p.work);printf(“請輸入住址:n”);scanf(“%s”,p.addr);printf(“請輸入電話:n”);scanf(“%s”,p.tel);printf(“n添加完畢!n”); if((fp=fopen(“worker.txt”,“ab”))==NULL)//以追加方式打開一個二進制文件尾部 { 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.職工號3.取消并返回”);printf(“Which you needed?:n”);scanf(“%d”,&c); 研究生if(c>3||c<1) { puts(“nchoiceerror!please again!”);getchar();//此語句用于接受在執(zhí)行上一句時最后輸出的回車符 } } 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請輸入你要查詢的學(xué)歷:n”);scanf(“%s”,s);for(i=0;i { if(strcmp(s,worker[i].education)==0) { printf(“職工號:%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對不起沒有找到!n”);getchar();} void search_num() //按工號查詢函數(shù) { inti,s,flag=0;printf(“n輸入要查詢的職工號!:n”);scanf(“%d”,&s); 本科=bk,研究生=for(i=0;i { if(s==worker[i].num) { printf(“職工號:%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對不起沒有找到!please”); getchar();} void del() //刪除函數(shù) { inti,j;FILE *fp;char name[20];char c;if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只寫方式打開一個二進制文件 { printf(“ncannot open filen”);exit(0); } printf(“請輸入要刪除的職工的姓名:”);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輸入要修改的職工號:n”);scanf(“%d”,&n); for(i=0;i if(n==worker[i].num) { printf(“找到該職工的信息(任意鍵繼續(xù))!”); printf(“n請輸入職工的信息!n”); printf(“請輸入姓名:n”);scanf(“%s”,p.name); printf(“請輸入性別:n”);scanf(“%s”,p.sex); printf(“請輸入出身年月:n”);scanf(“%d”,&p.birth);printf(“請輸入工作年月:n”);scanf(“%lf”,&p.deta); printf(“請輸入學(xué)歷(中專=zz,大專=dz,yjs):n”);scanf(“%s”,p.education);printf(“請輸入工資:n”);scanf(“%lf”,&t); p.salary=t;printf(“請輸入職務(wù):n”);scanf(“%s”,p.work); printf(“請輸入住址:n”);scanf(“%s”,p.addr); 本科=bk,研究生= } printf(“請輸入電話: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)個字節(jié)處 fwrite(&p,sizeof(struct worker),1,fp); fclose(fp); printf(“修改成功!n”); break;} } if(i>=N)printf(“n未找到該職工!n”); 題目:職工信息系統(tǒng) 功能包括: ? 建立職工信息數(shù)據(jù)(職工編號,姓名,性別,年齡,電話,職務(wù),工資和家庭成員信息)和信息簡表(編號,姓名,電話)? 根據(jù)職工編號查詢職工信息(查詢時需要身份確認(rèn)。單位領(lǐng)導(dǎo)和人事秘書可以看到職工所有信息;財務(wù)處人員可以看到職工編號,姓名,性別,年齡,電話,工資;一般職工僅能查到信息簡表)? 增加新職工信息(由人事秘書完成,需要身份確認(rèn))? 刪除職工信息(由人事秘書完成,需要身份確認(rèn))? 修改職工工資(由財務(wù)處人員完成,需要身份確認(rèn))? 要求所有信息能夠存儲在文件中,并具有良好的用戶界面 #include //ct用來儲存文件中數(shù)據(jù)組數(shù),Admin用來儲存登陸后該用戶的權(quán)限,//na用來儲存登錄所輸?shù)木幪?,方便主菜單?nèi)使用其顯示當(dāng)前用戶 void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*職工編號,姓名,性別,年齡,職務(wù),電話,工資和家庭成員信息*/ public: };void staff::printf() //輸出的選擇,判斷其職務(wù),選擇調(diào)用哪個輸出 { 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() //財務(wù)人員能見的輸出 { } void staff::printf3() //普通員工能見的輸出 { cout< switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜單 { cout<<“t╔╤╤╤╤╤╤職工編號: ”< //二級菜單 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陸的實現(xiàn)部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“輸入有誤,編號為一串?dāng)?shù)字,請重新輸入: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 << “■查找出錯!程序?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() //計算數(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]) //增加職工時根據(jù)職務(wù)設(shè)置權(quán)限 { char job1[10]=“總經(jīng)理”;char job2[10]=“副總經(jīng)理”;char job3[10]=“人事秘書”;char job4[10]=“財務(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 << “★增加職員信息★請輸入職工姓名:(按Enter鍵退出輸入!):n”;eatline(); cin.get(stu.name, LIM); while(stu.name[0]!= '
第二篇:職工信息管理系統(tǒng)
第三篇:職工信息管理系統(tǒng)源代碼
第四篇:【課程設(shè)計】職工信息管理系統(tǒng)