c语言程序设计.docx
《c语言程序设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计.docx(15页珍藏版)》请在冰豆网上搜索。
c语言程序设计
石家庄贴四方学院
C语言课程设计报告书
系部名称
电信系
学生姓名
专业名称
电子信息工程
班级
电子0901
学号
指导教师
时间
2010年7月14日
实验题目职工信息管理系统
一、实验目的:
(1)本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。
将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。
(2)C语言的实践。
掌握C语言函数的定义方法,函数的声明及函数的调用过程。
掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。
二、实验内容:
(1)运用结构体数组编辑一个简单的职工信息管理系统。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。
直到编译成功为止。
(3)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析:
(1)根据职工信息管理的需要,建立一个“职工信息管理系统”,系统具有输入、查询、修改、删除、等基本功能;以方便对职工信息的各项管理操作。
每一条记录包括一个职工的工号、姓名、性别,年龄,职位。
系统的各个功能模块都用函数的形式来实现;可以将职工信息保存在文件中,并从文件中读取出来。
有一个清晰美观界面来调用各个功能。
(2)创建该职工信息管理系统目的就是能够对学生基本信息进行创建、追加、查询、修改、删除、等功能,这样可以简化许多人工做起来很复杂的问题。
譬如:
“排序”,有了此程序只需将信息输入,计算机就可自动执行,省时、省力。
另外,它还可以重复使用,方便、快捷。
四、概要设计
(1)主函数结构图:
#include
#include
#defineMAX200
structemployee
{
charno[10];//职工号
charname[15];//姓名
charsex[10];//性别
intage;//年龄
intgongzi;//工资
inttele;//电话号码
charxueli[20];//学历
charaddr[50];//住址
};
structdata
{
intcount;//当前职工数组中职工的个数
structemployeeem[MAX];//职工数组
}dd;
voidmenu()
{
system("cls");
printf("\n");
printf("\t\t\t****************\n");
printf("\t\t\t**\n");
printf("\t\t\t*职工信息管理系统*\n");
printf("\t\t\t**\n");
printf("\t\t\t*0909-1*\n");
printf("\t\t\t**\n");
printf("\t\t\t*[0]退出*\n");
printf("\t\t\t*[1]查看职工信息*\n");
printf("\t\t\t*[2]输入职工信息*\n");
printf("\t\t\t*[3]删除职工信息*\n");
printf("\t\t\t*[4]修改职工信息*\n");
printf("\t\t\t*[5]按职工号查询职工信息*\n");
printf("\t\t\t*[6]按学历查询职工信息*\n");
printf("\t\t\t**\n");
printf("\t\t\t****************\n");
}
//等待用户按回车后回到主菜单
voidto_menu()
{
charc1,c2;
printf("\n\n\n按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);
menu();
}
//查看所有信息
voidview_data()
{
inti;
printf("职工号\t姓名\t性别\t年龄\t工资\t电话\t学历\t住址");
printf("\n-------------------------------------------------------------------\n");
for(i=0;i
printf("%s\t%s\t%s\t%d\t%d\t%d\t%s\t%s\n",dd.em[i].no,dd.em[i].name,dd.em[i].sex,dd.em[i].age,dd.em[i].gongzi,dd.em[i].tele,dd.em[i].xueli,dd.em[i].addr);
}
//将数据从结构体数组保存到文件中
voidsave_data()
{
FILE*fp;
inti,k;
k=dd.count;
fp=fopen("c:
/dada.txt","w");
fwrite(&k,sizeof(int),1,fp);
for(i=0;ifwrite(&dd.em[i],sizeof(structemployee),1,fp);
fclose(fp);
}
//输入记录
voidadd_data()
{
structemployeeemp;
intb;
intk;
inti,j;
while
(1)
{
j=0;
printf("\n请输入职工信息:
");
printf("\n职工号\t姓名\t性别\t年龄\t工资\t电话\t学历\t住址");
printf("\n---------------------------------------------------------------\n");
scanf("%s%s%s%d%d%d%s%s",&emp.no,&emp.name,&emp.sex,&emp.age,&emp.gongzi,&emp.tele,&emp.xueli,&emp.addr);
for(i=0;i
{
if(strcmp(dd.em[i].no,emp.no)==0)
{
printf("\n输入职工号重复,请重新输入!
\n");
j=1;
break;
}
}
if(j==1)
continue;
if(j==0)
{
k=dd.count;
strcpy(dd.em[k].no,emp.no);
strcpy(dd.em[k].name,emp.name);
strcpy(dd.em[k].sex,emp.sex);
dd.em[k].age=emp.age;
dd.em[k].gongzi=emp.gongzi;
dd.em[k].tele=emp.tele;
strcpy(dd.em[k].xueli,emp.xueli);
strcpy(dd.em[k].addr,emp.addr);
dd.count++;
}
printf("\n\n继续添加职工信息[1-yes0-no]:
\n");
scanf("%d",&b);
if(b==0)break;
}
save_data();
}
//将数据从文件读到结构体数组中
voidread_data()
{
FILE*fp;
inti,k;
structemployeeemp;
k=0;
if(access("c:
/dada.txt",0)==-1)//如果文件不存在
{
fp=fopen("c:
/dada.txt","w");
fwrite(&k,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("c:
/dada.txt","r");
fread(&k,sizeof(int),1,fp);
dd.count=k;
for(i=0;i{
fread(&emp,sizeof(structemployee),1,fp);
strcpy(dd.em[i].no,emp.no);
strcpy(dd.em[i].name,emp.name);
strcpy(dd.em[i].sex,emp.sex);
dd.em[i].age=emp.age;
dd.em[i].gongzi=emp.gongzi;
dd.em[i].tele=emp.tele;
strcpy(dd.em[i].xueli,emp.xueli);
strcpy(dd.em[i].addr,emp.addr);
}
fclose(fp);
}
voiddelete_data()
{
inti,k;
charno[10];
printf("\n请输入要删除职工号:
");
scanf("%s",&no);
k=-1;
for(i=0;i
{
if(strcmp(dd.em[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该职工(职工号-%s)!
",no);
}
else
{
for(i=k;i
{
strcpy(dd.em[i].no,dd.em[i+1].no);
strcpy(dd.em[i].name,dd.em[i+1].name);
strcpy(dd.em[i].sex,dd.em[i+1].sex);
dd.em[i].age=dd.em[i+1].age;
dd.em[i].gongzi=dd.em[i+1].gongzi;
dd.em[i].tele=dd.em[i+1].tele;
strcpy(dd.em[i].xueli,dd.em[i+1].xueli);
strcpy(dd.em[i].addr,dd.em[i+1].addr);
}
dd.count--;
save_data();
printf("\n\n删除(职工号-%s)成功!
",no);
}
}
//修改职工记录
voidedit_data()
{
inti,k,age=0,gongzi=0,tele=0;
charno[10],name[15],sex[10],addr[50],xueli[20];
printf("\n请输入要修改职工的职工号:
");
scanf("%s",&no);
k=-1;
for(i=0;i
{
if(strcmp(dd.em[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该职工(职工号-%s)!
",no);
}
else
{
printf("\n请输入职工数据:
\n");
printf("\n姓名\t性别\t年龄\t工资\t电话\t学历\t住址");
printf("\n--------------------------------------------------------------------\n");
scanf("%s%s%d%d%d%s%s",&name,&sex,&age,&gongzi,&tele,&xueli,&addr);
strcpy(dd.em[k].no,no);
strcpy(dd.em[k].name,name);
strcpy(dd.em[k].sex,sex);
dd.em[k].age=age;
dd.em[k].gongzi=gongzi;
dd.em[k].tele=tele;
strcpy(dd.em[k].xueli,xueli);
strcpy(dd.em[k].addr,addr);
save_data();
printf("\n\n修改职工记录(职工号-%s)成功!
",no);
}
}
//查询(职工号)
voidquery_data_no()
{
inti,k;
charno[10];
printf("\n请输入要查询的职工号:
");
scanf("%s",&no);
k=-1;
for(i=0;i
{
if(strcmp(dd.em[i].no,no)==0)
{
if(k==0)
{
printf("\n职工号\t姓名\t性别\t年龄\t工资\t电话\t学历\t住址");
printf("\n-----------------------------------------------------------------\n");
}
k=i;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%s\t%s\n",dd.em[i].no,dd.em[i].name,dd.em[i].sex,dd.em[i].age,dd.em[i].gongzi,dd.em[i].tele,dd.em[i].xueli,dd.em[i].addr);
}
}
if(k==-1)
{
printf("\n\n没有找到该职工(职工号-%s)!
",no);
}
}
//查询(学历)
voidquery_data_xueli()
{
inti,k;
charxueli[20];
printf("\n请输入要查询的职工学历:
");
scanf("%s",&xueli);
k=-1;
for(i=0;i
{
if(strcmp(dd.em[i].xueli,xueli)==0)
{
if(k==0)
{
printf("\n职工号\t姓名\t性别\t年龄\t工资\t电话\t学历\t住址");
printf("\n-----------------------------------------------------------------\n");
}
k=i;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%s\t%s\n",dd.em[i].no,dd.em[i].name,dd.em[i].sex,dd.em[i].age,dd.em[i].gongzi,dd.em[i].tele,dd.em[i].xueli,dd.em[i].addr);
}
}
if(k==-1)
{
printf("\n\n没有找到该职工(学历-%s)!
",xueli);
}
}
//主函数
voidmain()
{
intfun;
read_data();
menu();
while
(1)
{
printf("请输入功能号[0-6]:
",&fun);
scanf("%d",&fun);
switch(fun)
{
case0:
break;
case1:
view_data();
break;
case2:
add_data();
break;
case3:
delete_data();
break;
case4:
edit_data();
break;
case5:
query_data_no();
break;
case6:
query_data_xueli();
break;
}
if(fun==0)break;
to_menu();