C语言课程设计实验总结(报告).pdf

上传人:叶*** 文档编号:36131544 上传时间:2022-08-25 格式:PDF 页数:30 大小:156.07KB
返回 下载 相关 举报
C语言课程设计实验总结(报告).pdf_第1页
第1页 / 共30页
C语言课程设计实验总结(报告).pdf_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《C语言课程设计实验总结(报告).pdf》由会员分享,可在线阅读,更多相关《C语言课程设计实验总结(报告).pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C 语言课程设计实验总结语言课程设计实验总结一、需求分析:1.需求概述设计一个职工信息管理系统,使之能提供以下功能:(1)职工信息录入功能(2)职工信息浏览功能(3)职工信息删除功能(4)职工信息修改功能(5)职工信息查询功能2.需求说明(1)职工信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话,并且职工号要求不重复。(2)录入的职工信息要求用文件形式保存,并对其进行浏览、查询、修改、删除等基本操作。(3)对职工的信息分别按职工号、性别、姓名、工资四种方式进行查询,并返回所有符合条件的职工信息。(4)对职工信息的修改应该逐个进行,一个职工的信息修改不应影响其他职工的信息。(5

2、)所设计的系统应以菜单的方式工作,应为用户提供清晰的使用提示,依据用户的选择进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。二、总体设计1.功能划分该系统可以按功能进行模块划分,如下图所示:菜单信息输入浏览信息信息查询信息修改信息删除职工号查询性别查询姓名查询工资查询其中:(1) 菜单选择模块完成用户的选择,此模块也是职工信息管理系统的入口,用户所要进行的所有操作需要在此模块中选择,并调用相对应的模块实现相应的功能。(2) 信息输入模块完成信息的录入功能,输入的信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话。(3) 信息浏览模块完成对所有的职工的信息

3、的显示。(4) 信息查询模块分四种查询方式:按职工号查询、按性别查询、按姓名查询、按职务查询。并且输出相对应且符合要求的职工信息。(5) 信息修改模块完成的是职工信息的修改功能。(6) 信息删除模块完成的是职工信息的删除功能。2.数据结构本系统中的主要数据结构为职工的信息,其中包含:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话等,其中的出生年月用结构体表示,其中又包含:出生的年份、出生的月份、出生的日期。3.程序流程职工信息管理系统系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统流程图如下图所示:开

4、始菜单输入?浏览?否查询?修改?删除?结束否否否否是是是是是三、详细设计1. 数据结构(1)职工信息:struct Zgchar num20; /职工号char name15; / 姓名char sex; /性别struct Birthday birthday; /出生年月char xueli10; /学历char position15; /职务int wage; /工资char address20;住址char phone12; /电话zgN;(2)出生年月struct Birthday/出生年月int year;int month;int day;2. 各个功能模块的处理流程对应总体设计时

5、的系统模块图,各个功能模块的处 流程如下:(1)菜单模块清屏;绘制菜单界面;信息提示,提示用户选择相应的序号;判断选择序号是否正确;返回变量的值;(2)信息录入模块定义相关变量;判断文件能否打开;提示需要输入职工个数;for(循环条件)提示输入信息;将信息写进文件;提示是否退出该菜单;关闭文件;(3)浏览信息模块定义相关变量;判断文件能否打开;输出所有职工信息;关闭文件;(4)信息查询模块定义相关变量;判断文件能否打开;do清屏;输出查询菜单;提示用户选择相应的序号;switch(变量)判断查询方式;提示是否退出该菜单;while(循环条件);(5)按职工号查询模块定义相关变量;判断文件能否打

6、开;do信息提示;for(;循环条件;)判断是否符合条件;若符合计数器加;输出符合的职工信息;判断计数器是否为;若为,输出相关信息;提示是否退出该菜单;while(循环条件);(6)按性别查询模块定义相关变量;判断文件能否打开;do信息提示;for(;循环条件;)判断是否符合条件;若符合计数器加;输出符合的职工信息;判断计数器是否为;若为,输出相关信息;提示是否退出该菜单;while(循环条件);(7)按姓名查询模块定义相关变量;判断文件能否打开;do信息提示;for(;循环条件;)判断是否符合条件;若符合计数器加;输出符合的职工信息;判断计数器是否为;若为,输出相关信息;提示是否退出该菜单;

7、while(循环条件);(8)按职务查询模块定义相关变量;判断文件能否打开;do信息提示;for(;循环条件;)判断是否符合条件;若符合计数器加;输出符合的职工信息;判断计数器是否为;若为,输出相关信息;提示是否退出该菜单;while(循环条件);(9)信息删除模块定义相关变量判断能否打开文件提示信息;for(循环条件)判断是否是要删除的职工;若是则记标志变量为 1;若不是则将其写入临时文件;关闭相关文件;判断标志变量的值;如果为 1,则将源文件删除,并将临时文件重命名;否则输出相关提示信息;提示退出该菜单;(10) 信息修改模块定义相关变量判断能否打开文件提示信息;for(循环条件)判断是否

8、是要修改的职工;若是则记标志变量为 1,并将修改后的信息写入临时文件;若不是则将其写入临时文件;关闭相关文件;判断标志变量的值;如果为 1,则将源文件删除,并将临时文件重命名;否则输出相关提示信息;提示退出该菜单;四、详细程序# include# include# include# include# define N 100void welcome();/欢迎界面int menu();/菜单void input();/输入函数int pdnum(char num20);/判断职工号是否重复int pdsex(char ch);/判断输入性别是否符合要求void output();/输出函数vo

9、id dayin(int i);/输出所查询的信息int dq();/读取文件中数据个数void search();/查询函数void searchzgnum();/按职工号查询void searchsex();/按性别查询void searchname();/按姓名查询void searchposition();/按职务查询void del();/删除函数void xiugai();/修改函数struct Birthday/出生年月int year;int month;int day;struct Zgchar num20;/职工号char name15;/ 姓名char sex;/性别st

10、ruct Birthday birthday;/出生年月char xueli10;/学历char position15;/职务int wage;/工资char address20;/住址char phone12;/电话zgN;int Number=0;/*主函数*/int main()fflush(stdin);welcome();while(1)switch(menu()case 1:input();break;case 2:output();break;case 3:search();break;case 4:del();break;case 5:xiugai();break;case 6

11、:exit(0);break;return 0;/*欢迎界面*/void welcome()system(cls);printf(nt553333333333333333);printf(nt553333);printf(nt55333333333333333);printf(nt5533333欢 迎 进 入3333333);printf(nt55333333333333333);printf(nt553333本 系 统333333);printf(nt55333333333333333);printf(nt553333333333333333);printf(nt55333333按任意键进入

12、333333333);printf(nt553333333333333333n);fflush(stdin);getch();/*菜单*/int menu()int n;system(cls);printf(tt 菜单 n);printf(ttn);printf(tt1.录入2.浏览n);printf(tt3.查询4.删除n);printf(tt5.修改6.退出n);printf(ttn);printf(ttn);printf(ntt-请输入您的选择的序号(1-6): -bbbb);fflush(stdin);scanf(%d,&n);while(1)if(n6)printf(tt-输入错误!

13、请重新选择: -bbbbbb);scanf(%d,&n);elsebreak;return n;/*读取文件中数据个数*/int dq()FILE *fp=NULL;int i=0;fp=fopen(职工信息登记表.txt,rb);while(fread(&zgi,sizeof(struct Zg),1,fp)i+;fclose(fp);return i;/*录入信息*/void input()FILE *fp;int i,number,flage;if(fp=fopen(职工信息登记表.txt,ab)=NULL)printf(文件 职工信息登记表.txt 不能打开!);getch();exi

14、t(1);printf(t 请输入录入职工数:);scanf(%d,&number);for(i=0;inumber;i+)printf(t-请输入第%d 个职工的信息:-,i+1);doprintf(n 请输入职工号:);scanf(%s,&zgi.num);flage=pdnum(zgi.num);while(flage=1);printf(请输入姓名:);scanf(%s,&zgi.name);doprintf(请输入性别(f/m):);scanf(%s,&zgi.sex);flage=pdsex(zgi.sex);while(flage=0);printf(请输入出生年月如(2010

15、6 7) :);scanf(%d%d%d,&zgi.birthday.year,&zgi.birthday.month,&zgi.birthday.day);printf(请输入学历(junior,high,college,master,doctor) :);scanf(%s,&zgi.xueli);printf(请输入职务:);scanf(%s,&zgi.position);printf(请输入工资:);scanf(%d,&zgi.wage);printf(请输入住址:);scanf(%s,&zgi.address);printf(请输入电话:);scanf(%s,&zgi.phone);f

16、write(&zgi,sizeof(struct Zg),1,fp);printf(t按任意键退出录入菜单n);getch();fclose(fp);/*判断职工号是否重复*/int pdnum(char num20)FILE *fp;struct Zg temp;int i,flage=0;if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(文件 职工信息登记表.txt 不能打开!);getch();exit(1);while(fread(&temp,sizeof(struct Zg),1,fp)=1)if(strcmp(temp.num,num)=0)print

17、f(t 此职工号已存在!请重新输入);flage=1;break;return(flage);/*判断输入性别是否正确*/int pdsex(char ch)int flage;if(ch=f | ch=m)flage=1;elseflage=0;if(flage=0)printf(t*输入错误!请重新输入n*);return(flage);/*输出所查询的信息*/void dayin(int i)printf(职工号:%sn,zgi.num);printf(姓名:%sn,zgi.name);printf(性别:%cn,zgi.sex);printf(出生日期:%d %d %dn,zgi.bi

18、rthday.year,zgi.birthday.month,zgi.birthday.day);printf(学历:%sn,zgi.xueli);printf(职务:%sn,zgi.position);printf(工资:%dn,zgi.wage);printf(住址:%sn,zgi.address);printf(电话:%snn,zgi.phone);/*输出全部信息*/void output()FILE *fp;int count=0,i;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(文件 职工信息登记表.txt 不能打开!);g

19、etch();exit(1);for(i=0;iNumber;i+)dayin(i);count+;printf(t 共有%d 个职工。n,count);printf(t-按任意键退出浏览菜单-n);getch();fclose(fp);/*查询信息*/void search()int choice;char ch;dosystem(cls);printf(ntn);printf(t请输入你的查询方式n);printf(t1.职工号2.性别n);printf(t3.姓名4.职务n);printf(tn);scanf(%d,&choice);switch(choice)case 1:search

20、zgnum();break;case 2:searchsex();break;case 3:searchname();break;case 4:searchposition();break;default:printf(t 输入错误,没有该功能!请返回重新选择);break;printf(nnt是否退出查询菜单(y/n)?n);fflush(stdin);ch=getchar();while(ch=Y|ch=y);/*按职工号查询信息*/void searchzgnum()FILE *fp;char ch;int count=0,i;char temp20;Number=dq();if(fp=

21、fopen(职工信息登记表.txt,rb)=NULL)printf(t-文件 职工信息登记表.txt 不能打开!-);getch();exit(1);doprintf(t 请输入你要查询的职工号:);scanf(%s,&temp);for(i=0;iNumber;i+)if(strcmp(zgi.num,temp)=0)count+;dayin(i);if(count=0)/*count=0 说明没有该职工号的职工*/printf(t 没有该工号的职工!n);printf(nt是否继续按职工号查询(y/n)?);fflush(stdin);ch=getchar();while(ch=y |ch

22、=Y);/*按性别查询信息*/void searchsex()FILE *fp;int count=0,i;char sex,ch;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(t-文件 职工信息登记表.txt 打不开!-);getch();exit(1);doprintf(t 请输入你要查询的性别:);fflush(stdin);scanf(%c,&sex);for(i=0;iNumber;i+)if(zgi.sex=sex)count+;dayin(i);if(count=0)printf(t 没有该性别的职工!n);printf(

23、nt是否继续按性别查询(y/n)?);fflush(stdin);ch=getchar();while(ch=y |ch=Y);/*按姓名查询信息*/void searchname()FILE *fp;int count=0,i;char name15;char ch;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(t-文件 职工信息登记表.txt 打不开!-);getch();exit(1);doprintf(t 请输入你要查询的姓名:);fflush(stdin);scanf(%s,&name);for(i=0;iNumber;i+)

24、if(strcmp(zgi.name,name)=0)count+;dayin(i);if(count=0)printf(t 没有该名字的职工!n);printf(nt是否继续按姓名查询(y/n)?);fflush(stdin);ch=getchar();while(ch=y |ch=Y);/*按职务查询信息*/void searchposition()FILE *fp;int count=0,i;char position15;char ch;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(t-文件 职工信息登记表.txt 打不开!-)

25、;getch();exit(1);doprintf(t 请输入你要查询的职务:);fflush(stdin);scanf(%s,&position);for(i=0;iNumber;i+)if(strcmp(zgi.position,position)=0)count+;dayin(i);if(count=0)printf(t 没有该职务的职工!n);printf(nt是否继续按职务查询(y/n)?);fflush(stdin);ch=getchar();while(ch=y |ch=Y);/*删除信息*/void del()FILE *fp,*fp2;int i,flage=0;char n

26、umber20,ch;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(文件 职工信息登记表.txt 打不开!n);getch();exit(1);if(fp2=fopen(temp.txt,wb)=NULL)printf(文件 temp.txt 打不开!n);getch();exit(1);printf(请输入你要删除的职工号:);scanf(%s,number);for(i=0;iNumber;i+)if(strcmp(zgi.num,number)=0)printf(t*你确定删除该职工信息(y/n)?*);fflush(stdin)

27、;ch=getchar();if(ch=y|ch=Y)flage=1;elsefwrite(&zgi,sizeof(struct Zg),1,fp2);elsefwrite(&zgi,sizeof(struct Zg),1,fp2);fclose(fp);fclose(fp2);if(flage=1)remove(职工信息登记表.txt);rename(temp.txt,职工信息登记表.txt);printf(t*删除成功!*n);elseprintf(t*未找到该职工号,删除失败!*n);fclose(fp);fclose(fp2);printf(nt按任意键继续);getch();/*修改

28、信息*/void xiugai()struct Zg temp;FILE *fp,*fp2;char number20,ch;int i,flage=0;Number=dq();if(fp=fopen(职工信息登记表.txt,rb)=NULL)printf(文件 职工信息登记表.txt 打不开!n);getch();exit(1);if(fp2=fopen(temp.txt,wb)=NULL)printf(文件 temp.txt 打不开!n);getch();exit(1);printf(t 请输入你要修改的职工的职工号:);scanf(%s,number);for(i=0;iNumber;i

29、+)if(strcmp(zgi.num,number)=0)printf(t*你确定修改该职工信息(y/n)?*);fflush(stdin);ch=getchar();if(ch=y|ch=Y)printf(t 请你输入要修改的信息:n);printf(n 请输入职工号:);scanf(%s,&temp.num);printf(请输入姓名:);scanf(%s,&temp.name);printf(请输入性别(f/m):);scanf(%s,&temp.sex);printf(请输入出生年月(如:201067):);scanf(%d%d%d,&temp.birthday.year,&temp

30、.birthday.month,&temp.birthday.day);printf(请输入学历(junior,high,college,master,doctor) :);scanf(%s,&temp.xueli);printf(请输入职务:);scanf(%s,&temp.position);printf(请输入工资:);scanf(%d,&temp.wage);printf(请输入住址:);scanf(%s,&temp.address);printf(请输入电话:);scanf(%ld,&temp.phone);fwrite(&temp,sizeof(struct Zg),1,fp2);flage=1;elsefwrite(&zgi,sizeof(struct Zg),1,fp2);else fwrite(&zgi,sizeof(struct Zg),1,fp2);fclose(fp);fclose(fp2);if(flage=1)remove(职工信息登记表.txt);rename(temp.txt,职工信息登记表.txt);printf(t*修改成功!*n);elseprintf(t*未找到该职工号,修改失败!*n);fclose(fp);fclose(fp2);printf(nt按任意键继续);getch();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 公文通知

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁