当前位置:文档之家› 身份证管理系统

身份证管理系统

课题程目设计报告身份证管理系统学号0908***姓名***年级专业09 电子信息工程无 同组人员无 学 号指导老师***完成日期2010年 6月24日安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal Universi1一、实践的目的和要求加深对《C 语言》课程所学知识的理解,进一步巩固 C 语言语法规则。

学会编制结构清 晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。

二、实践内容在熟练掌握 C 语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结 构等) ;运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等) ;程序结构(顺 序结构、判断选择结构、循环结构) ;大程序的功能分解方法(即函数的使用)等。

进一 步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。

三.问题描述:用 C 语言编写程序,实现添加,删除,查找等相关功能。

四.基本要求:(1)具备添加、删除功能; (2)具备多种查询功能:按年龄、出生日期等; (3)具备统计功能,能统计某年龄段的人数; (4)在此基础上,可进行文件操作。

五.分析:系统需求 一、 当前身份证信息:通过结构体 Person ID 来保存人的姓名,生日,民族,性别,地址, 身份证号等等相关信息,并且通过 input 函数来进行给当前身份初始信息输入. 二、 身份信息查询: 输入一个人名字, 在文件中查找此人, 若找到则输出此人的全部信息; 若找不到则输出查找失败的信息。

三、新信息插入 :通过 insert 实现添加功能,然后还可以按生日日期从小到大排序。

四、输出全部学生信息和全部学生成绩。

五、退出系统. 六、附加说明:系统将来完善的功能有:可以通过年龄来模糊查询,也可以通过姓名的 姓来先进行模糊查询,以便后面精确查找。

实际上未完成文件操作和根据年龄查询这两项功能, 所以这个程序的功能也相应大打 折扣,也是需要进一步改进的地方,尤其是文件操作,即对文件继续存储和读取.........2若选择 1 执行函数 input(Person ID[],int n)若选择 2 执行函数 display(Person ID[],int n)若选择 3 执行函数 sort_by_birth(Person ID[],int若选择 4 执行函数 delete_an_id(Person ID[],int n)菜 单 函 数若选择 5 执行函数 search_by_name(Person ID[],int n)若选择 6 执行函数 count(Person ID[],int n)若选择 7 执行函数 save(Person ID[],int n)若选择 8 执行函数 read(Person ID[],int n)若选择 9退出程序六.程序清单:#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> typedef struct3{ char name[20]; char sex[5]; char folk[5]; char birth[10]; char add[20]; char id[20]; }Person; Person ID[100]; int menu_select() { char c; do{system("cls"); printf ("\n\t\t %c%c%c%c%c%c%cIdentity System%c%c%c%c%c%c%c\n\n\n",3,3,3,3,3,3,3,3,3,3,3,3,3,3); printf ("\t %c 1.Input date \n\n",21); printf ("\t %c 2.Display date \n\n",21); printf ("\t %c 3.Sort the people by birth \n\n",21); printf ("\t %c 4.Insert an ID \n\n",21); printf ("\t %c 5.Delete an ID \n\n",21); printf ("\t %c 6.Search an ID by name \n\n",21); printf ("\t %c 7.Count the people \n\n",21); printf ("\t %c 8.Copy date from file \n\n",21); printf ("\t %c 9.Write date to file \n\n",21); printf ("\t %c 0.exit \n\n",21); printf(" (0-9):"); c=getchar(); }while(c<'0'||c>'9'); return(c-'0'); } int input(Person ID[],int n) {int i=0; char sign='w',x[10];system("cls"); printf("\tInput the date:\n"); while(sign!='n'&&sign!='N') { printf("\tName:"); scanf("%s",&ID[n+i].name); printf("\tSex:"); scanf("%s",&ID[n+i].sex); printf("\tFolk:"); scanf("%s",&ID[n+i].folk); Conctrol4printf("\tbirth:"); scanf(" %s",&ID[n+i].birth ); printf("\tAddress:"); scanf(" %s",&ID[n+i].add); printf("\tID:"); scanf(" %s",&ID[n+i].id); gets(x); printf(" Are you sure to continue?(Y/N)\n"); scanf(" %c",&sign); i++; } return(n+i); } void display(Person ID[],int n) { int i;system("cls"); printf("---------------------------------------------------------------------\n"); printf(" name sex folk birth add id \n"); printf("---------------------------------------------------------------------\n"); for(i=1;i<n+1;i++) { printf(" %-10s%-10s%-10s%-15s%-15s%-15s\n",ID[i-1].name,ID[i-1].sex,ID[i-1].folk,ID[i-1]. birth,ID[i-1].add,ID[i-1].id); if(i>1&&i%10==0) {printf("----------------------------------------------------------------\n"); system("pause"); printf("---------------------------------------------------------------\n"); } } system("pause"); } void sort_by_birth(Person ID[],int n) { int i,j; char t[20];system("cls"); for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(strcmp(ID[j].birth,ID[j+1].birth)>0) { strcpy(t,ID[j+1].name); strcpy(ID[j+1].name,ID[j].name);5strcpy(ID[j].name,t); strcpy(t,ID[j+1].sex); strcpy(ID[j+1].sex,ID[j].sex); strcpy(ID[j].sex,t); strcpy(t,ID[j+1].folk); strcpy(ID[j+1].folk,ID[j].folk); strcpy(ID[j].folk,t); strcpy(t,ID[j+1].birth); strcpy(ID[j+1].birth,ID[j].birth); strcpy(ID[j].birth,t); strcpy(t,ID[j+1].add); strcpy(ID[j+1].add,ID[j].add); strcpy(ID[j].add,t); strcpy(t,ID[j+1].id); strcpy(ID[j+1].id,ID[j].id); strcpy(ID[j].id,t); } } int insert_an_id(Person ID[],int n) { char x[100];system("cls"); printf("\n\tName:"); scanf("%s",&ID[n].name); printf("\tSex:"); scanf("%s",&ID[n].sex); printf("\tFolk:"); scanf("%s",&ID[n].folk); printf("\tbirth:"); scanf("%s",&ID[n].birth ); printf("\tAddress:"); scanf(" %s",&ID[n].add); printf("\tID:"); scanf(" %s",&ID[n].id); gets(x); n++; sort_by_birth(ID,n); printf("\n"); return(n); } int delete_an_id(Person ID[],int n) { char s[20];6int i=0,j;system("cls"); printf("Person name you want to delete :\n"); scanf("%s",s); while(strcmp(ID[i].name,s)!=0&&i<n) i++; if(i==n) { printf(" Sorry,there is no such a person \n"); return(n); } for(j=i;j<n-1;j++) { strcpy(ID[j].name,ID[j+1].name); strcpy(ID[j].sex,ID[j+1].sex); strcpy(ID[j].folk,ID[j+1].folk); strcpy(ID[j].birth,ID[j+1].birth); strcpy(ID[j].add,ID[j+1].add); strcpy(ID[j].id,ID[j+1].id); } printf(" Delete ID successfully \n"); return(n-1); } void search_by_name(Person ID[],int n) { char s[20]; int i=0;system("cls"); printf(" What is the name you want to find:"); gets(s); while(strcmp(ID[i].name,s)!=0&&i<n) i++; if(i==n) { printf("Sorry,there is no such a person \n"); system("pause"); return(n); } printf(" name sex folk birth add id \n"); printf(" %-10s%-10s%-10s%-15s%-15s%-15s\n",ID[i].name,ID[i].sex,ID[i].folk,ID[i].birth,ID [i].add,ID[i].id); system("pause"); } void count(Person ID[],int n) { char str1[5],str2[5],str3[5];7int i,j=0,p,q,r;system("cls"); printf("please enter the current year:\n"); gets(str1); p=atoi(str1); printf("please enter the age you want to count:\n"); gets(str3); r=atoi(str3); printf(" name sex folk birth add id \n"); for(i=0;i<n;i++) { strncpy(str2,ID[i].birth,4); q=atoi(str2); if((p-q)==r) printf(" %-10s%-10s%-10s%-15s%-15s%-15s\n",ID[i].name,ID[i].sex,ID[i].folk,ID[i].birth,ID [i].add,ID[i].id); j++; } printf("There are %d person about this age.\n",j); system("pause"); } int addfromText(Person ID[],int n) { int i=0,num; FILE *fp; char filename[20]; printf(" Enter the file name :\n"); scanf(" %s",filename); if((fp=fopen(filename,"rb"))==NULL) { printf("Can not open the file : \n"); system("pause"); return(n); } fscanf(fp,"%d",&num); while(i<num) { fscanf(fp,"%s%s%s%s%s%s",ID[n+i].name,ID[n+i].sex,ID[n+i].folk,ID[n+i].birth,ID[n+i].add ,ID[n+i].id); i++; } n+=num; fclose(fp);8printf("\n"); printf(" Read successfully \n"); system("pause"); return(n); } void writetotext(Person ID[],int n) { int i=0; FILE *fp; char filename[100]; printf(" Enter a filename: \n"); scanf(" %s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("Can not open the file : \n"); system("pause"); return; } fprintf(fp,"%d\n",n); while(i<n) { fprintf(fp,"%s%s%s%s%s%s",ID[i].name,ID[i].sex,ID[i].folk,ID[i].birth,ID[i].add,ID[i].id); i++; } fclose(fp); printf("Write date to file successfully\n"); } void main() { int n=0; for(;;) { switch(menu_select()) { case 1: printf(" Input the ID of the person: \n"); n=input(ID,n); break; case 2: display(ID,n); break; case 3:9printf("Date sort by birth:\n"); sort_by_birth(ID,n); display(ID,n); break; case 4: printf("Insert an ID: \n"); n=insert_an_id(ID,n); display(ID,n); break; case 5: printf("Delete an ID: \n"); n=delete_an_id(ID,n); break; case 6: printf("Searth an ID by name: \n"); search_by_name(ID,n); break; case 7: printf("count the age of people:\n"); count(ID,n); break; case 8: printf("Copy date from file:\n "); addfromText(ID,n); break; case 9: printf("write date to file:\n \n"); writetotext(ID,n); break; case 0: system("cls"); printf("\n\n\t\tThank you !"); system("pause");exit(0); } } }七:运行结果(1)目录界面10(2)输入界面(3)清单(4)按生日排序(5)添加功能(6)添加结果(7)查找功能八:小结与收获经过多次的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它。

相关主题