C语言课程设计实验总结_第1页
C语言课程设计实验总结_第2页
C语言课程设计实验总结_第3页
C语言课程设计实验总结_第4页
C语言课程设计实验总结_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 zg char 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 d

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

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

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

8、为1,则将源文件删除,并将临时文件重命名;否则输出相关提示信息;提示退出该菜单; (10) 信息修改模块 定义相关变量 判断能否打开文件 提示信息; for(循环条件) 判断是否是要修改的职工; 若是则记标志变量为1,并将修改后的信息写入临时文件; 若不是则将其写入临时文件;关闭相关文件;判断标志变量的值;如果为1,则将源文件删除,并将临时文件重命名;否则输出相关提示信息;提示退出该菜单;四、详细程序 # include# include# include# include# define n 100void welcome();/欢迎界面int menu();/菜单void input();

9、/输入函数int pdnum(char num20);/判断职工号是否重复int pdsex(char ch);/判断输入性别是否符合要求void output();/输出函数void dayin(int i);/输出所查询的信息int dq();/读取文件中数据个数void search();/查询函数void searchzgnum();/按职工号查询void searchsex();/按性别查询void searchname();/按姓名查询void searchposition();/按职务查询void del();/删除函数void xiugai();/修改函数struct birt

10、hday /出生年月int year;int month;int day;struct zg char num20; /职工号 char name15; / 姓名 char sex; /性别 struct 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() c

11、ase 1:input();break; case 2:output();break; case 3:search();break; case 4:del();break; case 5:xiugai();break; case 6:exit(0);break;return 0;/*欢迎界面*/void welcome()system(cls); printf(nt553333333333333333); printf(nt553333); printf(nt55333333 333333333); printf(nt5533333 欢 迎 进 入 3333333); printf(nt553

12、33333 333333333); printf(nt553333 本 系 统 333333); printf(nt55333333 333333333); printf(nt553333333333333333); printf(nt55333333 按任意键进入 333333333); printf(nt553333333333333333n);fflush(stdin);getch();/*菜单*/int menu()int n;system(cls);printf(tt 菜单 n);printf(tt n);printf(tt 1.录入 2.浏览 n);printf(tt 3.查询 4

13、.删除 n);printf(tt 5.修改 6.退出 n);printf(tt n);printf(ttn);printf(ntt-请输入您的选择的序号(1-6): -bbbb);fflush(stdin); scanf(%d,&n);while(1)if(n6)printf(tt-输入错误!请重新选择: -bbbbbb);scanf(%d,&n); elsebreak;return n;/*读取文件中数据个数*/int dq() file *fp=null; int i=0; fp=fopen(职工信息登记表.txt,rb); while(fread(&zgi,sizeof(struct z

14、g),1,fp) i+; fclose(fp); return i;/*录入信息*/void input()file *fp;int i,number,flage;if(fp=fopen(职工信息登记表.txt,ab)=null)printf(文件 职工信息登记表.txt 不能打开!);getch();exit(1);printf(t请输入录入职工数:);scanf(%d,&number); for(i=0;inumber;i+) printf(t-请输入第%d个职工的信息:-,i+1); do printf(n请输入职工号:);scanf(%s,&zgi.num); flage=pdnum(

15、zgi.num); while(flage=1); printf(请输入姓名:);scanf(%s,&); do printf(请输入性别(f/m):);scanf(%s,&zgi.sex); flage=pdsex(zgi.sex); while(flage=0);printf(请输入出生年月如(2010 6 7):);scanf(%d%d%d,&zgi.birthday.year,&zgi.birthday.month,&zgi.birthday.day); printf(请输入学历(junior,high,college,master,doctor):);scanf(%s

16、,&zgi.xueli); printf(请输入职务:);scanf(%s,&zgi.position); printf(请输入工资:);scanf(%d,&zgi.wage); printf(请输入住址:);scanf(%s,&zgi.address); printf(请输入电话:);scanf(%s,&zgi.phone); fwrite(&zgi,sizeof(struct zg),1,fp);printf(t按任意键退出录入菜单n);getch(); fclose(fp);/*判断职工号是否重复*/int pdnum(char num20) file *fp; struct zg te

17、mp; 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) printf(t此职工号已存在!请重新输入); flage=1; break; return(flage);/*判断输入性别是否正确*/int pdsex(char ch) int flage; if(ch=f | ch=m) flage=1; else

18、 flage=0; if(flage=0) printf(t*输入错误!请重新输入n*); return(flage);/*输出所查询的信息*/void dayin(int i) printf(职工号:%sn,zgi.num); printf(姓名:%sn,); printf(性别:%cn,zgi.sex); printf(出生日期:%d %d %dn,zgi.birthday.year,zgi.birthday.month,zgi.birthday.day); printf(学历:%sn,zgi.xueli); printf(职务:%sn,zgi.position); pri

19、ntf(工资:%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 不能打开!); getch(); exit(1); for(i=0;inumber;i+) dayin(i); count+; printf(t共有%d个职工。n,count); printf(t-按任意键退出浏

20、览菜单-n); getch(); fclose(fp);/*查询信息*/void search() int choice; char ch; do system(cls); printf(ntn); printf(t 请输入你的查询方式 n); printf(t 1.职工号 2.性别 n); printf(t 3.姓名 4.职务 n); printf(tn); scanf(%d,&choice); switch(choice) case 1:searchzgnum();break; case 2:searchsex();break; case 3:searchname();break; cas

21、e 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=fopen(职工信息登记表.txt,rb)=null) printf(t-文件 职工信息登记表.txt 不能打开!-);

22、getch(); exit(1);do printf(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=y);/*按性别查询信息*/void searchsex() file *fp; int cou

23、nt=0,i; char sex,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;inumber;i+) if(zgi.sex=sex) count+; dayin(i); if(count=0) printf(t没有该性别的职工!n); printf(nt是否继续按性别查询(y/n)?); fflush(stdin

24、); 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); do printf(t请输入你要查询的姓名:); fflush(stdin); scanf(%s,&name); for(i=0;inumber;i+) if(strcmp(zgi.n

25、ame,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 打不开!-);

26、 getch(); exit(1); do printf(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

27、,flage=0; char number20,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*你确

28、定删除该职工信息(y/n)?*); fflush(stdin); ch=getchar(); if(ch=y|ch=y) flage=1; else fwrite(&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); else printf(t*未找到该职工号,删除失败!*n); fclose(fp); fclose(fp2); printf(nt按任意键继续); getch();/*修改信息*/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(); e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论