1、 课程设计汇报 (本科) 课程: 高级语言课程设计 学号: 姓名: 班级: 老师: 时间: 计算机科学和技术系 设计名称: 职员信息管理系统 设计内容、目标和要求: 目标:要求熟练掌握C语言基础知识和编辑技能。基础掌握结构化程序设计基础思绪和方法。经过编写学生C语言职员信息管理系统,便于对职员信息进行管理。经过对职员C语言信息管理系统设计,训练综合利用函数自定义,数组,结构体等,并提升程序设计能力。 要求:设计一个职员信息管理系统,使之能提供以下功效: 1、应提供一个界面来调用各个功效,调用
2、界面和各个功效操作界面应尽可能清楚美观! 2、输入功效:职员信息录入(职员信息用文件保留),能够一次完成若干条统计输入。 3、浏览功效:完成对全部职员信息显示。 4、查找功效:①完成按职员职员号查询职员相关信息,并显示。 ②完成按职员学历查询职员相关信息,并显示。 ③完成按职员电话号码查询职员相关信息,并显示。 5、删除功效:①经过输入职员姓名完成对该名职员信息进行删除。 ②经过输入职员号完成对该名职员信息进行删除。 6、添加功效:完成添加新职员信息任务。 7、修改功效:①经过输入职员姓名完成对该名职员信息进行修改。
3、 ②经过输入职员号完成对该名职员信息进行修改。 8、退出职员信息管理系统。 计划和进度安排: 12月8日至12月15日 仔细看数据库相关知识,经过上网查资料找思绪。 12月16日至12月20日 完成设计思绪并作出初稿,把主函数和各调用函数模块编出来。 12月21日至1月1日 逐步实现各模块功效化,把整个程序大致功效全部实现。 1月2日至1月6日 修改并完善各功效,写好电子试验汇报,并准备提交验收。 设计过程、步骤(可加页): 一.功效结构 职员信息管理系统 开始 1按职员号查询 2按学历查询 3按号码查询 2按职员姓名删除 1按职
4、员号删除 2按职员姓名修改 1按职员号修改 菜单 依据菜单输入值选择程序 1 录入职员信息 2 浏览职员信息 3 查询职员信息 5 添加职员信息 4 删除职员信息 6 修改职员信息 7 退出 二、设计说明 1.这个程序要用到结构体. struct employee{…………}; 2.函数申明和调用: void menu(); //菜单函数 void input(); // 录入函数 void save(int m);
5、 //保留文件函数 void display(); //浏览函数 void del(); // 删除函数 void del_name(); //按姓名删除函数 void del_num(); //按职员号删除函数 void add(); //添加函数
6、 void search(); //查询函数 void search_num(); //按职员号码查询函数 void search_xueli(); //按学历查询函数 void search_tel(); //按号码查询函数 void modify(); // 修改函数 void modify_num();
7、//按职员号修改函数 void modify_name(); //按姓名修改函数 3.选择功效,用到了do..while语句和switch,do..while是进行循环,switch是用来选择 do { if(n>=1&&n<=7) { flag=1; break; } else { flag=0; printf("您输入有误,请重新选择!"); } } while(flag==0); switch(n) {
8、 case 1:printf(" 输入职员信息");printf("\n");input();break; case 2:printf(" 浏览职员信息");printf("\n");display();break; case 3:printf(" 查询职员信息");printf("\n");search();break; case 4:printf(" 删除职员信息");printf("\n");del();break; case 5:printf(" 添加职员信息");printf("\n")
9、add();break; case 6:printf(" 修改职员信息");printf("\n");modify();break; case 7:exit(0);break; default :break; } 4.定义函数完成功效实现:录入职员信息,浏览职员信息,查询职员信息,修改职员信息,添加职员信息,删除职员信息。 5.实施程序。 结果和分析(能够加页): 功效上有对职员信息增加,删除,浏览,查询,修改等简单功效. 使用说明及运行实例 1.运行程序,进入职员信息管理系统主菜单: 图1:进入主菜单界 2.输入
10、数字“1”进行录入职员信息: 图2:录入职员信息 3.输入“y”返回主菜单(界面同图1)。 4.输入“2”浏览职员信息: 图3:浏览职员信息 5.输入“y”后继续,输入“3”进行查询职员信息: 图4:按职员号查询职员信息 5:按学历查询职员信息 图6:按电话号码查询职员信息 6.进入主菜单,输入“4”进行删除职员信息: 图7:按姓名删除职员信息 图8:按职员号删除职员信息 7.进入主菜单输入“5”进行添加职员信息: 图9:添加职员信息 8.进入主菜单输入“6”进行修改职员信息: 图10:按姓名修改职员信息 图11:按职员号修改职员信息 9.进入主菜单输
11、入”7”退出职员信息管理系统: 图12:退出系统 优点是:基础实现了程序多功效,对和查询职员信息提供了三种方法,对和修改和删除职员信息提供了两种方法,功效多个多样。旗帜变量使用也是优点之一;这个程序用到了结构体,整个程序简单,易懂。 缺点是:保留职员信息有限,程序段比较臃长。 设计体会和提议: 经过这次课程设计,我愈加了解C语言,学会愈加好使用C语言函数调用和结构体等,把学过知识利用于实践中,而不仅仅停留于对书本单纯了解;这次设计也让我知道我懂太少,要学习东西还有很多。想完成一项功效就要用很复杂语句去实现,所以整个程序变很长,复杂,不过结构体,数组,指针等灵活利用又可使程序变易懂
12、另外,团体合作也是成功一部分!
在编写代码时一开始没有利用有意义函数名和变量,结果找起来和修改好麻烦,也使她人看不懂。在整个课程设计中,我认为最关键就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误时候能够耐心去修改,只有这么,才能很好完成程序。
即使在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计经历让我学到了太多,以前好多不懂也全部了解了。也学会了作为大学生我们也应该学会不仅从课堂上学习知识,还应该学会自学。
附录:
#include
13、//标准输入输出函数库
#include
14、 //工资 char addr[30]; //家庭住址 char tel[20]; //联络电话 }employee[100]; //定义一个结构体 int main() //函数主体 { void menu(); //菜单函数 void input(); // 录入函数 void save(int m);
15、 //保留文件函数 void display(); //浏览函数 void del(); // 删除函数 void del_name(); //按姓名删除函数 void del_num(); //按职员号删除函数 void add(); //添加函数 voi
16、d search(); //查询函数 void search_num(); //按职员号码查询函数 void search_xueli(); //按学历查询函数 void search_tel(); //按号码查询函数 void modify(); // 修改函数 void modify_num(); //按职
17、员号修改函数 void modify_name(); //按姓名修改函数 int n,flag; char a; menu(); printf("请选择你需要操作步骤(1--7):\n"); scanf("%d",&n); do { if(n>=1&&n<=7) { flag=1; break; } else { flag=0; printf("您输入有误,请重新选择!"); }
18、} while(flag==0); while(flag==1) { switch(n) { case 1:printf(" ◆◆◆输入职员信息◆◆◆\n");printf("\n");input();break; case 2:printf(" ◆◆◆浏览职员信息◆◆◆\n");printf("\n");display();break; case 3:printf(" ◆◆◆查询职员信息◆◆◆\n");printf("\n
19、");search();break; case 4:printf(" ◆◆◆删除职员信息◆◆◆\n");printf("\n");del();break; case 5:printf(" ◆◆◆添加职员信息◆◆◆\n");printf("\n");add();break; case 6:printf(" ◆◆◆修改职员信息◆◆◆\n");printf("\n");modify();break; case 7:exit(0);break;
20、 default :break; } getchar(); printf("\n"); printf("是否继续进行(y or n):\n"); scanf("%c",&a); if(a=='y') { flag=1; system("cls"); //清屏 menu(); //调用菜单函数 printf("请再次选择你需要操作步骤(1--7):\n");
21、 scanf("%d",&n); printf("\n"); } else exit(0); } } void menu() //菜单函数 { printf(" ************欢迎进入职员信息管理系统**********\n"); printf(" 1.录入职员信息"); printf(" 2.浏览职员信息\n"); printf(" 3.查询职员信息"); printf(" 4.删除职员信息\n"); prin
22、tf(" 5.添加职员信息"); printf(" 6.修改职员信息\n"); printf(" 7.退出\n"); printf(" ********************谢谢使用******************\n"); printf("\n"); printf("\n"); } void input() //录入函数 { int i,m; printf("请输入需要创建信息职员人数(1--100):\n"); scanf("%d",&m); f
23、or (i=0;i 24、canf("%s",employee[i].xueli);
printf("请输入工资: ");
scanf("%d",&employee[i].wage);
printf("请输入住址: ");
scanf("%s",employee[i].addr);
printf("请输入电话: ");
scanf("%s",employee[i].tel);
printf("\n");
}
printf("\n创建完成!\n");
save(m);
}
void save(int m) //保留文件函数
{
25、
int i;
FILE*fp;
if ((fp=fopen("employee_list.txt","wb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i 26、/导入函数
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list.txt","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&employee[i],sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);//循 27、环过程中跳出循环时i自动加一,所以要减去一
}
void display() //浏览函数
{
int i;
int m=load();
printf(" 职员号 姓名 性别 年纪 学历 工资 住址 电话 \n");
for(i=0;i 28、e,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel);
}
void del() //删除函数
{
int t,flag;
do
{
printf("\n按职员号删除请按1; 按姓名删除请按2; 进入主函数请按3\n");
scanf("%d",&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
prin 29、tf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职员号删除\n");del_num();break;
case 2:printf("按姓名删除\n");del_name();break;
case 3:main();break;
default:break;
}
}
}
void del_name() //按姓名删除函数
{
30、int m=load();
int i,j,n,t,flag;
char name[20];
printf("\n 原来职员信息:\n");
display(); //调用浏览函数
printf("\n");
printf("请输入要删除职员姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i 31、 姓名 性别 年纪 学历 工资 住址 电话 \n");
printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex,
employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf(" 32、d",&n);
if(n==1)
{
for(j=i;j 33、yee[j+1].age;
strcpy(employee[j].xueli,employee[j+1].xueli);
employee[j].wage=employee[j+1].wage;
strcpy(employee[j].addr,employee[j+1].addr);
strcpy(employee[j].tel,employee[j+1].tel);//把下一职员信息复制到上一个职员信息位置中去
}
flag=0;
34、
}
}
}
if(!flag) //flag取逻辑反,及flag==0
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n 浏览删除后全部职员信息:\n");
save(m); //调用保留函数
display(); //调用浏览函数
printf("\n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2\n");
scanf("%d",&t);
switch(t)
{
case 0:main();break;
case 1 35、del();break;
case 2:break;
default :break;
}
}
void del_num() //按职员号删除函数
{
int m=load();
int i,j,n,t,flag;
int num;
printf("\n 原来职员信息:\n");
display(); //调用浏览函数
printf("\n");
printf("请输入要删除职员职员号:\n");
scanf("%d",&num);
for(flag=1,i=0;flag&&i 36、 if(employee[i].num==num)
{
printf("\n已找到此人,原始统计为:\n");
printf(" 职员号 姓名 性别 年纪 学历 工资 住址 电话 \n");
printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex,
employee[i].age,employee[i].xueli,employee[i].wage,employ 37、ee[i].addr,employee[i].tel);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1)
{
for(j=i;j 38、 employee[j].sex=employee[j+1].sex;
employee[j].age=employee[j+1].age;
strcpy(employee[j].xueli,employee[j+1].xueli);
employee[j].wage=employee[j+1].wage;
strcpy(employee[j].addr,employee[j+1].addr);
strcp 39、y(employee[j].tel,employee[j+1].tel);//把下一职员信息复制到上一个职员信息位置中去
}
flag=0;
}
}
}
if(!flag) //flag取逻辑反,及flag==0
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n 浏览删除后全部职员信息:\n");
save(m); //调用保留函数
display(); //调用浏览函数
printf("\n不在删除请按0,返回删除菜单请按1,继续按 40、职员号删除请按2\n");
scanf("%d",&t);
switch(t)
{
case 0:main();break;
case 1:del();break;
case 2:break;
default :break;
}
}
void add() //添加函数
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原来职员信息:\n");
display();
printf("\ 41、n");
fp=fopen("emploee_list.txt","a");
printf("请输入想增加职员数:\n");
scanf("%d",&n);
for (i=m;i<(m+n);i++)
{
printf("\n 请输入新增加职员信息:\n");
printf("请输入职员号: ");
scanf("%d",&employee[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",employee[i].name);
42、 getchar();
printf("请输入性别(f--女 m--男): ");
scanf("%c",&employee[i].sex);
printf("请输入年纪: ");
scanf("%d",&employee[i].age);
printf("请输入学历: ");
scanf("%s",employee[i].xueli);
printf("请输入工资: ");
scanf("%d",&employee[i].wage);
printf( 43、"请输入住址: ");
scanf("%s",employee[i].addr);
printf("请输入电话: ");
scanf("%s",employee[i].tel);
printf("\n");
count=count+1;
printf("已增加人数:\n");
printf("%d\n",count);
}
printf("\n添加完成!\n");
m=m+count;
printf("\n浏览增加后全部职员信息:\n");
printf( 44、"\n");
save(m);
display();
fclose(fp);
}
void search()//查询函数
{
int t,flag;
do
{
printf("\n按职员号查询请按1; 按学历查询请按2; 按电话号码查询请按3; 进入主函数请按4\n");
scanf("%d",&t);
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请 45、重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职员号查询\n");search_num();break;
case 2:printf("按学历查询\n");search_xueli();break;
case 3:printf("按电话号码查询\n");search_tel();break;
case 4:main();break;
default:break;
} 46、
}
}
void search_num() //按职员号码查询函数
{
int num;
int i,t;
int m=load();
printf("请输入要查找职员号:\n");
scanf("%d",&num);
for(i=0;i 47、 printf(" %d %s %c %d %s %d %s %s\n",employee[i].num,employee[i].name,employee[i].sex,
employee[i].age,employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("不在查询请按0,返回 48、查询函数请按1,继续查询职员号请按2\n");
scanf("%d",&t);
switch(t)
{
case 0:main();break;
case 1:search();break;
case 2: break;
default:break;
}
}
void search_xueli() //按职员号码查询函数
{
char xueli[30];
int i,t,n=0;
int m=load();
printf("请输入要查找学历:\n");
scanf("%s",xue 49、li);
for(i=0;i 50、employee[i].xueli,employee[i].wage,employee[i].addr,employee[i].tel);
n++;
}
if(i==m&&n==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("不在查询请按0,返回查询函数请按1,继续查询学历请按2\n");
scanf("%d",&t);
switch(t)
{
case 0:main();break;
case 1:search();break;
case 2:br
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818