C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(61页珍藏版)》请在冰豆网上搜索。
C语言程序设计
《C语言程序设计》
课程设计报告
题目:
职工信息管理系统
专业:
数学与计算科学
班级:
1009-301
姓名:
李军陈辉煌曾超群阳恩成张琦
指导教师:
李又良
成绩:
二〇一一年六月一日
课程设计报告——职工信息管理系统
1、研究背景及意义
由于现今的职工信息管理非常繁琐,管理人员付出大量的工作时间,得到的效率很低。
因此为提高工作效率,为了减轻轻单位人工对职工信息进行登记,查找的工作,进而设计出一个功能更完善,合理,先进的职工信息管理系统来管理。
开发此职工信息管理系统软件,以供教学人员及操作者进行职工管理,方便操作者随时添加、查询、修改职工信息。
2、课程设计题目描述和要求
对职工信息的管理是每企业中的重要组成部分,其内容较多,为了简化讨论,职工信息主要包括:
职工号、姓名、性别、出生年月、学历、职务、工资、地址、电话。
系统功能:
1)、输入功能:
可以多次次完成多个职工所有信息
2)、浏览功能:
可以一次性浏览职工的所有信息
3)、查询功能:
可以按职工号和工资两种方式查询
4)、修改功能:
可以随时对职工的信息进行修改
5)、删除功能:
可以对职工的信息进行删除
6)、排序功能:
可以按职工号降序排列
0)、推出本系统
功能模块分工:
李军:
程序设计与信息输入、浏览
陈辉煌:
页面设计与信息查询
曾超群:
信息修改
阳恩成:
信息删除
张琦:
信息排序
3、课程设计报告内容
3.1职工管理系统的理论依据及算法
主要数据结构:
typedefstruct
{
intnumber;/*职工号*/
charname[20];/*姓名*/
charsex[8];/*性别*/
floatyear;/*出生年月日*/
chareducat[20];/*学历*/
charduty[20];/*职务*/
floatwage;/*工资*/
charplace[20];/*住址*/
doubletel;/*电话*/
}Student;
Studentstu[100];/*结构体数组变量*/
各函数的功能和实现:
整个系统除了主函数外,另外还有10个函数,实现七大功能:
输入功能、显示功能、查找功能、修改功能、删除功能、排序功能。
各个函数的详细设计说明分别如下:
1、主函数main()
利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、菜单选择函数switch(menu())
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
3、输入记录函数intInput(Studentstud[],intn)
这是一个无参函数,用来执行职工信息的输入,当学生九类信息全部输入后,系统提示“继续写入成绩?
Y/N”,选择“N”函数结束。
4、显示记录函数voidDisplay(Studentstud[],intn)
这是一个不返回值的有参函数,形参为数组,负责对全部职工信息的输出,不足之处就是不能对职工信息进行分页显示。
5、查找记录函数voidSearch(Studentstud[],intn)
这是一个不返回值的有参函数,形参为数组,分别实现按职工号或工资对某个职工进行查找,并显示所查找到的记录。
6、修改函数voidModify(Studentstud[],intn)
这是一个有参函数,形参为数组,能将之前输入的数据进行修改。
7、删除记录函数intDelete(Studentstud[],intn)
这是一个有参函数,形参为数组,先输入要删除的职工的职工号,找到后显示该职工信息,直接进行删除。
8、排序函数voidSort(Studentstud[],intn)
在Studentstud[]这个结构数组中按职工号进行由大到小排序:
voidSort(Studentstud[],intn)/*冒泡法排序*/。
3.2流程图
3.3、源程序如下:
#include/*引用库函数*/
#include/*输入输出函数*/
#include
#include
typedefstruct
{intnumber;/*职工号*/
charname[20];/*姓名*/
charsex[8];/*性别*/
floatyear;/*出生年月日*/
chareducat[20];/*学历*/
charduty[20];/*职务*/
floatwage;/*工资*/
charplace[20];/*住址*/
doubletel;/*电话*/
}Student;
Studentstu[100];/*结构体数组变量*/
intmenu()/*菜单函数*/
{
charc;
do
{
//system("cls");/*运行前清屏*/
printf("┏---------------------------------MENU---------------------------------┓");/*菜单选择*/
printf("│⊙ω⊙<<1>>录入职工信息│");
printf("│≧ω≦<<2>>显示所有职工信息│");
printf("│ˋ▂ˊ<<3>>查询职工信息│");
printf("│ˇ△ˇ<<4>>修改职工信息并保存│");
printf("│˙︿˙<<5>>删除职工信息│");
printf("│ ̄□ ̄<<6>>按职工号降序排列│");
printf("│●△●<<0>>退出本系统│");
printf("│***********作者:
1009301班完美组合*********│");
printf("┗----------------------------请选择你需要的操作----------------------┛");
printf("========>请输入数字0~9:
\n");
c=getchar();/*读入选择*/
}
while(c<'0'||c>'5');
return(c-'0');/*返回选择*/
}
intInput(Studentstud[],intn)/*输入若干条记录*/
{
inti=0;
charsign='y',x[10];/*x[10]为清除多余的数据所用*/
while(sign!
='n'&&sign!
='N')/*选择判断*/
{
printf("----------请输入职工号----------:
");/*交互输入*/
scanf("%d",&stud[n+i].number);
printf("----------请输入职工的姓名------:
");
scanf("%s",&stud[n+i].name);
printf("----------请输入职工的性别------:
");
scanf("%s",&stud[n+i].sex);
printf("----------请输入职工的出生年月日:
");
scanf("%f",&stud[n+i].year);
printf("----------请输入职工的学历------:
");
scanf("%s",&stud[n+i].educat);
printf("----------请输入职工的职务------:
");
scanf("%s",&stud[n+i].duty);
printf("----------请输入职工的工资------:
");
scanf("%f",&stud[n+i].wage);
printf("----------请输入职工的住址------:
");
scanf("%s",&stud[n+i].place);
printf("----------请输入职工的电话------:
");
scanf("%lf",&stud[n+i].tel);
gets(x);/*清除多余的输入*/
printf("%s\n",stud[n+i].name);
printf("=====>提示:
继续写入成绩?
(Y/N)");
scanf("%c",&sign);/*输入判断*/
i++;
}
return(n+i);
}
voidDisplay(Studentstud[],intn)/*显示所有记录*/
{
inti;
if(!
stud)
printf("没有记录");
else
{
printf("┏--------------------------------------------------------------------------------┓\n");/*格式头*/
printf("职工号\t姓名\t性别\t生日\t学历\t职务\t工资\t住址\t电话\n");
printf("┗--------------------------------------------------------------------------------┛\n");
for(i=1;i{
printf("%d\t",stud[i-1].number);
printf("%s\t",stud[i-1].name);
printf("%s\t",stud[i-1].sex);
printf("%6.0f",stud[i-1].year);
printf("%s\t",stud[i-1].educat);
printf("%s",stud[i-1].duty);
printf("%8.0f\t",stud[i-1].wage);
printf("%s\t",stud[i-1].place);
printf("%11.0lf",stud[i-1].tel);
printf("\n");
}
printf("\t\t\t\n");
}
}
voidSearch(Studentstud[],intn)/*查找并显示一个记录*/
{
ints=0;
inti=0;
intt=0;
printf("按职工号查找请输入1,按工资查找请输入2\n");
scanf("%d",&t);
switch(t)/*选择判断*/
{
case1:
/*按职工号查找*/
printf("输入需要查找职工的职工号:
\n");
scanf("%d",&s);
while((stud[i].number-s)!
=0&&iif(i==n)
{
printf("=====>提示:
对不起,无法找到该职工的信息!
\n");/*输入失败信息*/
return;
}
printf("-------------------------------------\n");/*输出该职工信息*/
printf("职工号:
%d\n",stud[n-1].number);
printf("姓名:
%s\n",stud[n-1].name);
printf("性别:
%s\n",stud[n-1].sex);
printf("出生年月日:
%8.0f\n",stud[n-1].year);
printf("学历:
%s\n",stud[n-1].educat);
printf("职务:
%s\n",stud[n-1].duty);
printf("工资:
%f\n",stud[n-1].wage);
printf("住址:
%s\n",stud[n-1].place);
printf("电话:
%11.0lf\n",stud[n-1].tel);
printf("\n");
break;
case2:
/*按姓名查找*/
printf("输入需要查找职工的工资:
\n");
scanf("%d",&s);
while((stud[i].wage-s)!
=0&&iif(i==n)
{
printf("=====>提示:
对不起,无法找到该职工的信息!
\n");/*输入失败信息*/
return;
}
printf("-------------------------------------\n");/*输出该职工信息*/
printf("职工号:
%d\n",stud[n-1].number);
printf("姓名:
%s\n",stud[n-1].name);
printf("性别:
%s\n",stud[n-1].sex);
printf("出生年月日:
%8.0f\n",stud[n-1].year);
printf("学历:
%s\n",stud[n-1].educat);
printf("职务:
%s\n",stud[n-1].duty);
printf("工资:
%f\n",stud[n-1].wage);
printf("住址:
%s\n",stud[n-1].place);
printf("电话:
%11.0lf\n",stud[n-1].tel);
printf("\n");
break;
}
}
voidModify(Studentstud[],intn)/*修改职工信息*/
{
ints=0;
inti=0;
printf("输入需要修改职工信息的职工号:
\n");
scanf("%d",&s);
while((stud[i].number-s)!
=0&&iif(i==n)
{
printf("=====>提示:
对不起,无该职工的信息……\n");/*输入失败信息*/
return;
}
printf("-----------------------------------该职工的信息---------------------------------\n");/*格式头*/
printf("┏--------------------------------------------------------------------------------┓\n");/*格式头*/
printf("职工号\t姓名\t性别\t生日\t学历\t职务\t工资\t住址\t电话\n");
printf("┗--------------------------------------------------------------------------------┛\n");
printf("--------------------------------------------------------------------------------\n");
printf("%d\t",stud[i-1].number);
printf("%s\t",stud[i-1].name);
printf("%s\t",stud[i-1].sex);
printf("%6.0f",stud[i-1].year);
printf("%s\t",stud[i-1].educat);
printf("%s",stud[i-1].duty);
printf("%8.0f\t",stud[i-1].wage);
printf("%s\t",stud[i-1].place);
printf("%11.0lf",stud[i-1].tel);
printf("\n");
printf("请输入职工号:
");/*交互输入*/
scanf("%d",&stud[n+i].number);
printf("请输入职工的姓名:
");
scanf("%s",&stud[n+i].name);
printf("请输入职工的性别:
");
scanf("%s",&stud[n+i].sex);
printf("请输入职工的出生年月日:
");
scanf("%f",&stud[n+i].year);
printf("请输入职工的学历:
");
scanf("%s",&stud[n+i].educat);
printf("请输入职工的职务:
");
scanf("%s",&stud[n+i].duty);
printf("请输入职工的工资:
");
scanf("%f",&stud[n+i].wage);
printf("请输入职工的住址:
");
scanf("%s",&stud[n+i].place);
printf("请输入职工的电话:
");
scanf("%lf",&stud[n+i].tel);
printf("%s\n",stud[n+i].name);
}
intDelete(Studentstud[],intn)/*按职工号查找,删除一条记录*/
{
ints=0;
inti=0,j;
printf("输入需要删除职工的职工号:
\n");/*交互式问寻*/
scanf("%d",&s);
while((stud[i].number-s)!
=0&&iif(i==n)
{
printf("=====>提示:
对不起,无法找到该职工号……\n");/*返回失败信息*/
return(n);
}
for(j=i;j{
strcpy(stud[j].name,stud[j+1].name);
stud[j].number=stud[j+1].number;
strcpy(stud[j].sex,stud[j+1].sex);
stud[j].year=stud[j+1].year;
strcpy(stud[j].educat,stud[j+1].educat);
strcpy(stud[j].duty,stud[j+1].duty);
stud[j].wage=stud[j+1].wage;
strcpy(stud[j].place,stud[j+1].place);
stud[j].tel=stud[j+1].tel;
}
printf("=====>提示:
已成功删除!
\n");/*返回成功信息*/
return(n-1);
}
voidSort(Studentstud[],intn)/*按职工号排序*/
{
inti,j,k;
floats;
chart[20];
for(i=0;ifor(j=0;jif(stud[j].number{
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].sex);
strcpy(stud[j+1].sex,stud[j].sex);
strcpy(stud[j].sex,t);
s=stud[j+1].year;
stud[j+1].year=stud[j].year;
stud[j].year=s;
strcpy(t,stud[j+1].educat);
strcpy(stud[j+1].educat,stud[j].educat);
strcpy(stud[j].educat,t);
strcpy(t,stud[j+1].duty);
strcpy(stud[j+1].duty,stud[j].duty);
strcpy(stud[j].duty,t);
s=stud[j+1].wage;
stud[j+1].wage=stud[j].wage;
stud[j].wage=s;
strcpy(t,stud[j+1].place);
strcpy(stud[j+1].place,stud[j].place);
strcpy(stud[j].place,t);
s=stud[j+1].tel;
stud[j+1].tel=stud[j].tel;
stud[j].tel=s;
}
printf("┏--------------------------------------------------------------------------------┓\n");/*格式头*/
printf("职工号\t姓名\t性别\t生日\t学历\t职务\t工资\t住址\t电话\n");
printf("┗--------------------------------------------------------------------------------┛\n");
for(i=1;i{
printf("%d\t",stud[i-1].number);
printf("%s\t",stud[i-1].name);
printf("%s\t",stud[i-1].sex);
printf("%6.0f",stud[i-1].year);
printf("%s\t",stud[i-1].educat);
printf("%s",stud[i-1].duty);
printf("%8