课 程 设 计 报 告 题 目 身份证管理系统 学 号 0908*** 姓 名 *** 年级专业 09电子信息工程 同组人员 无 学 号 无 指导老师 *** 完成日期 2010 年 6 月 24 日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal Universi 1 一、实践的目的和要求 加深对《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
#include #include #include typedef struct 3 { 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\\ %c%c%c%c%c%c%cIdentity System%c%c%c%c%c%c%c\\n\\n\\n\printf (\"\ %c 1.Input date \\n\\n\printf (\"\ %c 2.Display date \\n\\n\printf (\"\ %c 3.Sort the people by birth \\n\\n\printf (\"\ %c 4.Insert an ID \\n\\n\printf (\"\ %c 5.Delete an ID \\n\\n\printf (\"\ %c 6.Search an ID by name \\n\\n\printf (\"\ %c 7.Count the people \\n\\n\printf (\"\ %c 8.Copy date from file \\n\\n\printf (\"\ %c 9.Write date to file \\n\\n\printf (\"\ %c 0.exit \\n\\n\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(\"\Input the date:\\n\"); while(sign!='n'&&sign!='N') { printf(\"\Name:\"); scanf(\"%s\printf(\"\Sex:\"); scanf(\"%s\printf(\"\Folk:\"); scanf(\"%s\Conctrol 4 printf(\"\birth:\"); scanf(\" %s\printf(\"\Address:\"); scanf(\" %s\printf(\"\ID:\"); scanf(\" %s\gets(x); printf(\" Are you sure to continue?(Y/N)\\n\"); scanf(\" %c\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;i1&&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;i0) { strcpy(t,ID[j+1].name); strcpy(ID[j+1].name,ID[j].name); 5 strcpy(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\Name:\"); scanf(\"%s\printf(\"\Sex:\"); scanf(\"%s\printf(\"\Folk:\"); scanf(\"%s\printf(\"\birth:\"); scanf(\"%s\printf(\"\Address:\"); scanf(\" %s\printf(\"\ID:\"); scanf(\" %s\gets(x); n++; sort_by_birth(ID,n); printf(\"\\n\"); return(n); } int delete_an_id(Person ID[],int n) { char s[20]; 6 int i=0,j;system(\"cls\"); printf(\"Person name you want to delete :\\n\"); scanf(\"%s\while(strcmp(ID[i].name,s)!=0&&i