C语言课程设计—身份证管理系统1课程设计正文1.问题描述:制作一个身份证管理软件,解决日常生活中有关身份证管理的简单问题,给日常生活带来方便。2.基本要求:1)具备添加、删除功能;2)具备多种查询功能:按年龄、出生日期等;3)具备统计功能,能统计某年龄段的人数;4)在此基础上,可进行文件操作。3.系统分析与设计:首先构建一个结构体变量,里面放姓名、地址、电话和身份号码。Structcontact{charname[size];charunit[size];chartele[size];charidnum[size];};。主函数中有一开关语句,提示用户输入1个字符,系统会对该字符进行验证。如果是1就进行增加信息操作;2就进行查找信息操作;3就进行删除信息操作;4就进行修改信息操作;5就进行显示信息操作;0就进行退出界面操作。增加信息操作调用regist()函数,而vregist()函数又调用input()函数。查找信息操作调用query函数。删除调用clear函数。修改调用modify函数。显示调用browse函数。整个系统呈现模块化模式,每个数独立完成自己的作用,又相互联系,构成一个系统。C语言课程设计—身份证管理系统24.结构图:5.流程图:开关语句switch增加信息1退出界面主函数main查找信息删除信息修改信息显示信息C语言课程设计—身份证管理系统3开始菜单指令令123450rigist()inputqueryClearmodifybrowse界面返回指令指令输入按要求查找按要求查找显示信息删除信息C语言课程设计—身份证管理系统46.程序清单:#includestdio.h#includestdlib.h#includestring.h#definesize64#definefileDBc:\\contact.txtstructcontact{charname[size];/*name*/charunit[size];/*workaddress*/chartele[size];/*telephonenumber*/charidnum[size];/*idnumber*/};typedefstructcontactCON;#defineBNAME1#defineBUNIT2#defineBTELE4#defineBMAIL8#defineBFULL0xFFC语言课程设计—身份证管理系统5intOPER[5]={BFULL,BNAME,BUNIT,BTELE,BMAIL};voidinput(CON*s,intmask){if(mask&BNAME){printf(pleaseinputname:\n);scanf(%s,s-name);}if(mask&BUNIT){printf(pleaseinputworkaddress:\n);scanf(%s,s-unit);}if(mask&BTELE){printf(pleaseinputtelephonenumber:\n);scanf(%s,s-tele);}if(mask&BMAIL){printf(pleaseinputidnumber:\n);scanf(%s,s-idnum);}}/*endinput*/voidshow(intid,CON*s){if(!s)return;if(id)printf(%d\t%s\t%s\t%s\t%s\n,id,s-name,s-unit,s-tele,s-idnum);elseprintf(【name】%s【workaddress】%s【telephonenumber】%sC语言课程设计—身份证管理系统6【idnum】%s\n,s-name,s-unit,s-tele,s-idnum);/*endif*/}/*endshow*/voidregist(void){CONs;FILE*f=0;input(&s,BFULL);f=fopen(fileDB,ab);fwrite(&s,sizeof(s),1,f);fclose(f);printf(datahavereserved!\n);}/*endregist*/intbrowse(char*key,fpos_t*p,CON*s){FILE*f=0;inti=0,r=0;CONt;char*a=0,*b=0;fpos_tq;if(!s)return0;f=fopen(fileDB,rb);if(!f){C语言课程设计—身份证管理系统7printf(norecord\n);return0;}/*endif*/printf(number\tname\t\twork\tphone\t\tidnumber\n);printf(------------------------------------------------------------------\n);while(!feof(f)){fgetpos(f,&q);r=fread(&t,sizeof(t),1,f);if(r1)break;if(t.name[0]==0)continue;if(key){a=strstr(t.name,key);b=strstr(t.tele,key);if(a==0&&b==0)continue;}/*endif*/if(p)*p=q;if(s)memcpy(s,&t,sizeof(t));i++;show(i,&t);}/*endwhile*/fclose(f);printf(------------------------------------------------\n);C语言课程设计—身份证管理系统8returni;}/*endbrowse*/fpos_tquery(CON*s){charkey[size]=;fpos_tp=0;intr=0;printf(pelaseinputnameorphonenumber:\n);scanf(%s,key);r=browse(key,&p,s);returnr?p:-1;}/*endquery*/voidclear(void){FILE*f=0;CONs;fpos_tp=query(&s);if(p0)return;f=fopen(fileDB,rb+);fsetpos(f,&p);memset(&s,0,sizeof(s));fwrite(&s,sizeof(s),1,f);fclose(f);C语言课程设计—身份证管理系统9printf(recordhasbeendeleted\n);}/*endclear*/voidmodify(void){FILE*f=0;CONs;intcmd=0;fpos_tp=query(&s);if(p0)return;f=fopen(fileDB,rb+);fsetpos(f,&p);for(;;){show(0,&s);printf(choose:1-name;2-workaddress;3-phonenumber;4-idnumber;5-reserveandexit;6-exit\n);scanf(%d,&cmd);switch(cmd){case1:case2:case3:case4:input(&s,OPER[cmd]);break;C语言课程设计—身份证管理系统10case5:fsetpos(f,&p);fwrite(&s,sizeof(s),1,f);case6:fclose(f);return;default:printf(wronginputagain。\n);}/*endcase*/}/*mext*/}/*endclear*/voidmain(){intcmd=0;CONs;for(;;){printf(hello!pleasechoose:1-add;2-search;3-delete;4-correct;5-display;0-exit\n);scanf(%d,&cmd);switch(cmd){case0:return0;C语言课程设计—身份证管理系统11case1:regist();break;case2:query(&s);break;case3:clear();break;case4:modify();break;case5:browse(0,0,&s);break;}}}本小组由张涛和王淼组成,我负责,添加、删除和查找的被调函数的编写。C语言课程设计—身份证管理系统127.调试结果:系统界面:增加,查找信息:C语言课程设计—身份证管理系统13修改信息:显示信息:C语言课程设计—身份证管理系统148.个人分工:voidregist(void){CONs;FILE*f=0;input(&s,BFULL);f=fopen(fileDB,ab);fwrite(&s,sizeof(s),1,f);fclose(f);printf(datahavereserved!\n);}/*endregist*/voidinput(CON*s,intmask){if(mask&BNAME){printf(pleaseinputname:\n);scanf(%s,s-name);}if(mask&BUNIT){printf(pleaseinputworkaddress:\n);scanf(%s,s-unit);}if(mask&BTELE){printf(pleaseinputtelephonenumber:\n);scanf(%s,s-tele);}if(mask&BMAIL){printf(pleaseinputidnumber:\n);scanf(%s,s-idnum);}}/*endinput*/C语言课程设计—身份证管理系统15fpos_tquery(CON*s){charkey[size]=;fpos_tp=0;intr=0;printf(pelaseinputnameorphonenumber:\n);scanf(%s,key);r=browse(key,&p,s);returnr?p:-1;}/*endquery*/voidclear(void){FILE*f=0;CONs;fpos_tp=query(&s);if(p0)return;f=fopen(fileDB,rb+);fsetpos(f,&p);memset(&s,0,sizeof(s));fwrite(&s,sizeof(s),1,f);fclose(f);printf(recordhasbeendeleted\n);}/*endclear*/C语言课程设计—身份证管理系统169.小结及收获:说真的,身份证管理系统挺难的。自己单独完成是不可能的,我参阅大量书籍,也上网汲取了别人优秀程序的成果,才艰难的基本完成。在设计过程中,我学会了开发一个软件的步骤,开发一个软件的思想过程,这是一笔宝贵的财富,相信会在以后的问题解决中给我带来帮助。在设计过程中认识到C语言的重要性及其功能的强大性。为了做好程序,又重新看了一下课本,重新学习了一遍。尤其对数组、文件操作、循环语句、函数的调用,有了更深的了解和认识。暗下决心以后通过课余时间完善C语言中的盲点以及难点,争取学好C语言,用好C语言。10.参考文献及求助路径:1.【C语言】机械工业出版社出版。2.【C语言指导用书】潭浩强著,清华大学出版社出版。3.百度文库。11.使用说明:下载TURBOC到个人电脑中,并运行,打开新文件。导入源代码的C文件,再运行即可。按照提示的界面,用户输入指令进行操作。由于个人能力有限,身份证管理系统软件功能不是太完备,请包涵,谢谢使用。