第一篇:C语言职工信息管理系统设计
#include
int num;char name[10];char sex;
int age;char xueli[30];
int wage;
char addr[30];
long int tel;}em[100];
/*定义一个结构体*/
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();/*定义各函数*/
void menu()
/*菜单函数*/ { printf(“
☆☆☆计算机科学与技术学系☆☆☆n”);
printf(“n”);
printf(“
∮08802班 关丽霞∮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();/*调用菜单函数*/ 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(“是否继续进行(y or n):n”);
scanf(“%c”,&a);
if(a=='y')
{
flag=1;
system(“cls”);/*清屏*/
menu();/*调用菜单函数*/
printf(“请再次选择你需要操作的步骤(1--6):n”);
scanf(“%d”,&n);
printf(“n”);
}
else
exit(0);}
}
void input()
/*录入函数*/ {
int i,m;
printf(“请输入需要创建信息的职工人数(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(“请输入学历: ”); 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创建完毕!n”); save(m);} void save(int m)/*保存文件函数*/ { int i;FILE*fp;if((fp=fopen(“employee_list”,“wb”))==NULL)/*创建文件并判断是否能打开*/ { 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()/*导入函数*/ { 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()/*浏览函数*/ { int i;int m=load();printf(“n 职工号t姓名t性别t年龄t学历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() /*删除函数*/ { int m=load();int i,j,n,t,flag;char name[20];printf(“n 原来的职工信息:n”); display(); /* 调用浏览函数*/ 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学历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); /*调用保存函数*/ display();/*调用浏览函数*/ printf(“n继续删除请按1,不再删除请按0n”);scanf(“%d”,&t);switch(t){ case 1:del();break; case 0:break; default :break;} } void add()/*添加函数*/ { FILE*fp;int n; int count=0; int i; int m=load(); printf(“n 原来的职工信息:n”); display(); /* 调用浏览函数*/ printf(“n”); fp=fopen(“emploee_list”,“a”); printf(“请输入想增加的职工数: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(“请输入学历: ”); 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(“已增加的人数:n”); printf(“%dn”,count);} printf(“n添加完毕!n”); m=m+count;printf(“n浏览增加后的所有职工信息:n”);printf(“n”);save(m); display(); fclose(fp);} void search()/*查询函数*/ { int t,flag;do { printf(“n按职工号查询请按1;按学历查询请按2;按电话号码查询请按3,进入主函数按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(“按学历查询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学历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(“返回查询函数请按1,继续查询职工号请按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(“请输入要查找的学历:n”); scanf(“%s”,xueli); for(i=0;i if(strcmp(em[i].xueli,xueli)==0){ printf(“n已找到,其记录为:n”); printf(“n职工号t姓名t性别t年龄t学历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(“返回查询函数请按1,继续查询学历请按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学历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(“返回查询函数请按1,继续查询电话号码请按2n”); scanf(“%d”,&t); switch(t) { case 1:search();break; case 2:break; default :break; } } void modify()/*修改函数*/ { 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();/*导入文件内的信息*/ printf(“n 原来的职工信息:n”); display(); /* 调用浏览函数*/ 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学历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.学历 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) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第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(“学历改为: ”); 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继续修改请按1,不再修改请按0n”); scanf(“%d”,&t); switch(t){ case 1:modify();break; case 0:break; default :break;} } 职工信息管理系统设计报告(VB)编号:22 职工信息管理系统 设计报告 学院 土木工程 班级 测绘C111 学号 117551 姓名 马骁飞 成绩 一、设计思路 1.要达到的目的 培养学生综合利用VB语言进行程序设计的能力,主要是培养学生综合使用基本控件的、文件读写、数组操作等能力。 利用读取数据按钮,打开选中的数据文件职工.txt,并从该文件中读取职工职工号、姓名、职称和工资,保存在数组中,并显示在文本框中。 清除文本框中的职工的信息。 在文本框中显示职工的信息。 按照职工号查询职工信息,并显示。 按照姓名查询职工信息,并显示。 按照职工号修改职工信息,并显示。 按照姓名修改职工信息,并显示。 追加一条记录数据,并显示。2.关键问题的解决 (1)通过“读取数据”按钮应能利用应能利用右侧图示样式窗体形式,打开选中的数据文件职工.txt,并从该文件中读取职工职工号、姓名、职称和工资,保存在数组中,并显示在文本框中。(2)通过“清除数据”按钮应能清除文本框中的内容。(3)从“按职工号查询”按钮左端文本框输入职工号,单击“按职工号查询”,在窗体大的文本框中显示查询结果。从“按姓名查询”按钮左端文本框输入姓名,单击“按姓名查询”按钮,在窗体大的文本框中显示查询结果。(4)从“按职工号修改”(“按姓名修改”)按钮,在输入对话框中输入职工号,对查询到的职工的职工号(姓名)进行修改,在窗体大的文本框中显示修改结果。 从输入一条记录后文本框中输入一条记录信息,单击“追加数据并显示结果”按钮,添加到职工.txt中,并将追加数据后职工.txt的信息显示窗体的大文本框中。 二、部分程序关键源代码及注释 rivate Sub Command1_Click()Form2.Show End Sub Private Sub Command2_Click() 职工信息管理系统设计报告(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 职工信息管理系统设计报告(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 职工信息管理系统设计报告(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 职工信息管理系统设计报告(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 职工信息管理系统设计报告(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 职工信息管理系统设计报告(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 三、设计方案的完善及目前存在的问题 1.设计方案要完善的地方 追加的信息无法加载到“职工信息txt”里 查询只是单一的一对一输入,不智能 文件类型的筛选问题暂未处理办法 2.目前存在的问题 只是简单的查询,不适合大量数据的导入与导出,不方便查看 四、本次设计的收获及心得体会 第一次尝试程序的制作,觉得非常有意思,做成功以后很有成就感,我还发现,程序制作出来的好坏直接影响使用者的工作效率,好的软件可以使用户事半功倍,对程序的运作体系越了解,设计的软件越智能,越能更好的服务于使用者,好好学习VB计算机语言,是磨刀不误砍柴工的体现。 五、对该题目和VB设计的意见和建议 1.对该题目的意见和建议 Form2中的文件类型,有些偏难,在少数文件夹的情况下可以不用通过文件类型的筛选 2.对本次设计的意见和建议 对此次课程设计的时间安排应更具体,应有相应的素材图片,增添软件的美感 #include intnum; /*定义一个职工信息的结构体*/ char name[20]; /*定义一个职工信息的结构体*/ char sex[10]; //用字符串存放职工的性别数据 char birth[20];//用字符串存放职工的出生年月数据 char deta[20];//用字符串存放职工的工作年月数据 char education[20];//用字符串存放职工的学历数据 double salary; //用字符串存放职工的性别数据 char work[30];//用字符串存放职工的职务数据 char addr[20];//用字符串存放职工的地址数据 char tel[20];//用字符串存放职工的电话数据 }worker[100];//用结构体数组存放职工的所有信息 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┃***┃*** 欢迎使用职工信息管理系统 ****┃***┃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()/*菜单函数*/ { 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 : //读入职工信息并实现职工信息删除功能 read(); del(); getchar(); break; case 6 : //读入职工信息并修改职工信息 read();modify();getchar();break; case 0 : exit(0);//退出 default:break;} } void input() //录入职工信息 { inti,flag,j;printf(“输入职工个数(默认个数为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(“请输入正整数:n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工号重复,请重新输入!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(“请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):n”);scanf(“%s”,worker[i].education);fflush(stdin);printf(“工资:”);scanf(“%lf”,worker[i].salary);fflush(stdin);printf(“职务:”);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创建完毕!n”);} void save() //保存函数 { FILE *fp;int i; if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”); exit(0);} for(i=0;i void read() //读入函数 { 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文件向内存读入数据(二进制) i++;}while(!feof(fp));fclose(fp); N=i-1;} void display() //信息浏览函数 { 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(“学历:%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%dn”,worker[i].work);printf(“住址:%sn”,worker[i].addr);printf(“电话:%sn”,worker[i].tel); } } void add() //添加函数 { 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(“ 工号重复,请重新输入!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(“请输入学历(中专=zz,大专=dz,本科=bk,=yjs:):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t);p.salary=t;printf(“请输入职务: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() //查询函数 { int c;do { puts(“nsearch by=>n1.学历2.职工号3.取消并返回”);printf(“Which you needed?:n”);scanf(“%d”,&c); 研究生if(c>3||c<1) { puts(“nchoiceerror!please again!”);getchar();//此语句用于接受在执行上一句时最后输出的回车符 } } while(c>3||c<1); { switch(c) { case 1:search_education();break;case 2:search_num();break;case 3:menu();break; } } } void search_education() //按学历查询函数 { inti,flag=0;char s[10];printf(“n请输入你要查询的学历: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(“学历(中专=zz,大专=dz,yjs):%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%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() //按工号查询函数 { 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(“学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%sn”,worker[i].education); printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel); flag++; } } if(flag==0)printf(“n对不起没有找到!please”); getchar();} void del() //删除函数 { 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() //修改函数 { 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(“找到该职工的信息(任意键继续)!”); 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(“请输入学历(中专=zz,大专=dz,yjs):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t); p.salary=t;printf(“请输入职务: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)个字节处 fwrite(&p,sizeof(struct worker),1,fp); fclose(fp); printf(“修改成功!n”); break;} } if(i>=N)printf(“n未找到该职工!n”); 题目:职工信息系统 功能包括: 建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话) 根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面 #include //ct用来储存文件中数据组数,Admin用来储存登陆后该用户的权限,//na用来储存登录所输的编号,方便主菜单内使用其显示当前用户 void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*职工编号,姓名,性别,年龄,职务,电话,工资和家庭成员信息*/ public: };void staff::printf() //输出的选择,判断其职务,选择调用哪个输出 { 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() //领导及人事秘书能见的输出 { } void staff::printf2() //财务人员能见的输出 { } void staff::printf3() //普通员工能见的输出 { cout< switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜单 { cout<<“t╔╤╤╤╤╤╤职工编号: ”< //二级菜单 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陆的实现部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“输入有误,编号为一串数字,请重新输入: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 << “■查找出错!程序将退出!■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┣╋**登录失败!未找到相应的信息!程序将退出**╋┫”< } int stu_num() //计算数据组数 { } 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]) //增加职工时根据职务设置权限 { char job1[10]=“总经理”;char job2[10]=“副总经理”;char job3[10]=“人事秘书”;char job4[10]=“财务人员”; } void add() // 输入数据的函数,增加职工 { 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]!= ' ') { cout << “★增加职员信息★请输入职工编号:”; cin>>stu.num;cout << “★增加职员信息★请输入职工性别:”;eatline();cin.get(stu.sex, 3);cout << “★增加职员信息★请输入职工年龄:”;cin>>stu.age; cout << “★增加职员信息★请输入职工职务:”;eatline();cin.get(stu.job, 10); cout << “★增加职员信息★请输入职工电话:”;eatline(); cin.get(stu.phone, 15); cout << “★增加职员信息★请输入职工工资:”;cin>>stu.wages; cout << “★增加职员信息★请输入职工家庭信息:(按Enter键退出输入!):n”; eatline(); cin.get(stu.home, 20);setadmin(stu,stu.job); fout.write((char *)&stu, sizeof stu);cout << “■增加职员信息■请输入职工姓名:(按Enter键退出输入!):n”; eatline();cin.get(stu.name,LIM); } fout.close(); } else cout<<“******************无权限,请与人事部秘书联系*******************************”< void output() //输出全部职工信息的函数 { staff stu; } ifstream find;find.open(file,ios_base::in|ios_base::binary);hline(1);while(find.read((char *)&stu,sizeof stu)){ cout< < //修改数据函数 { if(Admin==3){ fstream change; int w=0;staff stu;streampos place; change.open(file,ios_base::in|ios_base::out|ios_base::binary);if(change.eof())change.clear(); //清除EOF cout<<“请输入你要修改的职员编号:”< place =i* sizeof stu;change.seekg(place);if(change.fail()){ cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE); } change.read((char *)&stu, sizeof stu);if(stu.num==rec){ } w=1; cout << “你选择的是:n”;stu.printf2();break; } if(w==1){ cout << “请输入你要修改职员的工资: ”;while(cin >> stu.wages){ if(stu.wages<0||stu.wages>100000) { cout<<“■输入的工资错误!请重新输入:■ cin.clear(); while(cin.get()!='n'); continue; } break;} change.seekp(place); // 回到查找到的地点 change.write((char *)&stu, sizeof stu)<< flush;if(change.fail()){ cerr << ”■--查找失败!程序将退出--■n“;system(”pause“); n”; } exit(EXIT_FAILURE);} change.close();cout<<“★---修改成功!---★”< void del() //删除指定编号的职工信息 { if(Admin==2){ while(1){ eatline();int delnum;cout<<“请输入你要删除的职工的编号:n”; cin>>delnum;fstream in;in.open(“staff.dat”,ios_base::in|ios_base::binary);if(!in){ cout<<“打开失败”;return;} fstream temp;temp.open(“temp.dat”,ios_base::out|ios_base::binary);staff stu;int q;in.read((char*)&stu,sizeof(stu));while(!in.eof())//将文件内容修改后临时寸到另一个文件中 { } in.close();temp.close();//修改完成,将原文件清空,并将临时文件内容q=0;if(stu.num==delnum){ } if(q==0)temp.write((char*)&stu,sizeof(stu));in.read((char*)&stu,sizeof(stu));q=1;复制回原文件 中 } { out.write((char*)&stu,sizeof(stu));temp.read((char*)&stu,sizeof(stu));out.open(“staff.dat”,ios_base::out|ios_base::trunc|ios_base::binary);temp.read((char*)&stu,sizeof(stu));while(!temp.eof())//将文件内容修改后临时寸到另一个文件 temp.open(“temp.dat”,ios_base::in|ios_base::binary);if(!temp){ cout<<“打开失败”;return;} ofstream out;}//完成复制 out.close();temp.close(); cout<<“删除成功!t是否继续删除?y/nn”;char x;cin>>x;if(!(x=='y'||x=='Y'))break;} else cout<<“****************无权限,请与人事部秘书联系*****************************”< void find() //查找职工的实现部分 { while(1){ menu2();//eatline();int a;int w=0;cin>>a;int na;char sna[LIM];fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu;switch(a){ case 1:cout<<“请输入职工编号:”< case 2:cout<<“请输入职工姓名:”< if(Admin==1||Admin==2)output();else cout<<“**************无权限,请与单位领导或人事部秘书联系********************”< }break;default:{ } for(int i=1;i<=ct;i++){ streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cout<<“■选择执行的操作错误!■n”;cin.clear();while(cin.get()!='n');continue;} cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE);} find.read((char *)&stu, sizeof stu);switch(a){ case 1:if(stu.num==na){ w=1; stu.printf();};break;case 2:if(!strcmp(stu.name,sna)) { w=1; stu.printf(); };break;case 3:break;default:{ cout<<“■选择执行的操作错误!■ cin.clear(); while(cin.get()!='n');continue; } } } n”; } if(w==0)cout<<“■未找到此人!■”< 职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信 息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面 */ int main(){ system(“color 6F”);ifstream fin;fin.open(file,ios_base::in|ios_base::binary);if(!fin.is_open()){ staff st[5]={ {10001,“张三”,“男”,35,“总经理”,“***”,20000,“父母,弟弟,姐姐”,1},{10002,“李四”,“男”,32,“副总经理”,“***”,12000,“父母,兄长”,1},{10003,“ 王 婷 ”,“ 女 ”,25,“ 人 事 秘 书”,“***”,10000,“---略---”,2},{10004,“陈六”,“女”,25,“财务人员”,“***”,8000,“---略---”,3},{10005,“Obama”,“ 男 ”,23,“ 普 通 职 工”,“***5”,7000,“---略---”,0}};ofstream fout(file,ios_base::out|ios_base::binary); for(int i=0;i<5;i++)fout.write((char *)&st[i],sizeof st[i]);fout.close();} fin.close();stu_num();loading();while(1){ menu();cout<<“请输入你要选择的操作: char n;cin>>n;switch(n){ case '1':eatline();find();break;case '2':add();break;case '3':del();break;case '4':change();break;case '5':exit(EXIT_FAILURE); n ”; default:{ cout<<“■选择执行的操作错误!■n”; cin.clear(); while(cin.get()!='n'); continue;} 清除已经输入的内容,程序选择 } system(“pause”); system(“cls”); cin.clear();} return 0;} //如果选择错误,cin.clear等语句 软件技术专业 计算机应用基础课程设计任务书 (13级) 题目:职工信息管理系统 学生姓名:学号:班级: 题目类型:软件工程(R)指导教师: 一. 课程设计的题目简介 该设计要求学生以某企业职工信息管理业务为背景,设计、开发一套“职工信息管理系统”软件。 通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。 二. 课程设计的任务 1、查阅文献资料,一般在5篇以上; 2、以某企业职工信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型; 3、完成软件结构设计和算法设计; 4、完成系统的软件开发和测试工作; 5、撰写设计说明书; 6、做好答辩工作。 三. 课程设计的主要内容、功能及技术指标 1、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。 2、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出 流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过60行,否则要进一步划分。 3、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。把程序中的明显错误事先排除。 4、程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。 5、完成课程设计报告 ① 需求和规格说明:设计题目和问题描述:题目要解决的问题是什么; ② 设计思路:主要算法思想,程序功能图,函数之间的调用关系图;设计表示:每个函数或过程的功能,列出每个过程或函数所调用的过程或函数,并画出各函数的流程图; 详细设计:主要算法的伪代码; ③ 调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等; ④ 程序实现注释; ⑤ 附录:源程序清单和结果。如果题目规定了测试数据,则结果要求包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。 6、职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计“职工信息管理系统”,使之能提供以下功能: 系统以菜单方式工作; 职工信息录入功能(职工信息用文件保存); 职工信息浏览功能; 查询和排序功能:(至少一种查询方式)按工资查询、按学历查询等;职工信息的删除与修改。 四. 课程设计提交的成果 1.设计说明书一份,内容包括: 1)中文摘要100字;关键词3-5个; 2)前言; 3)系统分析(包含需要的系统流程图); 4)系统总体设计(包含总体软件结构图、总体数据结构); 5)详细设计; 6)系统测试(包含测试方案、测试用例、测试结果及软件可靠性分析); 7)软件使用说明书(核心界面说明); 8)设计总结、参考文献、致谢等。 2.刻制光盘一张。 五. 课程设计的主要参考文献 1C/C++程序设计教程(第二版),王连相,中国铁道出版社,2011 2C语言程序设计,谭浩强,清华大学出版社,1999 3C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4C/C++程序设计上机指导与测试(第二版),王连相,中国铁道出版社,2011 5C语言函数手册,机械工业出版社,1999 6C语言的实际应用,安徽科学技术出版社,2000 2014年1月13日第二篇:职工信息管理系统
第三篇:职工信息管理系统源代码
第四篇:【课程设计】职工信息管理系统
第五篇:01-职工信息管理系统