C语言课程设计实验总结报告.docx
- 文档编号:10647249
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:32
- 大小:62.95KB
C语言课程设计实验总结报告.docx
《C语言课程设计实验总结报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验总结报告.docx(32页珍藏版)》请在冰豆网上搜索。
C语言课程设计实验总结报告
C语言课程设计实验总结
一、需求分析:
1.需求概述
设计一个职工信息管理系统,使之能提供以下功能:
(1)职工信息录入功能
(2)职工信息浏览功能
(3)职工信息删除功能
(4)职工信息修改功能
(5)职工信息查询功能
2.需求说明
(1)职工信息包括:
职工号、姓名、性别、出生年月、学历职务、工资、住址、电话,并且职工号要求不重复。
(2)录入的职工信息要求用文件形式保存,并对其进行浏览、查询、修改、删除等基本操作。
(3)对职工的信息分别按职工号、性别、姓名、工资四种方式进行查询,并返回所有符合条件的职工信息。
(4)对职工信息的修改应该逐个进行,一个职工的信息修改不应影响其他职工的信息。
(5)所设计的系统应以菜单的方式工作,应为用户提供清晰的使用提示,依据用户的选择进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。
二、总体设计
1.功能划分
该系统可以按功能进行模块划分,如下图所示:
职工信息管理系统
其中:
(1)菜单选择模块完成用户的选择,此模块也是职工信息管理系统的入口,用户所要进行的所有操作需要在此模块中选择,并调用相对应的模块实现相应的功能。
(2)信息输入模块完成信息的录入功能,输入的信息包括:
职工号、姓名、性别、出生年月、学历职务、工资、住址、电话。
(3)信息浏览模块完成对所有的职工的信息的显示。
(4)信息查询模块分四种查询方式:
按职工号查询、按性别查询、按姓名查询、按职务查询。
并且输出相对应且符合要求的职工信息。
(5)信息修改模块完成的是职工信息的修改功能。
(6)信息删除模块完成的是职工信息的删除功能。
2.数据结构
本系统中的主要数据结构为职工的信息,其中包含:
职工号、姓名、性别、出生年月、学历职务、工资、住址、电话等,其中的出生年月用结构体表示,其中又包含:
出生的年份、出生的月份、出生的日期。
3.程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统流程图如下图所示:
是
是
是
是
是
否
否
否
否
否
三、详细设计
1.数据结构
(1)职工信息:
structZg
{
charnum[20];//职工号
charname[15];//姓名
charsex;//性别
structBirthdaybirthday;//出生年月
charxueli[10];//学历
charposition[15];//职务
intwage;//工资
charaddress[20];住址
charphone[12];//电话
}zg[N];
(2)出生年月
structBirthday//出生年月
{
intyear;
intmonth;
intday;
};
2.各个功能模块的处理流程
对应总体设计时的系统模块图,各个功能模块的处流程如下:
(1)菜单模块
清屏;
绘制菜单界面;
信息提示,提示用户选择相应的序号;
判断选择序号是否正确;
返回变量的值;
(2)信息录入模块
定义相关变量;
判断文件能否打开;
提示需要输入职工个数;
for(循环条件)
{
提示输入信息;
将信息写进文件;
}
提示是否退出该菜单;
关闭文件;
(3)浏览信息模块
定义相关变量;
判断文件能否打开;
输出所有职工信息;
关闭文件;
(4)信息查询模块
定义相关变量;
判断文件能否打开;
do
{
清屏;
输出查询菜单;
提示用户选择相应的序号;
switch(变量)
{
判断查询方式;
}
提示是否退出该菜单;
}while(循环条件);
(5)按职工号查询模块
定义相关变量;
判断文件能否打开;
do
{
信息提示;
for(;循环条件;)
{
判断是否符合条件;
若符合计数器加1;
输出符合的职工信息;
}
判断计数器是否为0;
若为0,输出相关信息;
提示是否退出该菜单;
}while(循环条件);
(6)按性别查询模块
定义相关变量;
判断文件能否打开;
do
{
信息提示;
for(;循环条件;)
{
判断是否符合条件;
若符合计数器加1;
输出符合的职工信息;
}
判断计数器是否为0;
若为0,输出相关信息;
提示是否退出该菜单;
}while(循环条件);
(7)按姓名查询模块
定义相关变量;
判断文件能否打开;
do
{
信息提示;
for(;循环条件;)
{
判断是否符合条件;
若符合计数器加1;
输出符合的职工信息;
}
判断计数器是否为0;
若为0,输出相关信息;
提示是否退出该菜单;
}while(循环条件);
(8)按职务查询模块
定义相关变量;
判断文件能否打开;
do
{
信息提示;
for(;循环条件;)
{
判断是否符合条件;
若符合计数器加1;
输出符合的职工信息;
}
判断计数器是否为0;
若为0,输出相关信息;
提示是否退出该菜单;
}while(循环条件);
(9)信息删除模块
定义相关变量
判断能否打开文件
提示信息;
for(循环条件)
{
判断是否是要删除的职工;
若是则记标志变量为1;
若不是则将其写入临时文件;
}
关闭相关文件;
判断标志变量的值;
如果为1,则将源文件删除,并将临时文件重命名;
否则输出相关提示信息;
提示退出该菜单;
(10)信息修改模块
定义相关变量
判断能否打开文件
提示信息;
for(循环条件)
{
判断是否是要修改的职工;
若是则记标志变量为1,并将修改后的信息写入临时文件;
若不是则将其写入临时文件;
}
关闭相关文件;
判断标志变量的值;
如果为1,则将源文件删除,并将临时文件重命名;
否则输出相关提示信息;
提示退出该菜单;
四、详细程序
#include
#include
#include
#include
#defineN100
voidwelcome();//欢迎界面
intmenu();//菜单
voidinput();//输入函数
intpdnum(charnum[20]);//判断职工号是否重复
intpdsex(charch);//判断输入性别是否符合要求
voidoutput();//输出函数
voiddayin(inti);//输出所查询的信息
intdq();//读取文件中数据个数
voidsearch();//查询函数
voidsearchzgnum();//按职工号查询
voidsearchsex();//按性别查询
voidsearchname();//按姓名查询
voidsearchposition();//按职务查询
voiddel();//删除函数
voidxiugai();//修改函数
structBirthday//出生年月
{
intyear;
intmonth;
intday;
};
structZg
{
charnum[20];//职工号
charname[15];//姓名
charsex;//性别
structBirthdaybirthday;//出生年月
charxueli[10];//学历
charposition[15];//职务
intwage;//工资
charaddress[20];//住址
charphone[12];//电话
}zg[N];
intNumber=0;
/****************************主函数******************************/
intmain()
{
fflush(stdin);
welcome();
while
(1)
{
switch(menu())
{
case1:
input();break;
case2:
output();break;
case3:
search();break;
case4:
del();break;
case5:
xiugai();break;
case6:
exit(0);break;
}
}
return0;
}
/******************************欢迎界面****************************/
voidwelcome()
{
system("cls");
printf("\n\t\5\5\3\3\3\3☆☆※★★※☆☆※★★※☆☆※★★※☆☆\3\3\3\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3※◆◆☆☆◆◆◆◆◆◆※☆☆※◆◆◆◆◆◆☆☆◆◆※\3\3");
printf("\n\t\5\5\3\3\3\3\3\3★★★★\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3\3☆★☆☆★★☆欢迎进入☆☆★☆☆★★\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3\3\3★★★★\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3☆★☆☆★◆◆本系统◆◆★☆☆★☆\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3\3\3★★★★\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3\3\3☆☆※★★※☆☆※★★※☆☆※★★※☆☆\3\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3\3\3★★☆◆◆按任意键进入◆◆☆★★\3\3\3\3\3\3\3\3\3");
printf("\n\t\5\5\3\3\3\3☆☆※★★※☆☆※★★※☆☆※★★※☆☆\3\3\3\3\3\3\3\3\3\3\3\3\n");
fflush(stdin);
getch();
}
/******************************菜单****************************/
intmenu()
{
intn;
system("cls");
printf("\t\t※◆※◆※◆※菜◆单※◆※◆※◆※\n");
printf("\t\t※※\n");
printf("\t\t※1.录入2.浏览※\n");
printf("\t\t※3.查询4.删除※\n");
printf("\t\t※5.修改6.退出※\n");
printf("\t\t※※\n");
printf("\t\t※◆※◆※◆※◆※◆※◆※◆※◆※※\n");
printf("\n\t\t--请输入您的选择的序号(1-6):
[]--\b\b\b\b");
fflush(stdin);
scanf("%d",&n);
while
(1)
{
if(n<1||n>6)
{
printf("\t\t-----输入错误!
请重新选择:
[]----\b\b\b\b\b\b");
scanf("%d",&n);
}
else
break;
}
returnn;
}
/******************************读取文件中数据个数****************************/
intdq()
{
FILE*fp=NULL;
inti=0;
fp=fopen("职工信息登记表.txt","rb");
while(fread(&zg[i],sizeof(structZg),1,fp))
i++;
fclose(fp);
returni;
}
/******************************录入信息****************************/
voidinput()
{
FILE*fp;
inti,number,flage;
if((fp=fopen("职工信息登记表.txt","ab"))==NULL)
{
printf("文件职工信息登记表.txt不能打开!
");
getch();
exit
(1);
}
printf("\t请输入录入职工数:
");
scanf("%d",&number);
for(i=0;i { printf("\t---请输入第%d个职工的信息: ---",i+1); do { printf("\n请输入职工号: ");scanf("%s",&zg[i].num); flage=pdnum(zg[i].num); }while(flage==1); printf("请输入姓名: ");scanf("%s",&zg[i].name); do { printf("请输入性别(f/m): ");scanf("%s",&zg[i].sex); flage=pdsex(zg[i].sex); }while(flage==0); printf("请输入出生年月如(201067): ");scanf("%d%d%d",&zg[i].birthday.year,&zg[i].birthday.month,&zg[i].birthday.day); printf("请输入学历(junior,high,college,master,doctor): ");scanf("%s",&zg[i].xueli); printf("请输入职务: ");scanf("%s",&zg[i].position); printf("请输入工资: ");scanf("%d",&zg[i].wage); printf("请输入住址: ");scanf("%s",&zg[i].address); printf("请输入电话: ");scanf("%s",&zg[i].phone); fwrite(&zg[i],sizeof(structZg),1,fp); } printf("\t★★★★按任意键退出录入菜单★★★★\n"); getch(); fclose(fp); } /******************************判断职工号是否重复****************************/ intpdnum(charnum[20]) { FILE*fp; structZgtemp; inti,flage=0; if((fp=fopen("职工信息登记表.txt","rb"))==NULL) { printf("文件职工信息登记表.txt不能打开! "); getch(); exit (1); } while(fread(&temp,sizeof(structZg),1,fp)==1) { if(strcmp(temp.num,num)==0) { printf("\t此职工号已存在! 请重新输入"); flage=1; break; } } return(flage); } /******************************判断输入性别是否正确****************************/ intpdsex(charch) { intflage; if(ch=='f'||ch=='m') flage=1; else flage=0; if(flage==0) printf("\t**输入错误! 请重新输入\n**"); return(flage); } /******************************输出所查询的信息****************************/ voiddayin(inti) { printf("职工号: %s\n",zg[i].num); printf("姓名: %s\n",zg[i].name); printf("性别: %c\n",zg[i].sex); printf("出生日期: %d%d%d\n",zg[i].birthday.year,zg[i].birthday.month,zg[i].birthday.day); printf("学历: %s\n",zg[i].xueli); printf("职务: %s\n",zg[i].position); printf("工资: %d\n",zg[i].wage); printf("住址: %s\n",zg[i].address); printf("电话: %s\n\n",zg[i].phone); } /******************************输出全部信息****************************/ voidoutput() { FILE*fp; intcount=0,i; Number=dq(); if((fp=fopen("职工信息登记表.txt","rb"))==NULL) { printf("文件职工信息登记表.txt不能打开! "); getch(); exit (1); } for(i=0;i { dayin(i); count++; } printf("\t共有%d个职工。 \n",count); printf("\t---按任意键退出浏览菜单---\n"); getch(); fclose(fp); } /******************************查询信息****************************/ voidsearch() { intchoice; charch; do { system("cls"); printf("\n\t★★★★★★★★★★★★★★★★\n"); printf("\t★请输入你的查询方式★\n"); printf("\t★1.职工号2.性别★\n"); printf("\t★3.姓名4.职务★\n"); printf("\t★★★★★★★★★★★★★★★★\n"); scanf("%d",&choice); switch(choice) { case1: searchzgnum();break; case2: searchsex();break; case3: searchname();break; case4: searchposition();break; default: printf("\t输入错误,没有该功能! 请返回重新选择");break; } printf("\n\n\t◇◇◇是否退出查询菜单(y/n)? ◇◇◇\n"); fflush(stdin); ch=getchar(); }while(ch=='Y'||ch=='y'); } /******************************按职工号查询信息****************************/ voidsearchzgnum() { FILE*fp; charch; intcount=0,i; chartemp[20]; Number=dq(); if((fp=fopen("职工信息登记表.txt","rb"))==NULL) { printf("\t----文件职工信息登记表.txt不能打开! ----"); getch(); exit (1); } do { printf("\t请输入你要查询的职工号: "); scanf("%s",&temp); for(i=0;i { if(strcmp(zg[i].num,temp)==0) { count++; dayin(i); } } if(count==0)/*count=0说明没有该职工号的职工*/ printf("\t没有该工号的职工! \n"); printf("\n\t★★★是否继续按职工号查询(y/n)? ★★★"); fflush(stdin); ch=getchar(); }while(ch=='y'||ch=='Y'); } /******************************按性别查询信息****************************/ voidsearchsex() { FILE*fp; intcount=0,i; charsex,ch; Number=dq(); if((fp=fopen("职工信息登记表.txt","rb"))==NULL) { printf("\t----文件职工信息登记表.txt打不开! ----"); getch(); exit (1); } do { printf("\t请输入你要查询的性别: "); fflush(stdin); scanf("%c",&sex); for(i=0;i { if(zg[i].sex==sex) { count++; dayin(i); } } if(count==0) printf("\t没有该性别的职工! \n"); printf("\n\t★★★是否继续按性别查询(y/n)? ★★★"); fflush(stdin); ch=getchar(); }while(ch=='y'||ch=='Y'); } /********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 实验 总结报告
![提示](https://static.bdocx.com/images/bang_tan.gif)