资源描述
唐山学院课程设计1 1 需求分析在对学生证信息管理系统进行需求分析的过程中,需要确定系统的主要功能,对软件开发的主要目的、软件的使用领域和有关该软件开发的软硬件环境进行详细的分析。下面从系统功能、运行环境、功能模块描述等几个方面进行需求分析。1.1 系统概述学生证管理系统是运行于Windows系统下的应用软件,主要用于对学生的学号、姓名、性别、系别等信息进行录入、查询、删除、修改、统计等操作。1.2 功能需求学生证管理系统软件为学校的教师和学生提供了一个对学生证信息管理和查看的平台,给用户提供了一个简单友好的用户接口,功能需求如下:1.2.1 录入录入学生信息:用户根据提示输入学生的学号、姓名、性别、系别等信息。1.2.2 查询查询学生信息:分为根据班级查询、根据姓名查询和根据学号查询三个具体需求,分别提示用户输入要查询学生信息的班级、姓名或学号,然后程序输出要查询的信息。1.2.3 删除删除学生信息:提示用户输入要进行删除操作的学号,如果在文件中有该学生的信息存在,则将该学号所对应的姓名、学号等信息加以删除,如果没有该学生信息,则给出相应的提示。1.2.4 修改修改学生信息:提示用户输入要进行修改操作的学号,如果在文件中有该学生的信息存在,则将提示用户输入该学号对应的学生学号、姓名、系别等需要修改的选项。该部分需求也需要提示用户选择是否继续进行修改操作。1.2.5 统计统计学生信息:提示用户选择要统计的项目,然后程序对该项目进行统计并输出相应信息。唐山学院课程设计2 2 设计思路2.1 设计要求我的课程设计题目是学生证管理程序,具体要求为设计一个学生证管理程序。该程序具有下列功能:(1)录入某位学生的学生证信息(学生证应该包含的信息请参看自己的学生证);(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改或删除该学生的学生证信息;(5)提供一些统计各类信息的功能。2.2 设计思路设计主函数显示一个主菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择所希望进行的操作项目。每一个操作项目即为一个子函数,通过用户选择的操作项目来调用相应的子函数,由对应的子函数来完成相应的操作功能。主函数功能图如图1 所示:由于链表结构较数组而言有诸多优点,所以本设计选择用结构体类型变量来储存每个学生的学生证信息,用链表结构来保存所有学生证的信息。主菜单1录入0退出2查询3修改4删除5统计图 1 主函数功能图唐山学院课程设计3 3 详细设计3.1 数据结构设计一个结构体,该结构体包括学生证的详细信息:学号,姓名,性别,出生日期,入学日期,籍贯,系别,专业,班级等信息,更重要的还包括一个指向下一个结构体变量的指针以进行链接形成链表,从而方便地进行插入、删除、查询、统计等操作。本程序设计的结构体如下:struct Date int month;int day;int year;struct stud int num;char name25;char sex10;struct Date birthday;struct Date starttime;char addr20;char department25;char major25;char clas25;struct stud*next;3.2 各函数的功能和实现3.2.1 主函数唐山学院课程设计4 主函数主要实现打印主目录并完成选择操作,从而调用相应的子函数完成相应的功能,而且主函数能够鉴别用户的错误操作并给出相应提示。具体代码见附录。运行主界面如图 2 所示:图 2 主函数选择界面3.2.2 录入函数该函数主要实现开辟并向链表中插入新结点,然后输入相应的数据。具体代码见附录。运行界面如图 3,图 4 所示:唐山学院课程设计5 图 3 录入函数界面图 4 录入函数界面3.2.3 查询函数该函数主要实现打印选择界面,并让用户选择相应的查询方式,然后由用户输入查询信息,程序实现对该。具体代码见附录。运行界面如图 5,图 6 所示:唐山学院课程设计6 图 5 查询函数选择界面图 6 查询函数运行界面3.2.4 修改函数该函数主要实现的功能是先让用户输入要修改的学生的学号,然后让用户选择修改的项目,程序根据用户的选择进行相应项目的修改。具体代码见附录。运行界面如图 7,图 8 所示:唐山学院课程设计7 图 7 修改函数输入界面图 8 修改函数选择界面3.2.5 删除函数该函数主要实现功能为先让用户输入要删除的学生的学号,然后让用户确认操作,确认后删除该结点,并使上一结点与下一结点链接以保证链表的完整性。具体代码见附录。唐山学院课程设计8 运行界面如图 9 所示:图 9 删除函数运行界面3.2.6 统计函数该函数主要实现让用户选择相应的统计项目,然后根据用户的选择进行相应的统计并打印统计结果。具体代码见附录。运行界面如图 10 所示:图 10 统计函数选择界面唐山学院课程设计9 3.2.7 打印函数该函数实现对某一确定的学生信息进行打印。具体代码见附录。唐山学院课程设计10 4 总结经过一周的课程设计实践,我完全自主完成了既定的任务,实现了所有要求的程序功能,这使我对 C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的实际操作才能更好地学习它。通过课程设计这一实践环节,加深了我对本学期所学知识的理解,也提高了我运用所学知识分析问题和解决实际问题的能力。在此过程中我也发现自己好多不足之处,首先是自己对 C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,有时对 C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。由于时间原因,这次课程设计最大的遗憾是没有能够实现用文件进行保存数据,但是在接下来的时间里我要自学掌握它以充实自己。还有,通过这一周的实践学习,我不仅认识和体验了按照分析、设计、调试和测试的软件开发过程,更从中深刻认识到了“世上无难事,只要肯攀登”的道理。虽然自己在此过程中曾熬夜编写程序,但是当最后自己用自己亲手编写的程序完成了既定的任务时,当看着程序一步步实现自己的想法时,心中成功的喜悦之情真是难于言表,我想这种成功的喜悦是无法被抄袭的,凭此不懈的精神奋斗,还有什么困难能拦得住自己前进的步伐呢?唐山学院课程设计11 5 参考文献1 谭浩强,张温基.C 语言程序设计教程.高等教育出版社.2006 年 12月第 3 版.2 谭浩强.C 程序设计(第三版).清华大学出版社.2005 年 7 月第 3 版.3 闫玉宝,徐守坤.数据结构.清华大学出版社.2008 年 3 月第 1 版.唐山学院课程设计12 附录源代码#include#include#include void input(struct stud*);void search(struct stud*);void modify(struct stud*);void del(struct stud*);void statistic(struct stud*);void Print(struct stud*student);struct Date int month;int day;int year;struct stud int num;char name25;char sex10;struct Date birthday;struct Date starttime;char addr20;char department25;char major25;char clas25;struct stud*next;static struct stud*Head=NULL;/主函数int main(void)int choice;do system(CLS);/清屏printf(nt=学生证管理系统=n);printf(t-n);printf(t*n);printf(t*1-录入2-查询*n);唐山学院课程设计13 printf(t*n);printf(t*n);printf(t*3-修改4-删除*n);printf(t*n);printf(t*n);printf(t*5-统计0-退出*n);printf(t*n);printf(t-n);printf(tt请您在上述功能中选择(0-5):);scanf(%d,&choice);while(choice5)/保证用户正确操作 printf(n 您的输入有误,请重新选择:);scanf(%d,&choice);switch(choice)/选择相应的功能 case 1:input(Head);break;/调用录入函数case 2:search(Head);break;/调用查询函数case 3:modify(Head);break;/调用修改函数case 4:del(Head);break;/调用删除函数case 5:statistic(Head);break;/调用统计函数case 0:exit(0);while(1);/无限循环,直到用户选择0 退出程序return 0;/录入函数void input(struct stud*P)struct stud*New=NULL,*This=NULL;New=(struct stud*)malloc(sizeof(struct stud);/开辟一个新结点的存储空间if(P=NULL)/将新结点链接到表尾 P=New;Head=P;else This=P;while(This-next!=NULL)This=This-next;This-next=New;唐山学院课程设计14 This=New;/输入新结点数据printf(nt=学生证管理系统=n);printf(t*录入新信息*n);printf(请用英文输入新添加学生的信息:);printf(n 学号:);scanf(%d,&(This-num);printf(n 姓名:);scanf(%s,This-name);printf(n 性别(male/female):);scanf(%s,This-sex);printf(n 出生年月(月/日/年如 8/6/1986):);scanf(%d/%d/%d,&This-birthday.day,&This-birthday.month,&This-birthday.year);printf(n 入学时间(月/日/年如 9/1/2007):);scanf(%d/%d/%d,&This-starttime.day,&This-starttime.month,&This-starttime.year);printf(n 籍贯:);scanf(%s,This-addr);printf(n 系别:);scanf(%s,This-department);printf(n 专业:);scanf(%s,This-major);printf(n 班级:);scanf(%s,This-clas);This-next=NULL;Print(This);/打印新结点信息printf(n 您已成功添加了一条新信息.);printf(n 按任意键返回主目录!);getchar();getchar();/查询函数void search(struct stud*Head)int n;struct stud*This;/打印选择界面printf(nnt=学生证管理系统=);printf(nt*查询*n);printf(t*n);printf(t*1-按学号查询*n);printf(t*n);printf(t*n);printf(t*2-按姓名查询*n);printf(t*n);printf(t*n);唐山学院课程设计15 printf(t*3-按班级查询*n);printf(t*n);printf(t*n);printf(tt 请您在上述功能中选择(1-3):);scanf(%d,&n);while(n3)/保证用户正确操作 printf(n 您的输入
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索