C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(33页珍藏版)》请在冰豆网上搜索。
![C语言课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/13/dab1cec3-f5ab-4882-89fc-4a6a831e14b0/dab1cec3-f5ab-4882-89fc-4a6a831e14b01.gif)
C语言课程设计
武汉工商学院
信息工程学院
项目名称:
C语言课程设计
学生姓名:
郑立旭
学号:
15406004
班级:
15物联网1班
指导教师:
王巍江红钢
2016年3月25日
目录
一、课程设计的目的与要求1
1.1目的1
1.2要求1
二、程序设计思路2
三、功能模块图2
3.1主菜单2
3.2录入模块3
3.3浏览模块3
3.4查询模块4
3.5修改模块5
3.6删除模块5
四、算法设计6
4.1功能模块选择7
4.2录入模块8
4.3加载模块9
4.3浏览模块10
4.4查询模块11
4.5删除模块12
4.6修改模块13
4.7退出模块13
五、程序运行结果14
5.1主菜单15
5.2录入模块16
5.3浏览模块17
5.4查询模块17
5.5修改模块18
5.6删除模块19
5.7退出19
六、源程序20
七、编程中遇到的困难及解决方法27
八、总结心得27
九、致谢27
一、课程设计的目的与要求
1.1目的
1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。
2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。
3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
1.2要求
1、应提供一个清晰美观的界面来调用各个功能。
2、输入功能:
职工信息录入可以一次完成若干条记录的输入。
3、浏览功能:
完成对全部职工信息的显示。
4、查找功能:
完成按职工的职工号查询职工的相关信息,并显示。
5、删除功能:
通过输入职工的职工号完成对该名职工的信息进行删除。
6、修改功能:
通过输入职工的职工号完成对该名职工的信息进行修改。
7、退出职工信息管理系统。
二、程序设计思路
(1)根据题目要求,应该把职工信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;
(2)在程序中需实现职工信息浏览、查询、删除、修改等功能的操作,所以需要建立相应的功能模块来实现;
(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
三、功能模块图
3.1主菜单
3.2录入模块
3.3浏览模块
3.4查询模块
3.5修改模块
3.6删除模块
四、算法设计
4.1功能模块选择
显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的intmenu()函数来实现。
intmenu()
{
inta;
printf("***************************************************************************\n\n");
printf("\t\t\t欢迎进入职工信息管理系统\n");
printf("\t\t\t1、职工信息录入\n");
printf("\t\t\t2、职工信息浏览\n");
printf("\t\t\t3、职工信息查询\n");
printf("\t\t\t4、职工信息删除\n");
printf("\t\t\t5、职工信息修改\n");
printf("\t\t\t6、管理系统退出\n");
printf("\n***************************************************************************\n");
printf("请输入对应的操作数:
");
scanf("%d",&a);
returna;
}
4.2录入模块
录入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的voidin()函数来实现。
voidin()
{
inti,n,m,j,t,flag=0;
FILE*fp;
m=load();
printf("文件中现有%d条信息\n",m);
printf("请输入你需要录入的人数:
");
scanf("%d",&n);
for(;;)
{
if(n>100)
{
printf("输入的人数超出了范围,请重新输入:
");
scanf("%d",&n);
}
else
break;
}
for(i=0;i{
printf("请输入工号:
");
scanf("%d",&wo[i].num);
printf("请输入姓名:
");
scanf("%s",wo[i].name);
printf("请输入性别:
");
scanf("%s",wo[i].sex);
printf("请输入年龄:
");
scanf("%d",&wo[i].age);
printf("请输入学历:
");
scanf("%s",wo[i].edu);
printf("请输入工资:
");
scanf("%d",&wo[i].salary);
printf("请输入地址:
");
scanf("%s",wo[i].add);
printf("请输入电话:
");
scanf("%s",&wo[i].tel);
}
fp=fopen("hao.txt","a");
for(i=0;i{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);//fprintf(fp2,"%d\t%s\t%s\t%d\t%d\t%d\t%.4f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].score_computer,stu[i].score_english,stu[i].score_math,stu[i].average);
}
fclose(fp);
printf("文件写入成功!
\n");
}
4.3加载模块
将内存中职工的信息输出到磁盘文件中,可以通过自己定义的
intload()函数来实现
intload()
{
inti=0;
FILE*fp;
if((fp=fopen("hao.txt","rt"))==NULL)
{
printf("文件打开出错!
\n");
return0;
}
while(!
feof(fp))
{
fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&wo[i].num,wo[i].name,wo[i].sex,&wo[i].age,wo[i].edu,&wo[i].salary,wo[i].add,&wo[i].tel);
if(wo[i].num>=1)
i++;
}
fclose(fp);
returni;}
4.3浏览模块
浏览所有职工的相关信息,通过自己定义的voidbrowse()函数来实现。
voidbrowse()
{
inti,m;
m=load();
printf("职工号:
姓名:
性别:
年龄:
学历:
工资:
地址:
电话:
\n");
for(i=0;i{
printf("%-10d%-10s%-7s%-7d%-9s%-8d%-11s%-13s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
}
}
4.4查询模块
可以按职工号来查询职工的相关信息,通过自己定义的voidquery()
函数来实现。
voidquery()
{
inti,m,a,flag=0;
m=load();
if(m==0)
printf("文件中暂无信息可查询!
\n");
else
{
printf("请输入你需要查询的工号:
");
scanf("%d",&a);printf("职工号:
姓名:
性别:
年龄:
学历:
工资:
地址:
电话:
\n");
for(i=0;i{
if(a==wo[i].num)
{
printf("%-10d%-10s%-7s%-7d%-9s%-8d%-11s%-13s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
flag=1;
}
}
if(flag==0)
printf("您需要查询的工号不存在!
\n");
}
}
4.5删除模块
删除需要删除的职工的所有信息,通过自己定义的voiddel()函数来实现。
voiddel()
{
FILE*fp;
inti,m,a,flag=0;
charch;
m=load();
if(m==0)
printf("文件中暂无信息可供操作!
\n");
else
{
printf("请输入员工号:
");
scanf("%d",&a);
for(i=0;i{
if(a==wo[i].num)
{
printf("职工号:
姓名:
性别:
年龄:
学历:
工资:
地址:
电话:
\n");
printf("%-10d%-10s%-7s%-7d%-9s%-8d%-11s%-13s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
flag=1;
printf("退出请按任意键,确认删除请输入Y:
");
getchar();
scanf("%c",&ch);
if(ch=='Y')
{
for(;i{
wo[i].num=wo[i+1].num;
strcpy(wo[i].name,wo[i+1].name);
strcpy(wo[i].sex,wo[i+1].sex);
wo[i].age=wo[i+1].age;
strcpy(wo[i].edu,wo[i+1].edu);
wo[i].salary=wo[i+1].salary;
strcpy(wo[i].add,wo[i+1].add);
strcpy(wo[i].tel,wo[i+1].tel);
}
fp=fopen("hao.txt","wt");
for(i=0;i{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
}
fclose(fp);
printf("信息删除成功!
\n");
}
}
}
if(flag==0)
printf("你输入的员工号不存在!
\n");
}
}
4.6修改模块
可以修改需要修改的职工的相关信息,通过自己定义的voidmodify()函数来实现。
voidmodify()
{
FILE*fp;
inti,m,a,flag=0;
charch[20];
m=load();
if(m==0)
printf("文件中暂无信息可操作!
\n");
else
{
printf("请输入你需要修改的信息的工号:
");
scanf("%d",&a);
for(i=0;i{
if(a==wo[i].num)
{
printf("职工号:
姓名:
性别:
年龄:
学历:
工资:
地址:
电话:
\n");
printf("%-10d%-10s%-7s%-7d%-9s%-8d%-11s%-13s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
printf("1、工号\n2、姓名\n3、性别\n4、年龄\n5、学历\n6、工资\n7、地址\n8、电话\n请输入对应修改的操作数:
");
flag=1;
scanf("%d",&a);
switch(a)
{
case1:
printf("请输入职工号:
");scanf("%d",&a);wo[i].num=a;break;
case2:
printf("请输入姓名:
");scanf("%s",ch);strcpy(wo[i].name,ch);break;
case3:
printf("请输入性别:
");scanf("%s",ch);strcpy(wo[i].sex,ch);break;case4:
printf("请输入年龄:
");scanf("%d",&a);wo[i].age=a;break;
case5:
printf("请输入学历:
");scanf("%s",ch);strcpy(wo[i].edu,ch);break;
case6:
printf("请输入工资:
");scanf("%d",&a);wo[i].salary=a;break;
case7:
printf("请输入地址:
");scanf("%s",ch);strcpy(wo[i].add,ch);break;
case8:
printf("请输入电话:
");scanf("%s",ch);strcpy(wo[i].tel,ch);break;
default:
printf("输入的信息有误!
\n");
}
fp=fopen("hao.txt","wt");
for(i=0;i{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
}
fclose(fp);
printf("信息修改成功!
\n");
}
}
if(flag==0)
printf("输入的员工号不存在!
\n");
}
}
4.7退出模块
退出职工信息管理系统,通过exit(0)来实现。
voidquit()
{
printf("谢谢使用!
\n");exit(0);}
五、程序运行结果
5.1主菜单
5.2录入模块
5.3浏览模块
5.4查询模块
5.5修改模块
5.6删除模块
5.7退出
六、源程序
#include
#include
#include
intmenu();
voidin();
voidbrowse();
voidquery();
voiddel();
voidmodify();
voidquit();
intload();
structworker
{
intnum;
charname[20];
charsex[3];
intage;
charedu[10];
intsalary;
charadd[20];
chartel[11];
}
wo[100];
main()
{
for(;;)
{
system("pause");
system("cls");
switch(menu())
{
case1:
in();break;
case2:
browse();break;
case3:
query();break;
case4:
del();break;
case5:
modify();break;
case6:
quit();
default:
printf("输入的信息有误,请重新输入!
\n");
}
}
}
intmenu()
{
inta;
printf("***************************************************************************\n\n");
printf("\t\t\t欢迎进入职工信息管理系统\n");
printf("\t\t\t1、职工信息录入\n");
printf("\t\t\t2、职工信息浏览\n");
printf("\t\t\t3、职工信息查询\n");
printf("\t\t\t4、职工信息删除\n");
printf("\t\t\t5、职工信息修改\n");
printf("\t\t\t6、管理系统退出\n");
printf("\n***************************************************************************\n");
printf("请输入对应的操作数:
");
scanf("%d",&a);
returna;
}
intload()
{
inti=0;
FILE*fp;
if((fp=fopen("hao.txt","rt"))==NULL)
{
printf("文件打开出错!
\n");
return0;
}
while(!
feof(fp))
{
fscanf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&wo[i].num,wo[i].name,wo[i].sex,&wo[i].age,wo[i].edu,&wo[i].salary,wo[i].add,&wo[i].tel);
if(wo[i].num>=1)
i++;
}
fclose(fp);
returni;
}
voidin()
{
inti,n,m,j,t,flag=0;
FILE*fp;
m=load();
printf("文件中现有%d条信息\n",m);
printf("请输入你需要录入的人数:
");
scanf("%d",&n);
for(;;)
{
if(n>100)
{
printf("输入的人数超出了范围,请重新输入:
");
scanf("%d",&n);
}
else
break;
}
for(i=0;i{
printf("请输入工号:
");
scanf("%d",&wo[i].num);
printf("请输入姓名:
");
scanf("%s",wo[i].name);
printf("请输入性别:
");
scanf("%s",wo[i].sex);
printf("请输入年龄:
");
scanf("%d",&wo[i].age);
printf("请输入学历:
");
scanf("%s",wo[i].edu);
printf("请输入工资:
");
scanf("%d",&wo[i].salary);
printf("请输入地址:
");
scanf("%s",wo[i].add);
printf("请输入电话:
");
scanf("%s",&wo[i].tel);
}
fp=fopen("hao.txt","a");
for(i=0;i{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);//fprintf(fp2,"%d\t%s\t%s\t%d\t%d\t%d\t%.4f\n",stu[i].id,stu[i].name,stu[i].sex,stu[i].score_computer,stu[i].score_english,stu[i].score_math,stu[i].average);
}
fclose(fp);
printf("文件写入成功!
\n");
}
voidbrowse()
{
inti,m;
m=load();
printf("职工号:
姓名:
性别:
年龄:
学历:
工资:
地址:
电话:
\n");
for(i=0;i{
printf("%-10d%-10s%-7s%-7d%-9s%-8d%-11s%-13s\n",wo[i].num,wo[i].name,wo[i].sex,wo[i].age,wo[i].edu,wo[i].salary,wo[i].add,wo[i].tel);
}
}
voidquery()
{
inti,m,a,flag=0;
m=load();
if(m==0)
printf("文件中暂无信息可查询!
\n");
else
{
printf("请输入你需要查询的工号:
");
scanf("%d",&a);
printf("职工号:
姓名:
性别:
年龄:
学历:
工资