C语言程序设计课程设计报告.docx
《C语言程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。
C语言程序设计课程设计报告
昆明学院
自动控制与机械工程学院
程序设计语言
课程设计报告
题目:
职工信息管理系统_
学生:
赵坤,黄金龙,杨建勋
班级:
2013级电气1班
**************
日期:
2015年1月21日
一设计目的
利用所学的C语言知识及其编程方法:
结构程序设计、数组、指针、结构体、文件操作等内容,通过布置具有一定难度的实际程序设计题目,要求学生独立完成所布置题目。
在分析设计过程中,要求学生养成良好的编程习惯,学会分析解决简单的实际问题,学会C语言的实际调试技巧和方法,要求学生在教师的指导下逐步完成应用程序的设计。
二设计题目
职工信息管理系统设计
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、职工信息录入功能;
3、职工信息浏览功能:
浏览方式:
按职工号排序显示;
按年龄排序显示;
按工资排序显示;
4、职工信息查询功能:
查询方式:
按学历查询等
按职工号查询等
5、职工信息删除、修改功能(可选项)
三总体设计
1、数据组成
职工号
姓名
性别
年龄
学历
工资
地址
电话
数据类型
长整型
字符型
字符型
长整型
字符型
长整形
字符型
长整形
举例
1
zz
男
35
本科
5000
bhggf
02635641
2、程序流程图
四程序设计
1.全局结构定量与主函数
#include
#include
#include
#defineN10000
structworker
{
longintnum;
charnam[20];
charsex[20];
longintyer;
charedu[20];
longintmon;
charads[20];
longintpho;
}
x[N]={{1,"kk","男",25,"本科",3000,"还原街",02563216}
{2,"zz","女",22,"硕士",5000,"福山路",02563312}},y[N],s;
intm=2;
/**********************************主函数***********************************/
intmain()
{
voidluru(structworkerx[]),
shuchu(structworkerx[]),
liulan(structworkerx[]),
chaxun(structworkerx[]),
shanchu(structworkerx[]),
xiugai(structworkerx[]);
inta;
printf("********菜单********\n\n");
printf("1.职工信息录入\n\n2.职工信息浏览\n\n3.职工信息查询\n\n4.职工信息删除\n\n5.职工信息修改\n\n6.退出\n");
printf("请按对应数字选择");
for(;;)
{
scanf("%d",&a);
switch(a)
{
case1:
luru(x);break;
case2:
liulan(x);break;
case3:
chaxun(x);break;
case4:
shanchu(x);break;
case5:
xiugai(x);break;
case6:
printf("感谢你的使用!
\n");exit(0);
default:
printf("输入有误!
\n");exit(0);
}
}
return0;
}
2.录入函数
voidluru(structworkerx[])
{
inti;charz='y';
for(i=m;i<=N&&z=='y';i++)
{
printf("\n\t请输入职工号:
");
scanf("%ld",&x[i].num);
printf("\t请输入姓名:
");
scanf("%s",x[i].nam);
printf("\t请输入性别:
");
scanf("%s",x[i].sex);
printf("\t请输入年龄:
");
scanf("%ld",&x[i].yer);
printf("\t输入学历:
");
scanf("%s",x[i].edu);
printf("\t请输入工资:
");
scanf("%ld",&x[i].mon);
printf("\t请输入地址:
");
scanf("%s",x[i].ads);
printf("\t请输入电话:
");
scanf("%ld",&x[i].pho);
m=i+1;
printf("\n要继续输入下一职工信息吗?
y/n");
scanf("%s",&z);
if(z!
='y')
main();
elseluru(x);//调用输出函数
}
}
3.输出函数
voidshuchu(structworkerx[])
{
inti;
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
for(i=0;i{
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
}
system("pause");
}
4.浏览排序函数
voidliulan(structworkerx[])
{
inti,j,t;
printf("请输入浏览排序方式:
\n");
printf("1.按职工号排序\n\n2.按年龄排序\n\n3.按工资排序\n\n4.返回主菜单\n");
scanf("%d",&t);
switch(t)
{
case1:
/**********************按职工号排序*********************/
for(i=0;i{
y[i]=x[i];
}
for(j=0;j{
for(i=j+1;i{
if(y[j].num>=y[i].num)
{
s=y[j];
y[j]=y[i];
y[i]=s;
}
}
}
printf("以下为按职工号排序:
\n");
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
for(i=0;i{
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",y[i].num,y[i].nam,y[i].sex,y[i].yer,y[i].edu,y[i].mon,y[i].ads,y[i].pho);
printf("_________________________________________________________________\n");}
system("pause");liulan(x);
case2:
/*********************按年龄排序***********************/
for(i=0;i{
y[i]=x[i];
}
for(j=0;j{
for(i=j+1;i{
if(y[j].yer>=y[i].yer)
{
s=y[j];
y[j]=y[i];
y[i]=s;
}
}
}
printf("以下为按年龄排序:
\n");
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
for(i=0;i{
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",y[i].num,y[i].nam,y[i].sex,y[i].yer,y[i].edu,y[i].mon,y[i].ads,y[i].pho);
printf("_________________________________________________________________\n");
}
system("pause");liulan(x);
case3:
/************按工资排序*************/
for(i=0;i{
y[i]=x[i];
}
for(j=0;j{
for(i=j+1;i{
if(y[j].mon>=y[i].mon)
{
s=y[j];
y[j]=y[i];
y[i]=s;
}
}
}
printf("以下为按职工资排序:
\n");
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
for(i=0;i{
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",y[i].num,y[i].nam,y[i].sex,y[i].yer,y[i].edu,y[i].mon,y[i].ads,y[i].pho);
printf("_________________________________________________________________\n");
}
system("pause");liulan(x);
case4:
main(x);
default:
printf("输入有误\n");exit(0);
}
}
5.查询函数
voidchaxun(structworkerx[])
{
longt,i,z,K='y';charedu[20];//k为是否有输入记录的标志,是y时表示无记录
printf("\n\t1.按学历查询\n\n\t2.按职工号查询\n\n\t3.返回主菜单\n");
printf("请按对应数字选择");
scanf("%d",&z);
switch(z)
{
case1:
printf("\t请输入要查找的学历:
\n");
scanf("%s",edu);
for(i=0;i{
if(strcmp(x[i].edu,edu)==0)
{
K='x';
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
system("pause");
chaxun(x);
}
}
if(K='y')
{
printf("\t无此记录!
");
chaxun(x);
system("pause");
}
break;
case2:
printf("\t请输入要查找的职工号:
");
scanf("%ld",&t);
for(i=0;i{
if(x[i].num==t)
{
K='x';
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
system("pause");
chaxun(x);
}
}
if(K='y')
{
printf("\t无此记录!
\n");
chaxun(x);
system("pause");
}
break;
case3:
main(x);break;
default:
printf("\t输入有误!
\n");exit(0);
}
}
6.删除函数
voidshanchu(structworkerx[])
{
longflag=0,t,i,z;charl,nam[20];//flag为是否有输入记录的标志,1为有记录,0为无记录
printf("\n\t1.按职工号删除\n\t2.按姓名删除\n\t3.返回主菜单\n");
printf("请按对应数字选择");
scanf("%d",&z);
switch(z)
{
case1:
printf("\t请输入职工号:
");
scanf("%ld",&t);
for(i=0;i{
if(x[i].num==t)
{flag=1;
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
break;
}
}
if(flag)
{printf("\t确定删除吗?
y/n");
scanf("%s",&l);
if(l=='y')
{
for(;ix[i]=x[i+1];
m=m-1;
printf("\n\t删除成功!
");
shuchu(x);
shanchu(x);
}
}
else
printf("记录不存在!
\n");
shanchu(x);
case2:
printf("请输入姓名:
");
scanf("%s",nam);
for(i=0;i{
if(strcmp(x[i].nam,nam)==0)
{flag=1;
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
break;
}
}
if(flag)
{printf("\n确定删除吗?
y/n");
scanf("%s",&l);
if(l=='y')
{
for(;ix[i]=x[i+1];
m=m-1;
printf("\n\t删除成功!
");
shuchu(x);
shanchu(x);
}
}
else
printf("记录不存在!
");
shanchu(x);
case3:
main(x);break;
default:
printf("\t输入有误!
");exit(0);
}
}
7.修改函数
voidxiugai(structworkerx[])
{
longflag=0,t,i,z;charl,nam[20];//flag为是否有输入记录的标志,1为有记录,0为无记录
printf("\n\t1.按职工号修改\n\t2.按姓名修改\n\t3.返回主菜单\n");
printf("请按对应数字选择");
scanf("%d",&z);
switch(z)
{
case1:
printf("\t请输入职工号:
");
scanf("%ld",&t);
for(i=0;i{
if(x[i].num==t)
{flag=1;
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_________________________________________________________________\n");
break;
}
}
if(flag)
{printf("\t确定修改?
y/n");
scanf("%s",&l);
if(l=='y')
{
printf("\n\t输入修改后的职工号:
");
scanf("%ld",&x[i].num);
printf("\t输入修改后的姓名:
");
scanf("%s",x[i].nam);
printf("\t输入修改后的性别:
");
scanf("%s",x[i].sex);
printf("\t输入修改后的年龄:
");
scanf("%ld",&x[i].yer);
printf("\t输入修改后的学历:
");
scanf("%s",x[i].edu);
printf("\t输入修改后的工资:
");
scanf("%ld",&x[i].mon);
printf("\t输入修改后的地址:
");
scanf("%s",x[i].ads);
printf("\t输入修改后的电话");
scanf("%ld",&x[i].pho);
printf("_________________________________________________________________\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t地址\t电话\n");
printf("_________________________________________________________________\n");
printf("%ld\t%s\t%s\t%ld\t%s\t%ld\t%s\t%ld\n",x[i].num,x[i].nam,x[i].sex,x[i].yer,x[i].edu,x[i].mon,x[i].ads,x[i].pho);
printf("_____________________