设计者:苏龙
班级序号:055071-12
学号:***********
课程设计报告
一 C语言课程设计的目的
设计一职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)职工信息录入功能(职工信息用文件保存)
(3)职工信息浏览功能
(4)职工信息查询功能,查询方式可按学历查询或按职工号查询
(5)职工信息删除修改功能(可选项)
二 课程设计报告正文
1题目要求
设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一职工信息管理系统,使之能提供以下功能:
(6)系统以菜单方式工作
(7)职工信息录入功能(职工信息用文件保存)
(8)职工信息浏览功能
(9)职工信息查询功能,查询方式可按学历查询或按职工号查询
(10)职工信息删除修改功能(可选项)
2需求分析
根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计
根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出。系统功能模块如下:
4详细设计
1 主函数
主函数设计要简洁,只提供部分函数的调用。其中各功能模块用菜单方式选择。
【程序】
void main()
{
int m;
while(1)
{ printf("\n\n\n\t\t ______________________________________\n");
printf("\t\t 欢迎进入中国地质大学(武汉)员工信息系统\n");
printf("\t\t 设计者:******-12苏龙 学号***********\n");
printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n\t\t\t\t添加,请按1");
printf("\n\t\t\t\t查找,请按2");
printf("\n\t\t\t\t修改,请按3");
printf("\n\t\t\t\t删除,请按4");
printf("\n\t\t\t\t输出,请按5");
printf("\n\t\t\t\t退出,请按0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}
2 数据添加
【程序】
void append()
{
if((fp=fopen("worker.xls
{
printf("\n不能打开该文件!");
exit();
}
printf("\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n");
scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
fclose(fp);
}
3 数据查找 数据查找共分为职工号、姓名等方式查找
【程序】
void search()
{
int l;
printf("\t\t\t\t*姓名查找按:1*\n");
printf("\t\t\t\t*学历查找按:2*\n");
printf("\t\t\t\t*职工号查按:3*\n");
scanf("%d",&l);
if(l>0&&l<4)
{switch(l)
{
case 1:nameway();
break;
case 2:xueliway();
break;
case 3:numway();
break;
}
printf("\n\n操作完毕");
}
else printf("\t\t\t\t输入有误");
}
void nameway()
{
int k=0;
char nam[8];
printf("\n请输入您要查找的职工姓名:");
scanf("%s",nam);
if((fp=fopen("worker.xls
{
printf("\n不能打开文件!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
if(strcmp(nam,one.name)==0)
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
k=1;
}
}
if(k==0)
printf("\n\n对不起,查无此人。");
fclose(fp);
}
void xueliway()
{int j=0;
char xueli[10];
printf("\t\t\t\t输入你要查询的学历\n");
scanf("%s",xueli);
if((fp=fopen("worker.xls
{
printf("\n不能打开文件!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
if(strcmp(xueli,one.record)==0)
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
j=1;
}
}
if(j==0)
printf("\n\n对不起,查无此人。");
fclose(fp);
}
void numway()
{
int i=0;
char numb[10];
printf("\t\t\t\t输入你要查询的职工号\n");
scanf("%s",numb);
if((fp=fopen("worker.xls
{
printf("\n不能打开文件!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
if(!strcmp(numb,one.num))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
i=1;
}
}
if(!i)
printf("\n\n对不起,查无此人。");
fclose(fp);
}
4 数据修改
【程序】
void modify()
{
int m,k=0;
long a;
char namekey[8];
printf("\n请输入您要修改的职工的姓名:");
scanf("%s",namekey);
if((fp=fopen("worker.xls
{
printf("\n不能打开该文件!");
exit();
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
printf("\n请输入信息(按照姓名、工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):");
scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
fseek(fp,a,0);
fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
}
else
printf("\n对不起,查无此人,无法进行修改。");
fclose(fp);
}
5 数据删除
【程序】
void delete()
{
int m,k=0;
long a,b;
char namekey[8], valid[4];
printf("\n请输入您要删除的职工姓名:");
scanf("%s",namekey);
if((fp=fopen("worker.xls
{
printf("\n不能打开该文件!");
exit();
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
if(strcmp(namekey,one.name)==0)
{
k=1;
break;
}
}
if(k==1)
{
printf("\n已查到,记录为");
printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m==1)
{
fseek(fp,a,0);
fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n" "
}
}
else
printf("\n对不起,查无此人。");
fclose(fp);
}
6 数据输出
【程序】
void output()
{
if((fp=fopen("worker.xls
{
printf("\n不能打开该文件!");
exit();
}
printf("\n\n%20s\n职工信息管理系统");
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
printf("%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr);
}
fclose(fp);
}
5运行与测试报告:
三 后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。
这次课程设计让我掌握了许多的有用知识。首先我能够熟练的应用软件Microsoft Visual C++ 6.0 了。再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。
在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。还有就是起初我设计的程序总是有错误,我细心的修改,不断的改进,最终我做出了自己非常理想的程序!
附录:源程序清单
#include struct { char name[8]; char num[10]; char sex[10]; char age[10]; char record[10]; char position[15]; char wanges[10]; char tel[15]; char addr[50]; }one; FILE *fp; void output(); void search(); void append(); void modify(); void delete(); void nameway(); void xueliway(); void numway(); void main() { int m; while(1) { printf("\n\n\n\t\t ______________________________________\n"); printf("\t\t 欢迎进入中国地质大学(武汉)员工信息系统\n"); printf("\t\t 设计者:055071-12苏龙 学号20071001569\n"); printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\n\t\t\t\t添加,请按1"); printf("\n\t\t\t\t查找,请按2"); printf("\n\t\t\t\t修改,请按3"); printf("\n\t\t\t\t删除,请按4"); printf("\n\t\t\t\t输出,请按5"); printf("\n\t\t\t\t退出,请按0\n"); scanf("%d",&m); if(m>=0&&m<=5) { switch(m) { case 1: append(); break; case 2: search(); break; case 3: modify(); break; case 4: delete(); break; case 5: output(); break; case 0: exit(); } printf("\n\n操作完毕,请再次选择!"); } else printf("\n\n选择错误,请再次选择!"); } } void output() { if((fp=fopen("worker.xls { printf("\n不能打开该文件!"); exit(); } printf("\n\n%20s\n职工信息管理系统"); while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); printf("%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); } fclose(fp); } void append() { if((fp=fopen("worker.xls { printf("\n不能打开该文件!"); exit(); } printf("\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n"); scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fclose(fp); } void search() { int l; printf("\t\t\t\t*姓名查找按:1*\n"); printf("\t\t\t\t*学历查找按:2*\n"); printf("\t\t\t\t*职工号查按:3*\n"); scanf("%d",&l); if(l>0&&l<4) {switch(l) { case 1:nameway(); break; case 2:xueliway(); break; case 3:numway(); break; } printf("\n\n操作完毕"); } else printf("\t\t\t\t输入有误"); } void nameway() { int k=0; char nam[8]; printf("\n请输入您要查找的职工姓名:"); scanf("%s",nam); if((fp=fopen("worker.xls { printf("\n不能打开文件!"); exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); if(strcmp(nam,one.name)==0) { printf("\n\n已查到,记录为:"); printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); k=1; } } if(k==0) printf("\n\n对不起,查无此人。"); fclose(fp); } void xueliway() {int j=0; char xueli[10]; printf("\t\t\t\t输入你要查询的学历\n"); scanf("%s",xueli); if((fp=fopen("worker.xls { printf("\n不能打开文件!"); exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); if(strcmp(xueli,one.record)==0) { printf("\n\n已查到,记录为:"); printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); j=1; } } if(j==0) printf("\n\n对不起,查无此人。"); fclose(fp); } void numway() { int i=0; char numb[10]; printf("\t\t\t\t输入你要查询的共号\n"); scanf("%s",numb); if((fp=fopen("worker.xls { printf("\n不能打开文件!"); exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); if(!strcmp(numb,one.num)) { printf("\n\n已查到,记录为:"); printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); i=1; } } if(!i) printf("\n\n对不起,查无此人。"); fclose(fp); } void modify() { int m,k=0; long a; char namekey[8]; printf("\n请输入您要修改的职工的姓名:"); scanf("%s",namekey); if((fp=fopen("worker.xls { printf("\n不能打开该文件!"); exit(); } while(!feof(fp)) { a=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); if(!strcmp(namekey,one.name)) { k=1; break; } } if(k) { printf("\n已查到,记录为:"); printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); printf("\n请输入信息(按照姓名、职工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):"); scanf("%s%s%s%s%s%s%s%s%s",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fseek(fp,a,0); fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); } else printf("\n对不起,查无此人,无法进行修改。"); fclose(fp); } void delete() { int m,k=0; long a,b; char namekey[8], valid[4]; printf("\n请输入您要删除的职工姓名:"); scanf("%s",namekey); if((fp=fopen("worker.xls { printf("\n不能打开该文件!"); exit(); } while(!feof(fp)) { a=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); if(strcmp(namekey,one.name)==0) { k=1; break; } } if(k==1) { printf("\n已查到,记录为"); printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",one.name,one.num,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); printf("\n确实要删除,按1;不删除,按0:"); scanf("%d",&m); if(m==1) { fseek(fp,a,0); fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n" " } } else printf("\n对不起,查无此人。"); fclose(fp); }下载本文