您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > c语言课程设计报告——学生证管理系统
《高级语言程序设计》课程设计报告题目:班级:软件工程学生学号:201131000815学生姓名:罗国辉提交时间:2012年4月8日成绩:优华南农业大学信息学院学生证管理系统一、需求分析1、系统概述:.随着时代的发展,教育事业的进步,如今的大学并不像过去那样,只有几百或上千人,一般的大学都有上万人之多,对于一个学生的信息如何去管理呢?有纸质版去保存明显是不实际的。这样不但占空间,更是容易丢失损坏,更重要是修改起来很麻烦。采用计算机来管理学生信息,如学生证信息,不但可避免以上所说的不足,尤其在信息查询方面有显著十分简单方便。我所介绍的是学生证管理系统。本系统具有添加、修改、删除、查询、统计、显示、查看以往操作等功能。2、系统运行环境:(1)硬件环境:CPU:奔腾3以上内存:64M以上显卡:集成显卡硬盘:10M(2)软件环境:操作系统:windows98/me/2000/XP/vistaDOS系统支持中文输出3、功能需求描述:(1)登录模块:若为首次使用本系统,则会允许注册一个管理员。若非首次使用本系统,则直接进入登陆界面。登陆时,管理员登陆需要用户名及密码,否则不用密码,直接进入。当然,管理员登陆与普通登陆后的功能是不一样的。普通登陆只有查询、统计、显示全部的功能。而管理员登陆则还有添加、删除、修改、查看以往操作的功能。管理员登陆输入密码时,显示的是*号,输错和返回的,这样可以防止密码被盗。(2)添加模块:只允许管理员操作。可以逐个录入学生信息,当地一个学生信息录入名保存后,系统会问你是否继续录入学生信息。在录入一个学生信息过程中,如果发现前一项录错了或不想录入了,可以按“0”(零)键即可返回主菜单。(3)删除模块:只允许管理员操作。本模块有3种删除方式,分别是按学号删除、按班级名删除及按入学年份删除。可按用户需要选择删除方式,非常方便!(4)修改模块:只允许管理员操作。只能通过学号找到该学生信息,然后进行修改。(5)查询模块:本模块分为4种方式查询,有学号查询、姓名查询、班级查询、按入学年份查询。特别的,在按姓名查询及按学号查询时,只知道学号中的连续几位数字,或只知道姓名中的一个或两个字也能查询出来,使查询得条件简单。(6)统计模块:统计学生总人数,男生人数,女生人数,总平均年龄,男生平均年龄,女生平均年龄,个入学年份人数。(7)显示模块:显示全校所有人的学生证信息。由于数据可能非常多,为了使所有数据都能显示出来。因此加了分页功能。(8)备份模块:仅管理员使用。将过去删除过的,添加过的,修改过的学生的原本信息保存起来,方便删除错误或修改错误时还原。二、总体设计1、总体开发思想:(1)主要的数据结构:系统对数据操作的主要数据结构是一个一维链表(如图),头指针head指向第一个节点。尾指针指向NULL。headNULL(2)数据存贮方式:用文本文档(txt格式)将数据储存。当然,在存储数据之前会对其进行加密,使之变成乱码。以起保密功能。(3)使用的语言:C语言。2、系统模块结构图:登陆模块添加模块修改模块删除模块统计模块显示模块查询模块查看操作模块按入学年份删除按班级名删除按学号删除按入学年份查询按班级名查询按姓名查询按学号查询清空所有被操作过的信息被修改过的信息被删除过的信息被添加过的信息3、模块设计:以下为各个功能模块的流程图添加模块输入所要添加的学生信息保存学生信息删除模块入学年份删除班级删除学号删除输入入学年份输入班级名输入学号修改模块输入修改学号重新输入信息修改成功统计模块输出统计所得的信息,如校总人数,男女人数,总平均年龄,男女各平均年龄,各个级的学生人数显示模块分页输出全校学生信息首次登录模块注册管理员输入密码检验密码非首次三、功能实现1、主要函数:函数名及参数含义;(1)链表模块主要函数:voidcjlb();//创建新链表structstudent*insert1(structstudent*head,structstudent*stud);//按入学年份插入节点structstudent*insert2(structstudent*head,structstudent*stud);//按班级名顺序插入节点voidrxnfpx();//按入学年份排序voidbjpx();//按班级排序voidtj();//添加voidsc();//删除voidxhsc();//按学号删除voidbjsc();//按班级删除voidrxnfsc();//按入学年份删除voidxg();//修改voidcx();//查询voidxhcx();//学号查询voidxmcx();//姓名查询voidbjcx();//班级查询voidrxnfcx();//入学年份查询查看以往操作模块查看被添加过的查看被删除过的查看被修改过的清空备份数据输出被删除过的学生信息输出被修改过的学生信息清空所有数据输出被添加过的学生信息voidtjj();//统计voidxs();//显示voidcx1();//非管理员查询voidxhcx1();//非管理员学号查询voidxmcx1();//非管理员姓名查询voidbjcx1();//非管理员班级查询voidrxnfcx1();//非管理员入学年份查询voidtjj1();//非管理员统计voidxs1();//非管理员显示voidcd1();//管理员菜单voidcd2();//学生菜单voidzc();//注册管理员voiddl();//管理员登陆voidcaozuo();//操作intmain();//主函数(2)密码加密部分:有加密功能,但加密并非用一个特定函数实现,而是在打印到文本之前对信息进行加密,读取文本信息时进行解密。2、使用界面(1)登陆画面:(2)密码输入界面:(3)各菜单界面:(4)添加学生信息:(5)修改学生信息:(6)查询学生信息:(7)删除界面:(8)统计界面:(9)显示所有信息界面:(10)查看以往操作界面:四、总结一开始做的时候,根本不知道学生证管理系统是怎样的,更不知道它有什么功能。经过跟同学谈论并上网查找一些资料之后,基本知道学生证管理系统的功能。于是就根据功能去编代码。由于我们对链表知识掌握的不是很透彻,所以呢,在编代码的时候遇到很多困难。有时候,很容易范逻辑错误,如本来head=NULL,但是很容易会这样if(head-rxnf==a)……这样就范逻辑错误了。而且这些错误是很难发现的,所以你会被卡很长时间。还有很多细节是要注意的。编完这个系统之后,我学会了很多注意细节的问题。经过长时间的努力之后,我终于把这个程序编完了,于是去提前答辩,结果过是过了,但是分数不是很理想,因为我只是实现了基本功能,整体来说,程序没有什么亮点。老师说可以添加一些新功能之后再次申请答辩。于是我就又把代码重新编了一次。我的新程序除了实现基本功能以外还添加了以下功能:(1)分页功能:我们都遇到过这样的情况,当我们要在编译运行框里打印很多行东西的时候,我们最后只能看到末尾的一小部分,而分页功能就很好的解决了这个问题。(2)备份:是对被添加、删除、修改的学生信息进行记录保存,以备删除或修改错误时寻回的需要。(3)在按学号查询、按姓名查询的时候,若只知道该学生的姓名中的一个或两个连续的字时,或只知道该学生学号的连续的几个数字,也可以进行查询,只是查询的结果可能不唯一。(4)在添加一个学生的信息时,如果我不行录入这位同学的信息了,随时都可以退出,但有很多同学的是不能做到的,要么非法关闭,要么先把这个学生的信息录完才能进行其他功能。(5)还有是一些代码的精简,在读取文件信息的时候,我只读取了一遍(定义一个头指针的全局变量便可实现),而之前我的代码是每个函数都要读取一遍。只读一遍就能少了很多不必要的操作。(6)在注册函数和登录函数中,输入密码是,显示的是*号,并且输错了可以返回。重新编一次代码,我不仅对所学知识巩固了许多,还懂得了,在编一个系统的时候.有什么想法应尽量去实现。作为一个软件设计师,不但要是软件满足客户的需求,还要想到一些客户想不到的,这样才能成为一个优秀的软件设计师。评分表题目:学号:姓名:评分项目分数1.实现情况(15):完成课程设计要求的情况2.系统分析(10):对系统的理解及分析的深入程度。3.系统设计(20):总体设计、具体设计、数据结构设计等。4.程序设计(30):C语言的运用能力、算法能力等。5.界面设计(15):操作简便、界面友好程度等。6.报告撰写(10):报告撰写的规范性、合理性等等。总成绩:评语:评阅老师:评阅时间:年月日
本文标题:c语言课程设计报告——学生证管理系统
链接地址:https://www.777doc.com/doc-5753975 .html