c语言身份证信息管理系统Word格式.doc
《c语言身份证信息管理系统Word格式.doc》由会员分享,可在线阅读,更多相关《c语言身份证信息管理系统Word格式.doc(14页珍藏版)》请在冰豆网上搜索。
课程报告任务书
题目
身份证信息管理系统
主要
内容
用C语言开发一个简单的身份证管理系统要求实现以下功能:
1.管理员系统:
(1)添加个人信息;
(2)修改个人信息(按身份证号);
(3)排序(分别按区号升序、区号降序以及姓名升序);
(4)查询个人信息(按身份证号);
(5)删除个人信息(并不是实际意义上的删除);
(6)输出所有个人信息;
(7)退出子系统;
(8)结束。
2.个人用户系统:
(1)查询个人信息(按身份证号);
(2)退出子系统;
(3)结束。
说明:
个人信息包含身份证号(十八位数且不能重复)、姓名(可以重复)、性别、地址(具体到某一组),民族,出生年月日,办理日期以及截止日期(18岁以下有效期为5年,18岁以上10年),区号由身份证前7位组成。
当一个人死了时将删除他的记录并且自动添加到死亡名单death.dat并且办理日期与截止日期都改为死亡时间。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
20分
规范程度
5分
程序测试
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
身份证管理系统——管理居民信息,便于查询,修改。
添加-----把居民信息添加到链表中在存到文件IDcard中。
查看所有个人信息——把文件中的所有信息输出。
修改------用身份证号查找该信息,如果找到则进行修改功能,否则跳出该功能。
排序------新建一个链表辅助排序,把排序后的链表输出,并且存到文件IDcard中,下次打开系统时输出排序后的序列。
查找——用身份证号查找,如果找到则输出该信息,否则跳出该功能。
删除——用身份证号查找该信息,如果找到则存入death文件中,再删除该结点,最后把删除后的链表存入文件,否则跳出该功能。
2概要设计
可适当参考以下提示:
⑴数据结构
typedefstruct
{
intyear;
intmonth;
intday;
}data;
typedefstructIDcard
charID[19];
charname[10];
charsex;
charaddress[50];
charnation[9];
databirth;
dataorigin;
dataend;
structIDcard*next;
}SFZ,*Link;
⑵模块划分
⑶程序总体框
主函数:
定义:
添加:
删除:
查找:
加载:
界面:
修改:
输出:
存储:
排序:
3详细设计
主函数包含头文件:
define.h、display.h、output.h、save.h、Add.h、load.h、edit.h、find.h、del.h、sort.h;
添加函数voidadd(Linkhead),调用输入函数voidInputRecord(Linkhead)进行输入;
删除函数voiddel(Linkhead),调用查找ID函数LinkFindID(Linkhead,chars[])进行查找,删除;
主界面调用函数voidexplain(void)输出;
管理员系统界面调用函数voidnamagedisplay(void)输出;
个人系统界面调用函数voidpersonaldisplay(void)输出;
输入密码界面调用函数intpassword(void);
修改函数调用查找ID函数LinkFindID(Linkhead,chars[])进行查找,修改;
查找函数调用查找ID函数LinkFindID(Linkhead,chars[])进行查找,再调用单个输出函数voidPrintRecord(Linktemp)输出;
加载函数voidload(Linkhead);
输出所有信息函数voidoutput(Linkhead)调用单个输出函数voidPrintRecord(Linktemp)输出;
存储函数voidsave(Linkhead);
排序函数调用区号升序,区号降序,姓名升序函数进行排序voidZone_descriptionAsc(Linkhead)、voidZone_descriptionDes(Linkhead)、voidNameAsc(Linkhead)。
源代码:
4调试分析
开始时存储的文件中多了一排烫,调试发现读入时多循环了一次,读入了一串垃圾值,修改后正常。
之后一系列的小错误都是通过调试解决。
关于查找函数的改进:
开始查找信息返回值为结点数,之后改为返回地址。
关于界面的改进,一开始选择系统执行功能后返回到选择系统,之后可以继续执行功能,手动跳出子系统。
5测试结果
输出:
查询:
在删除中已经使用,再调用输出函数输出,即为查询;
因为需要的数据太多,图片较多,请自行解决。
6课程心得总结
本学期,当大作业刚布置下来的时候感觉很难,因为感觉学的东西太少,根本完不成这个任务,因此前几周都没开始写,一直等把c语言都上完了才开始。
刚开始时不会建工程,便用Cb开始写,后来经过进一步的研究才学会了用Vc写这个大作业。
在写大作业的过程中也并不是那么顺利,存在着太多的bug,然后就摸索着调试,直到写完大作业才明白,原来它的目的是让我们提高自己。
在整个过程中对我提升最大的就是链表的使用和调试了。
开始学单链表时很是疑惑,而现在已经能够熟练的使用链表,在大作业众多的错误中,让我从一个不怎么会调试的菜鸟,变成一个能比较熟练使用调试的大渣渣。
其实学c,想要掌握它的精髓,就必须自己亲自去实现某一个功能,然后逐步调试,就能很快地掌握它(实践是检验真理的唯一标准)。