课程设计指导书职工信息管理系统设计.docx
《课程设计指导书职工信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《课程设计指导书职工信息管理系统设计.docx(60页珍藏版)》请在冰豆网上搜索。
课程设计指导书职工信息管理系统设计
课程设计报告
(本科)
课程:
高级语言程序设计
学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
设计名称:
职工信息管理系统设计
设计内容、目的与要求:
内容:
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)
目的与要求:
设计一职工信息管理系统,使之能提供以下功能:
1、职工信息录入功能(职工信息用文件保存)--输入
2、职工信息浏览功能--输出
3、职工信息查询功能--算法
查询方式:
按学历查询、按职工号查询、条件组合查询职工信息删除、修改功能(可选项)
计划与进度安排:
12月16日—12月29日:
完成设计思路
作出草稿;
完成程序的输入;
完成对基本功能的编译、链接、修改并运行无误;
增加对开始的源程序的功能;
寻找程序的缺点并改进;
提交;
12月30日—1月6日:
对程序进行进一步调试并完成。
设计过程、步骤(可加页):
1.此程序要用到结构体
Structemployee{…………};
函数的声明和调用:
voidmainmenu();//主菜单
voidinput();//输入模块
voiddisplay();//显示模块
voiddel();//删除模块
voidadd();//添加模块
voidcount();//统计模块
voidchange();//修改模块
intchangeposition();//修改职位
intchangecult();//修改学历
intchangesalary();//修改工资
intchangestate();//修改身体状况
voidchangmany();//修改多项信息
voidprint();//打印函数
voidselect();//查询模块
voidnumselect();//按工号查询
voidnameselect();//按姓名查询
voidcultselect();//按学历查询
voidpositionselect();//按职位查询
voidstateselect();//按身体状况查询
voidsexselect();//按性别查询
voidageselect();//按年龄区间查询
voidsalaryselect();//按工资区间查询
voidpaixu();//排序模块
voidnumpx();//按工号排序
voidcultpx();//按学历排序
voidpositionpx();//按职位排序
voidstatepx();//按身体状况排序
voidagepx();//按年龄排序
voidsalarypx();//按工资排序
2.选择功能,用到了For语句进行循环,用switch语句来进行选择
scanf("%d",&choicemanage);
switch(choicemanage)
{
case1:
input();//输入职工信息
break;
case2:
display();//显示职工信息
break;
case3:
select();//查询职工信息
break;
case4:
change();//修改职工信息
break;
case5:
add();//追加一个职工信息
break;
case6:
del();//删除一个职工信息
break;
case7:
count();//统计职工信息
break;
case8:
paixu();//对职工信息进行排序
break;
case9:
printf("谢谢你的使用再见\n");
exit(0);
default:
printf("你的输入有错请重新输入\n");
}
4.定义的函数完成功能的实现:
职工信息录入、浏览、查询、删除、修改功能
5.执行程序
结果与分析(可以加页):
密码输入码ma____________________________________________________________________________________________________________________________
使用菜单
浏览职工信息
职工信息查询
职工信息删除
职工信息统计
职工信息修改
职工信息排序
该职工信息查询系统可实现职工信息录入功能(职工信息包括职工号、姓名、性别、年龄、学历、工资职位、健康状况、住址、电话等)、职工信息浏览功能、职工信息查询功能(按学历查询、按职工号查询、条件组合查询)、职工信息修改功能、职工信息追加功能、职工信息统计功能、职工信息排序功能、职工信息删除功能等。
设计体会与建议:
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
通过这次的课程设计,我更加了解C语言,学会更好的使用C语言函数调用和结构体等,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。
整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。
#include
#include
#include
#include
#include
#defineN100
structemployee//职工基本情况
{
intnum;//工号
charname[10];//姓名
intsex;//性别
intposition;//职位
intage;//年龄
intcult;//学历
intsalary;//工资
intstate;//健康情况
chartel[15];//联系电话
charadr[50];//住址
}em[N];
intnum[N]={0};
structemployeenewem;
voidmainmenu();//主菜单
voidinput();//输入模块
voiddisplay();//显示模块
voiddel();//删除模块
voidadd();//添加模块
voidcount();//统计模块
voidchange();//修改模块
intchangeposition();//修改职位
intchangecult();//修改学历
intchangesalary();//修改工资
intchangestate();//修改身体状况
voidchangmany();//修改多项信息
voidprint();//打印函数
voidselect();//查询模块
voidnumselect();//按工号查询
voidnameselect();//按姓名查询
voidcultselect();//按学历查询
voidpositionselect();//按职位查询
voidstateselect();//按身体状况查询
voidsexselect();//按性别查询
voidageselect();//按年龄区间查询
voidsalaryselect();//按工资区间查询
voidpaixu();//排序模块
voidnumpx();//按工号排序
voidcultpx();//按学历排序
voidpositionpx();//按职位排序
voidstatepx();//按身体状况排序
voidagepx();//按年龄排序
voidsalarypx();//按工资排序
voidmain()//主函数
{
charpassword[7]="myz";
chars[7];
intflag=0;
intn=3;
system("modecon:
lines=100cols=120");
do
{
printf("请你输入密码:
\n");
scanf("%s",s);
if(!
strcmp(s,password))//若密码正确
{
printf("恭喜你成功登陆了\n\n\n");
flag=1;
break;
}
else
{
printf("输入有错误请重新输入:
\n");
n--;
}
}while(n>0);
if(!
flag)
{
printf("你的输入次数已到再见\n");
exit(0);
}
printf("请按任意键继续!
\n");
getch();
mainmenu();
}
voidmainmenu()//主菜单
{
intchoicemanage=0;
while
(1)
{
system("cls");
printf("☆★☆计算机科学与技术学系☆★☆\n");
printf("\n");
printf("☆★马有志★☆\n");
printf("\n");
printf("◎◎◎◎◎◎◎职工信息管理系统◎◎◎◎◎◎◎\n");
printf("◎1.输入职工信息◎\n");
printf("◎2.显示职工信息◎\n");
printf("◎3.查询职工信息◎\n");
printf("◎4.修改职工信息◎\n");
printf("◎5.追加职工信息◎\n");
printf("◎6.删除职工信息◎\n");
printf("◎7.统计职工信息◎\n");
printf("◎8.对职工信息排序◎\n");
printf("◎9.退出◎\n");
printf("◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎\n");
printf("\n");
printf("\n");
scanf("%d",&choicemanage);
switch(choicemanage)
{
case1:
input();//输入职工信息
break;
case2:
display();//显示职工信息
break;
case3:
select();//查询职工信息
break;
case4:
change();//修改职工信息
break;
case5:
add();//追加一个职工信息
break;
case6:
del();//删除一个职工信息
break;
case7:
count();//统计职工信息
break;
case8:
paixu();//对职工信息进行排序
break;
case9:
printf("谢谢你的使用再见\n");
exit(0);
default:
printf("你的输入有错请重新输入\n");
}
}
}
voidinput()//输入模块
{
FILE*fp;
intk,flag=0,i=0,p,v,h;
charchoice;
system("cls");
if((fp=fopen("employee.txt","w"))==NULL)
exit(0);
srand(time(NULL));
while
(1)
{
i++;
system("cls");
printf("第%d个职工\n",i);
printf("\n");
printf("请输入职工号:
");
scanf("%d",&em[i].num);
for(v=1;v==1;)
{for(p=0;p
{if(em[i].num==em[p].num)
h=1;
}
if(h==1)
{h=0;
printf("\n您输入的职工号重复,请重新输入\n");
printf("职工号:
");
scanf("%d",&em[i].num);
}
else
v=0;}
printf("请输入姓名:
\n");//输入姓名
scanf("%s",em[i].name);
printf("\n");
do
{
printf("请选择性别以1为男2为女:
\n");//输入性别
scanf("%d",&k);
if(k>=1&&k<=2)
{
em[i].sex=k;
break;
}
else
printf("您的输入有误,请重新输入!
\n");
}while
(1);
printf("\n");
do
{
printf("请选择职位1.董事长2.总经理3.副总经理4.经理5.副经理6.秘书7.技术员8.领班9.普通员工:
\n");//输入职位
scanf("%d",&k);
if(k>=1&&k<=9)
{
em[i].position=k;
break;
}
else
printf("您的输入有误,请重新输入!
\n");
}while
(1);
printf("\n");
printf("请输入年龄:
");
scanf("%d",&em[i].age);
printf("\n");
do
{
printf("请选择文化程度1为专家2为博士3为硕士4为学士5为其他:
\n");//输入文化程度
scanf("%d",&k);
if(k>=1&&k<=5)
{
em[i].cult=k;
break;
}
else
printf("您的输入有误,请重新输入!
\n");
}while
(1);
printf("\n");
printf("请输入工资:
\n");//输入工资
scanf("%d",&em[i].salary);
printf("\n");
do
{
printf("请你选择身体情况1好2为一般3为差:
\n");//身体情况
scanf("%d",&k);
if(k>=1&&k<=3)
{
em[i].state=k;
break;
}
else
printf("您的输入有误,请重新输入!
\n");
}while
(1);
printf("\n");
printf("请输入联系电话:
");
scanf("%s",em[i].tel);
printf("\n");
printf("请输入地址:
");
scanf("%s",em[i].adr);
printf("\n");
fwrite(&em[i],sizeof(structemployee),1,fp);
printf("是否继续输入?
(y/n)\n");
scanf("%s",&choice);
if(choice=='n'||choice=='N')
break;
}
fclose(fp);
if((fp=fopen("num.txt","w"))==NULL)
exit(0);
for(i=0;num[i];i++)
fwrite(&num[i],sizeof(int),1,fp);
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}
voiddisplay()//显示职工信息
{
FILE*fp;
inti;
system("cls");
if((fp=fopen("employee.txt","r+"))==NULL)
{
printf("文件不存在或为空,请先输入员工信息!
\n");
mainmenu();
}
printf("输出结果:
\n");
printf("工号\t姓名\t年龄\t性别\t职位\t\t文化程度\t身体情况\t工资\t电话\t\t住址\n");
for(i=0;fread(&em[i],sizeof(structemployee),1,fp)!
=0;i++)
{
print(em[i]);
}
printf("完毕按任意键返回\n");
getch();
fclose(fp);
}
voidchange()//修改模块
{
FILE*fp;
inti,k,l=0;
intchnum;
intchoicechange;
system("cls");
printf("请你输入要修改的人的工号:
\n");
scanf("%d",&chnum);
if((fp=fopen("employee.txt","r+"))==NULL)
{
printf("不能够打开这个文件\n");
exit(0);
}
for(i=0;fread(&em[i],sizeof(structemployee),1,fp)!
=0;i++)
;
k=i;
fclose(fp);
if((fp=fopen("employee.txt","w+"))==NULL)
{
printf("不能够打开这个文件\n");
exit(0);
}
for(i=0;i{
if(chnum==em[i].num)
{
l=1;
printf("这是你要修改的人的信息\n");
printf("工号\t姓名\t年龄\t性别\t职位\t\t文化程度\t身体情况\t工资\t电话\t\t住址\n");
print(em[i]);
printf("------------------------------------------------------------\n");
printf("请选择要修改的部分:
\n");
printf("\t\t▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printf("\t\t1仅修改职位\n");
printf("\t\t2仅修改文化程度\n");
printf("\t\t3仅修改工资\n");
printf("\t\t4仅修改身体情况\n");
printf("\t\t5修改多项\n");
printf("\t\t0返回主菜单\n");
printf("\t\t▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printf("请选择\n");
scanf("%d",&choicechange);
switch(choicechange)
{
case1:
em[i].position=changeposition();
break;
case2:
em[i].cult=changecult();
break;
case3:
em[i].salary=changesalary();
break;
case4:
em[i].state=changestate();
break;
case5:
newem=em[i];
changmany();
em[i]=newem;
break;
case0:
mainmenu();
default:
printf("输入有错误");
}
}
fwrite(&em[i],sizeof(structemployee),1,fp);
}
fclose(fp);
if(l==0)
{printf("该员工不存在,请查证后再输入!
\n");
select();
}
else
printf("操作完成按任意键返回主菜单\n");
getch();
}
intchangeposition()
{
intnewposition;
printf("请选择新职位1为董事长2为总经理3为副总经理4为经理5为副经理6为秘书7为技术员8为领班9为普通员工:
\n");
scanf("%d",&newposition);
return(newposition);
}
intchangecult()
{
intnewcult;
printf("请选择新的文凭1为专家2为博士3为硕士4为学士5为其他:
\n");
scanf("%d",&newcult);
return(newcult);
}
intchangesalary()
{
intnewsalary;
printf("请输入新的工资:
\n");
scanf("%d",&newsalary);
return(newsalary);
}
intchangestate()
{
intnewstate;
printf("请选择现在的身体情况1好2为一般3为差:
\n");
scanf("%d",&newstate);
return(newstate);
}
voidchangmany()
{
intk;
system("cls");
printf("请依次输入该员工的新信息\n");
do
{
printf("请选择职位1.董事长2.总经理3.副总经理4.经理5.副经理6.秘书7.技术员8.领班9.普通员工:
\n");//输入职位
scanf("%d",&k);
if(k>=1&&k<=9)
{
newem.position=k;
break;
}
else
printf("您的输入有误,请重新输入!
\n");
}while
(1);
printf("\n");
printf("请输入年龄:
");
scanf("%d",&newem.age);
printf("\n");
do
{
printf("请选择文化程度1为专家2为博士3为硕士4为学士5为其他:
\n");//输入文化程度
scanf("%d",&k);
if(k>=1&&k<=5)
{
newem.cult=k;
break;
}
else
printf("您的输入有误,请重新输入