c语言课程设计报告--学生证系统
- 格式:doc
- 大小:238.50 KB
- 文档页数:29
C语言课程设计院系:姓名:学号:班号:指导教师:日期:2010年9月目录一、实验目的 (3)二、实验内容 (3)三、需求分析 (3)四、概要设计 (4)1.方案设计 (4)2.数据结构说明 (4)3.模块功能说明 (4)4.程序可以满足功能 (5)五、详细设计 (5)六、调试情况,设计技巧及体会 (12)七、源程序清单 (16)实验题目学生证管理系统一、实验目的1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。
2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
3.熟练运用if语句和switch语句以及嵌套应用。
涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。
4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
5. 掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
6.掌握结构体类型变量、数组的定义和使用。
7.了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法。
灵活使用链表来储存学生信息。
8.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串二、实验内容学生证的管理程序。
该程序应该具有下列功能:(1)录入某位学生的学生证信息;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该学生的学生证信息;(5)给定某位学生的学号,删除该学生的学生证信息;(6)提供一些统计各类信息的功能。
三、需求分析系统功能:1.显示全部的学生证信息;2.给定某位学生的学号或姓名,查询或修改该学生的学生证信息;3. 给定某位学生的学号或姓名,删除该学生的学生证信息;4. 增加学生信息;5. 提供一些统计各类信息的功能。
例如统计学生数,班级数,每个班级的学生数;6. 能够对学号和班级进行升序和降序排序;7. 用文件的形式将录入的数据进行存储,并从其中读取数据。
学生证管理系统1.题目与要求该系统应该具有下列功能:1)录入某位学生的学生证信息。
2)给定学号,显示某位学生的学生证信息。
3)给定某个班级的班号,显示该班所有学生的学生证信息。
4)给定某位学生的学号,修改该学生的学生证信息。
5)给定某位学生的学号,删除该学生的学生证信息。
6)提供一些统计各类信息的功能。
【输入要求】应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
【输出要求】1)应用程序运行后,要在屏幕上显示一个菜单。
2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
2.功能实现设计2.1总体设计:根据题目要求,由于要设计学生证的管理系统,所以学生证信息中应该包含学号、姓名、性别、班号等信息。
除此之外,还要做到先录入,再输出,即如果使用者还没有录入任何学生证信息就不能做任何输出。
由于学生信息要不断更改,所以还要设定修改、增加、删除、查找功能。
另外,学生数量多而繁,故应设置不同类别的统计功能,供使用者方便使用。
综上所述,可将该程序分为:主函数、菜单显示模块、菜单提示模块、学生证信息生成模块、添加学生证信息模块、学生证信息显示模块、学生证信息修改模块、学生证信息删除模块、计算所有学生人数模块、计算各班人数模块。
2.2详细设计:1)主函数主函数一般设计比较简洁,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图如下图所示:【程序】2)各功能模块设计1.结构体2.输入模块从主函数送进来的n=1,进入struct create,在struct create中通过链表开辟一个长度为student结构体的连续动态空间。
接着在此函数中通过*p1这个指针调用void tips_create(struct student *p)函数来提示用户录入学生证各项信息。
录入完毕后*p1再从void tips_create(struct student *p)函数中跳回struct create中,将其值赋给*p2,这样保存*p2到开辟的内存单元中即可。
题目要求学生证管理信息系统假设某校学生学生证基本信息主要包括:学号、姓名、所在系、班级等,本系统应能对这些基本信息进行管理,并要求具有以下功能:(1) 通过键盘输入某位学生的学生证信息。
学生证包含的信息请参看自己的学生证;(2) 给定学号,显示某位学生的学生证信息;(3) 给定某个班级的班号,显示该班所有学生的学生证信息;(4) 给定某位学生的学号,修改该学生的学生证信息;进制转换算法设计本系统要求具有以下功能:1、具有将十进制转换为二进制功能2、具有将十进制转换为十六进制功能3、具有将二进制转换为十进制功能4、具有将十六进制转换为十进制功能目录1.意义及功能 (3)1.1系统意义 (3)1.1.1学生证管理信息系统意义 (3)1.1.2进制转换算法设计意义 (3)1.2系统功能 (3)1.2.1学生证管理信息系统功能 (3)1.2.2进制转换算法设计功能 (3)2功能结构图 (4)2.1学生证管理信息系统 (4)2.2进制转换算法设计 (4)3.流程图 (4)3.1学生证管理信息系统流程图 (4)3.2学生证管理信息系统各部分功能流程图 (4)4调试运行 (7)4.1学生证管理信息系统 (7)4.2进制转换算法设计 (9)5 C语言源程序代码 (10)5.1学生证管理信息系统 (10)5.2进制转换算法设计 (21)6心得体会 (26)7实习日志 (27)8参考文献 (26)1.意义及功能1.1系统意义1.1.1 学生证管理信息系统意义使用VC++编译学生证管理系统,使繁琐的普通人工管理转变成简单易行的C程序系统,用户只需在该界面上按要求输入学生证信息,就可随意删除和修改信息,还可以按学号、姓名或班号查询到相关学生的信息,使学生证的管理不再复杂。
1.1.2 进制转换系统算法设计意义本进制转换系统可以快速便捷地实现十进制和二进制,十进制和十六进制之间的互相转换,用户不需要自己在纸面上忙碌而复杂地算了,只需简单输入需要转换的进制数,系统就能很快算出相应的其他进制数。
C语言学生管理系统课程设计报告一、引言学生管理系统是一种用来管理学生信息的软件系统。
C语言学生管理系统课程设计旨在帮助学生掌握C语言的基本语法和编程能力,同时熟悉软件开发过程中的分析、设计和实现等环节。
本报告将详细介绍C语言学生管理系统的设计和实现过程。
二、需求分析为了明确系统的功能需求,在进行系统设计之前,我们需要进行需求分析。
对于一个学生管理系统,常见的功能包括学生信息录入、查找学生信息、修改学生信息和删除学生信息等。
2.1 学生信息录入学生信息录入是系统的基本功能之一。
管理员可以通过系统按照一定的格式输入学生的基本信息,包括学号、姓名、性别、年龄、班级等。
2.2 查找学生信息系统应提供根据学号或姓名快速查找学生信息的功能。
用户可以输入学号或姓名进行查询,并显示该学生的详细信息。
2.3 修改学生信息管理员可以通过系统修改学生的基本信息。
用户可以选择指定要修改的学生的学号,并对学生的姓名、班级、年龄等信息进行修改。
2.4 删除学生信息管理员可以通过系统删除指定学生的信息。
用户可以输入学号或姓名进行查询,并选择删除该学生的信息。
三、系统设计在需求分析的基础上,进行系统设计是为了明确系统的整体架构和各个模块之间的关系。
本章将对C语言学生管理系统的设计进行详细介绍。
3.1 系统架构C语言学生管理系统采用单层架构,将所有功能模块整合在一个程序中。
系统采用面向过程的设计思路,通过函数的调用和参数传递实现不同模块之间的交互。
3.2 数据结构设计系统的核心数据结构是学生信息结构体。
学生信息结构体包括学号、姓名、性别、年龄、班级等字段。
为了方便管理学生的信息,可以使用链表来存储学生信息。
链表的每个节点代表一个学生,通过指针连接起来形成一个链表。
3.3 模块设计系统的功能可以划分为若干个模块,包括学生信息录入模块、查找学生信息模块、修改学生信息模块和删除学生信息模块。
3.3.1 学生信息录入模块学生信息录入模块通过从键盘读取用户输入的信息,并将输入的信息保存到链表中。
学生证管理程序报告学号:姓名:完成日期:2012年5 月一.题目内容的提出与描述学生证的有效管理是学校的重要工作,这项工作的工作重点是需要学校建立一个简明高效,便于操作和处理信息的学生证管理系统。
这样,学校就可以从全局上掌控、修改、统计学生信息,为学生管理工作提供极大的便利,本程序的目的旨在于管理大量学生的学生证信息,大大提高学校和教师的工作效率。
本程序的具体功能包括:1)通过键盘输入某位学生的学生证信息。
2) 给定学号,显示某位学生的学生证信息。
3) 给定某个班级的班号,显示该班所有学生的学生证信息。
4) 给定某位学生的学号,修改该学生的学生证信息。
5) 给定某位学生的学号,删除该学生的学生证信息。
6) 提供一些统计各类信息的功能。
二.软件的需求分析描述本软件要实现对学生证信息的有序程序化管理,操作人员可以输入学生的学生证信息并存储,修改学生证信息,删除学生证信息,并通过不同方式查找到学生,从而简化学生证的管理工作,方便进行相关操作。
本软件要达到的性能,存储至少100位同学的学生证信息,并可以查找指定学生的学生证信息,修改,删除指定学生的学生证信息,可输出已存储的全部学生的相关信息。
三. 开发工具的介绍—C语言的优点1)简洁紧凑、灵活方便。
2)运算符丰富。
3)数据类型丰富。
4)C是结构式语言。
5)语法限制不太严格,程序设计自由度大。
6)允许直接访问物理地址,对硬件进行操作。
7)生成目标代码质量高,程序执行效率高。
8)适用范围大,可移植性好。
四.软件的总体设计和详细设计1.软件的总体设计部分画出结构图。
2.软件的详细设计部分画出流程图,并写出个函数之间参数的定义和传递方式、输入数据类型、格式和内容限制。
①Main函数函数从主函数开始运行,首先进行选择要操作的函数,引导用户执行操作。
而后通过全局变量在进行具体操作②Setup函数用户选择执行Setup()函数,首先引导用户确定录入人数,之后通过循环语句判断,一次录入每个学生的学生卡信息,包括姓名,性别,学院,以及学号。
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计报告学院:电气与信息工程学院专业:电子信息产业题目:学生证管理系统班号:T-132316姓名:樊帅昌学号:20130231611指导教师:吴年志2014年7月2日目录C语言程序设计报告 (1)一.课程设计目的 (3)二设计要求 (3)三具体模块分析 (5)1头文件及定义结构体 (5)头文件: (5)结构体: (5)2主函数 (6)3分块设计 (6)首页面 (6)系统菜单 (7)用户选择 (7)添加模块 (8)查询模块 (12)修改模块 (15)删除模块 (19)四.测试分析 (21)五.课程设计总结 (26)六.程序源代码 (27)一.课程设计目的1.巩固和加深学生对《C语言程序设计》课程基本知识的理解和掌握。
2.掌握C语言编程和程序调试的基本技能。
3.掌握书写程序设计说明文档的能力。
4.提高学生分析问题和解决问题的能力,培养严谨的工作作风和良好的程序设计习惯,为后续课程的学习打下良好的基础。
二设计要求题目:学生证管理程序题目描述:请设计一个学生证管理的程序,以方便辅导员对学生证的管理,该程序应该具有以下功能:(1)能从键盘输入某位学生的学生证信息(学生证应该包含的信息可以参考自己的学生证)。
(2)给定学号,显示该学生的学生证信息。
(3)给定班号,显示该班所有学生的学生证信息。
(4)给定学号,修改该学生的学生证信息。
(5)给定学号,删除该学生的学生证信息。
题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序.(2)学生证应该包含的信息参考自己的学生证.(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目.输入要求:(1)应用程序运行后在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息.程序根据用户输入的信息完成相应的处理,实现要求的功能。
C语言程序设计报告书学生证管理程序学号:09021106姓名:SYF2010年 5月一、题目内容的提出与描述.大学学生人数众多,学生信息量巨大。
手工管理十分艰难,且极易出错和丢失信息,并会占用大量的纸张和空间资源。
本款软件就是基于对学生证管理的需求,为学校管理方量身定做,操作容易,快速便捷,并且节约能源。
它不仅符合当今信息化社会的需求,还顺应了当代低碳环保的理念此软件可实现学生信息的录入、输出、查询、修改、统计和删除的功能,查询和统计的功能是本款软件的特色,比较方便。
另外,因为本人笔记本为windows7系统,调试时无法在中文条件下运行,所以本款软件有中英文两个版本。
(英文版为student-english)二、软件的需求分析描述1。
软件应具有的功能:(1).输入学生信息。
(2)。
输出全部学生信息。
(3)。
查询学生信息.输入单个学号以查询一个学生;输入专业以查询一专业学生;输入学院以查询一院学生。
(4).修改学生信息。
输入学生学号以修改信息。
(5)。
统计学生信息。
按性别统计男、女生人数及比例;按户籍统计本地生和外地生人数及比例;(6)。
删除学生信息。
输入学生学号以删除信息.补充:教师有特定验证码(验证码为1),输入正确则可实行以上操作。
2.题目要求:(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2)学生信息应该包含:学号、姓名、年龄、专业、所属学院、户籍所在地。
(3) 为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
三、开发工具的介绍本软件采用色开发工具为C语言。
C语言Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,且具有强大的功能.许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的.用C 语言加上一些汇编语言子程序,就更能显示 C 语言的优势了,像PC—DOS 、WORDSTAR等就是用这种方法编写的。
C语言课程设计报告学院:计算机学院专业:网络工程题目: 学生证管理系统班序号:19313126学号:*************:***2013年12月31日报告目录一、实习内容要求—————————————————————————3二、需求分析—————————————————————————3三、总体设计—————————————————————————3四、设计简介—————————————————————————44.0 头文件——————————————————————————44.1 主函数—————————————————————————54.2 子函数菜单—————————————————————————54.3 子函数添加—————————————————————————54.4 子函数修改—————————————————————————104.5 子函数浏览—————————————————————————134.6 子函数查询—————————————————————————144.7 子函数统计—————————————————————————184.8 子函数删除—————————————————————————23五、上机操作—————————————————————————255.1 系统说明—————————————————————————255.2 系统测试—————————————————————————25六、总结__________________________________________________31一、实习内容要求1、用C语言编写一个学生证管理系统,该系统具有以下功能:(1)录入某位学生的学生证信息;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该学生的学生证信息;(5)给定某位学生的学号,删除该学生的学生证信息;(6)提供一些统计各类信息的功能;(7)提供浏览所有学生的学生证信息的功能。
C语言课程设计实验报告课程设计题目:学生证管理系统姓名:学号:班级:专业:指导教师:2014年 1 月 2 日学生证管理系统课程设计报告1。
需求分析。
根据学生证管理的需要,建一个“学生证管理系统”,以方便对学生证信息的各项管理操作。
要求完成:1。
能对学生证信息进行录入和修改2。
能按照学号和班级号显示学生证信息和更改、删除信息。
2。
总体设计。
根据以上分析,本系统主要包括:从键盘输入学生证信息、从指定的文件中读入学生证信息、按照学号和班号查询学生证信息、删除和修改学生证信息。
(1)主函数main():定义学生结构体数组,输出操作对话框,调用录入、查询、删除、输出等函数对学生证信息进行处理。
(2)录入函数enter():从键盘输入学生证信息。
(3)录入函数load():从文件输入学生证信息.(4)查询函数search():按学号查找记录信息。
(5)查询函数display():按班级查找记录信息。
(6)删除函数del():删除指定学号的学生记录。
(7)修改函数modify():按照指定学号修改记录。
程序功能机构图如下:3.详细设计。
本功能一共有16个函数,其中一个主函数,15个功能模块,每个功能模块都是由于主函数或其他功能模块调用,分别说明如下:图1.2 主程序流程图(2)键盘输入函数.键盘输入函数主要完成学生信息从屏幕输入数据,并将数据保存到文本文件中,以备后用。
流程图:Y(3)文件输入函数。
文件输入函数主要完成学生信息从文件中读入数据.Y(4)学号查询函数。
学号查询函数是完成由用户输入需要查询的学号,在现有学生信息中查询是否有此学生信息存在,查到输出学生全部信息,没查到则输出“此学生部存在”信息。
流程图如下:图1。
5 学号查询流程图(5)班级查询函数.班级查询函数是完成由用户输入需要查询的班级,在现有学生信息中查询此班级的全部学生信息,查到输出全部信息,没差到则输出“此班级学生不存在"信息。
学生证管理系统1.题目与要求该系统应该具有下列功能:1)录入某位学生的学生证信息。
2)给定学号,显示某位学生的学生证信息。
3)给定某个班级的班号,显示该班所有学生的学生证信息。
4)给定某位学生的学号,修改该学生的学生证信息。
5)给定某位学生的学号,删除该学生的学生证信息。
6)提供一些统计各类信息的功能。
【输入要求】应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
【输出要求】1)应用程序运行后,要在屏幕上显示一个菜单。
2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
2.功能实现设计2.1总体设计:根据题目要求,由于要设计学生证的管理系统,所以学生证信息中应该包含学号、姓名、性别、班号等信息。
除此之外,还要做到先录入,再输出,即如果使用者还没有录入任何学生证信息就不能做任何输出。
由于学生信息要不断更改,所以还要设定修改、增加、删除、查找功能。
另外,学生数量多而繁,故应设置不同类别的统计功能,供使用者方便使用。
综上所述,可将该程序分为:主函数、菜单显示模块、菜单提示模块、学生证信息生成模块、添加学生证信息模块、学生证信息显示模块、学生证信息修改模块、学生证信息删除模块、计算所有学生人数模块、计算各班人数模块。
2.2详细设计:1)主函数主函数一般设计比较简洁,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图如下图所示:开始菜单显示函数显示一系列功能进入main函数体,选择nY根据n的值调用个功能模块函数结束【程序】2)各功能模块设计1.结构体2.输入模块从主函数送进来的n=1,进入struct create,在struct create中通过链表开辟一个长度为student结构体的连续动态空间。
接着在此函数中通过*p1这个指针调用void tips_create(struct student *p)函数来提示用户录入学生证各项信息。
《高级语言程序设计》课程设计题目:学生证管理程序班级:学生学号:学生姓名:指导老师:提交时间:华南农业大学信息(软件)学院学生证管理程序1系统分析1.1问题描述:设计一个学生证的管理程序。
实现录入、修改、删除学生的学生证信息,并能根据输入的学生的学号,显示该学生的学生证信息或根据输入的班级的名称,显示该班所有学生的学生证信息,以及实现一些统计各类信息的功能。
1.2系统功能分析:学生证管理程序是用来进行学生证管理的应用软件,不属于学生可使用的系统,个人认为进入该系统不需要进行相应的身份登录。
所以进入系统者应当可以使用所有功能;使用者可行使基本功能有:录入某位学生的学生证信息;根据给定学生的学号,修改、删除或显示该学生的学生证信息;根据输入的班级的编号,显示该班所有学生的学生证信息和一些统计功能。
另外,为了方便管理员操作,减少管理员重复工作的可能,另外加入额外功能:批量录入学生的学生证信息和班级删除。
除此以外,亦另外添加操作台指令,方便管理员进行功能切换。
1.3 开发平台及工具介绍:根据所学知识及所要用到的相关操作,采用C语言进行开发。
开发平台:CodeBlocks+ MinGW + wxWidgets2系统设计2.1 系统总体结构设计在对学生证管理程序进行系统功能分析之后,我对整个系统进行总体设计。
首先,确定大致的开发和设计的思路,并在此基础上,用图表将系统总体的设计架构勾画出来,制定模块结构图,通过模块功能分析对每一个模块进行总体设计。
值得一提,总体的设计架构中,shell和kernel的设计应注意彼此的联系,这一方面设计的好坏对后面的设计有很大的影响。
然后,根据总体设计的需求,确定要首先那些函数。
学生证管理程序可视作一个简易身份证管理系统,开发设计的方向是方便管理员的操作,节省管理员的操作时间。
对于这个问题,可采用批量操作和指令操作的思路。
可以将所有的学生证信息存储在一个文件(txt格式)中,在对大量学生证数据的处理用到链表和文件处理等基本技术,并用两个函数实现文件读取和写入。
2.2 系统各个功能模块详细设计及功能模块之间关系设计(包括功能结构图等)(1)添加模块(录入模块):可以逐个录入学生信息,也可以设定录入人数,批量录入学生信息。
在输入学生信息时,可输入return返回,可随意输入指令进行功能切换。
其功能图如下图.(2)搜索模块:根据给出信息,可以是学号,名字或班级,搜索符合条件的某位学生或某些学生,并返回地址。
(3)修改模块:通过地址找到该学生信息,然后进行修改。
修改模块修改信息(4)统计模块,统计学生总男女生人数;某班男生人数,女生人数;统计指定日子出生的学生;统计与指定名字相同的学生;(5)显示模块,显示学生证信息。
分为针对单人的详细显示和针对集体的行显示两种模式。
(6)删除模块,本模块有2种删除方式,分别是按学号删除和按班级名删除。
(7)指令模块,本模块负责辨认输入的为指令还是操作序号,并根据输入选择操作。
2.3 数据结构的设计(文件等)(1)学生证信息结构描述学生证信息,并作为一整条记录存放在文件中。
typedef struct stud{char name[20];char sex[8];char snumber[14];char time[12];char id[20];char college[24];char major[20];char classes[40];struct stud *next;}LNode,*LinkList;LinkList p,q,m,n,c;(2)链表存储学生证信息,并作为一整条记录在程序中进行操作。
p=(LinkList)malloc(sizeof(LNode));//头指针q=p;(3)文件在程序开始前和结束后存储学生证信息void rewirte()//程序结束后将一切写进文件void load()//文件内容装载至链表2.4 界面设计遵循简洁美观、方便使用的原则。
(1)首页:用printf语句构造简单的界面,注重界面的简洁性。
(2)、录入界面(3)、修改界面:(4)删除界面(5)学号查询(6)班级查询(7)其他(8)指令(9)统计班级男女人数(10)统计同名(11)统计同年同日出生流程图如下:3系统实现基于系统需求分析与系统总体设计的结果,本系统采用开发平台:CodeBlocks+ MinGW + wxWidgets实现各模块的功能,下面将展现某些模块的录入操作的详细设计和实现过程。
录入模块:(1)(2)代码段片段相关函数char console()//控制台录入:void entry()//录入{system("cls");char ,op,i=1;LinkList std;std=(LinkList)malloc(sizeof(LNode));std->next=NULL;printf("请分别输入学生的信息\n");while(i<9){switch(i){case 1:printf("姓名(如:王小明):");break;case 2:printf("性别(如:男):");break;case 3:printf("学号(如:):");break;case 4:printf("入学时间(如:2013-09-01):");break;case 5:printf("身份证号码(如:):");break;case 6:printf("学院(如:):");break;case 7:printf("专业(如:):");break;case 8:printf("班级(如:):");break;}op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;free(std);return;}switch(i){case 1:strcpy(std->name,cl);break;case 2:strcpy(std->sex,cl);break;case 3:strcpy(std->snumber,cl);break;case 4:strcpy(std->time,cl);break;case 5:strcpy(std->id,cl);break;case 6:strcpy(std->college,cl);break;case 7:strcpy(std->major,cl);break;case 8:strcpy(std->classes,cl);break;}i++;}q->next=std;q=q->next;q->next=NULL;printf("录入成功\n");printf("输入任意键以退出\n");a=getchar();}4系统测试模块测试:测试各模块的测试显示模块:(1)输出单个学生学生证信息。
1、输入学号2、预期结果:3、输出结果:4、结论:运行正常。
(2)显示班级学生证信息1、输入2013软件工程1班2、预期结果:3、4、结论:运行正常。
系统测试:系统功能的完整测试(1)系统测试1:1、输入流程:批量录入信息batchentry 输入3后输入信息信息如下:根据学号输出信息,根据班级输出信息,2、预测结果:3、实际结果:4、结论:运行正常。
5系统运行界面1、运行界面1:统计同年同日生的学生2、运行界面2:指令实现6总结怎么说呢,这次设计的并不难,要是只完成基本功能的话其实不用什么力气。
但在这次设计中呢,却陆陆续续地遇到小问题。
这些问题都得归因于自己整体设计时不够用心,未曾仔细地思考,又盲目地想做点新意,结果有一阵子一直停滞不前。
结果,最后还是静下心来梳理了一遍思路,做好前期准备,情况才好起来。
然后,感觉做这种课题真的非常好,题目分析、整体设计、模块分析......一整套做下来实在令人兴奋。
Debug过程既是无聊的也是有趣的。
能在程序设计中找到快乐实在不错。
这次设计已经完结了,但是我的路还有很长,离成为一个合格的程序员实在还有很远,不过,还有几年时间可以抢救一下,我觉得我还有救的7参考文献《C语言程序设计(第二版)》附录:全代码:#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#define TRUE 1#define OK 1#define ERROR 0#define INFEASIBLE -1#define STACK_INIT_SIZE 100char need=' ',ne='\n';int k=0,sw=0;char cl[80];typedef struct stud{char name[20];char sex[8];char snumber[14];char time[12];char id[20];char college[24];char major[20];char classes[40];struct stud *next;}LNode,*LinkList;LinkList p,q,m,n,c;char console(){int i=0;k=0;gets(cl);if(cl[0]<='9'&&cl[0]>='1'&&!cl[1]) return cl[0];elsewhile(cl[i]){k=k+cl[i];i++;}return '0';}void shell(){printf(" 学生证管理系统\n");printf("==============================\n");printf("1、学生证信息录入\n");printf("2、学生证信息修改\n");printf("3、学生证信息删除\n");printf("4、显示学生的学生证信息\n");printf("5、显示班级所有学生学生证信息\n");printf("6、其他\n");printf("7、说明书\n");printf("8、结束\n");printf("==============================\n");printf("请输入操作序号或正确指令\n");}void shell_II(){/*system("cls");*/printf("请选择你想修改的信息\n");printf("1、姓名\n");printf("2、性别\n");printf("3、学号\n");printf("4、入学时间\n");printf("5、身份证号码\n");printf("6、学院\n");printf("7、专业\n");printf("8、班级\n");printf("9、返回\n");}void shell_III()printf(" 请选择你想实现的统计功能\n");printf("1、统计某个班的男女人数\n");printf("2、统计已录入学生之间的男女人数\n");printf("3、统计并显示已录入学生中同名的学生\n");printf("4、统计同年同日出生同学\n");printf("5、批量录入\n");printf("6、班级删除\n");}void rewirte()//罚抄{ //程序结束后将一切写进文件FILE *fp;fp=fopen("date.txt","w+");q=p;p=p->next;while(p){fputs(p->name,fp);fputc(need,fp);fputs(p->sex,fp);fputc(need,fp);fputs(p->snumber,fp);fputc(need,fp);fputs(p->time,fp);fputc(need,fp);fputs(p->id,fp);fputc(need,fp);fputs(p->college,fp);fputc(need,fp);fputs(p->major,fp);fputc(need,fp);fputs(p->classes,fp);fputc(need,fp);fputc(ne,fp);q=p;p=p->next;free(q);}void load(){ //文件内容装载至链表FILE *fp;char ch,e[80];LinkList one;int i=1,l=0;fp=fopen("date.txt","a+");while(!feof(fp)){i=1;l=0;one=(LinkList)malloc(sizeof(LNode));ch=fgetc(fp);if(feof(fp)) break;while(ch!=ne){while(ch!=' '){e[l++]=ch;ch=fgetc(fp);}ch=fgetc(fp);e[l]='\0';switch(i){case 1:strcpy(one->name,e);break;case 2:strcpy(one->sex,e);break;case 3:strcpy(one->snumber,e);break;case 4:strcpy(one->time,e);break;case 5:strcpy(one->id,e);break;case 6:strcpy(one->college,e);break;case 7:strcpy(one->major,e);break;case 8:strcpy(one->classes,e);break;default:break;}l=0;i++;}q->next=one;q=q->next;q->next=NULL;}fclose(fp);}void pri(LinkList l){printf("姓名:");puts(l->name);printf("\n");printf("性别:");puts(l->sex);printf("\n");printf("学号:");puts(l->snumber);printf("\n");printf("入学时间:");puts(l->time);printf("\n");printf("身份证号码:");puts(l->id);printf("\n");printf("学院:");puts(l->college);printf("\n");printf("专业:");puts(l->major);printf("\n");printf("班级:");puts(l->classes);printf("\n");}void pri_II(LinkList l){printf("%s %s %s %s %s %s %s %s\n",l->name,l->sex,l->snumber,l->time,l->id,l->college,l->maj or,l->classes);}void search()//根据学号找人{char op;op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}m=n=p->next;while(n){if(strcmp(cl,n->snumber)==0){break;}m=n;n=n->next;}}void search_II()//根据班级找人{system("cls");char op;int i=0;printf("请输入要查询的班级(如2013软件工程1班):\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}n=p->next;while(n){if(strcmp(cl,n->classes)==0){pri_II(n);i++;}n=n->next;}if(i==0) printf("找不到要查询的班级\n");}void entry()//录入{system("cls");char ,op,i=1;LinkList std;std=(LinkList)malloc(sizeof(LNode));std->next=NULL;printf("请分别输入学生的信息\n");while(i<9){switch(i){case 1:printf("姓名(如:王小明):");break;case 2:printf("性别(如:男):");break;case 3:printf("学号(如:):");break;case 4:printf("入学时间(如:2013-09-01):");break;case 5:printf("身份证号码(如:440781************):");break;case 6:printf("学院(如:):");break;case 7:printf("专业(如:):");break;case 8:printf("班级(如:):");break;}op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;free(std);return;}switch(i){case 1:strcpy(std->name,cl);break;case 2:strcpy(std->sex,cl);break;case 3:strcpy(std->snumber,cl);break;case 4:strcpy(std->time,cl);break;case 5:strcpy(std->id,cl);break;case 6:strcpy(std->college,cl);break;case 7:strcpy(std->major,cl);break;case 8:strcpy(std->classes,cl);break;}i++;}q->next=std;q=q->next;q->next=NULL;printf("录入成功\n");printf("输入任意键以退出\n");a=getchar();}void batchentry()//批量录入{system("cls");int i=0,num=0;char op;printf("请输入录入人数\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}else{while(cl[i]){num+=cl[i]-'0';i++;}}i=1;while(i<=num){entry();if(sw==1) return;}}void classdelete()//班级删除{system("cls");char op;int i=0;printf("请输入要删除的班级:\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161||k==1161){sw=1;return;}n=p->next;m=p;while(n){if(strcmp(cl,n->classes)==0){m->next=n->next;free(n);n=m->next;i++;}else {m=n;n=n->next;}}if(i==0) printf("找不到要查询的班级\n");}void statistical_I()//统计某个班的男女人数{int i=0,boy=0,girl=0,sum=0;char op;printf("请输入你所要查询的班级\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}n=p->next;while(n){if(strcmp(cl,n->classes)==0){while(n->sex[i]){sum=sum+n->sex[i];i++;}i=0;if(sum==-108)boy++;else if(sum==-141) girl++;}sum=0;n=n->next;}printf("男:%d 女:%d\n",boy,girl);}void statistical_II()//统计已录入学生之间的男女人数{int i=0,boy=0,girl=0,sum=0;n=p->next;while(n){while(n->sex[i]){{sum=sum+n->sex[i];i++;}}i=0;if(sum==-108)boy++;else girl++;sum=0;n=n->next;}printf("男:%d 女:%d\n",boy,girl);}void statistical_III()//统计并显示已录入学生中同名的学生{char op;printf("请输入名字(如王小明)\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}n=p->next;while(n){if(strcmp(cl,n->name)==0)pri_II(n);n=n->next;}}void statistical_IV()//统计同年同日出生同学{int i=0,sum=0,deal=0;char op;printf("请输入生日(如19940505)\n");op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=1;return;}n=p->next;while(n){while(i<8){if(n->id[i+6]!=cl[i]) {deal=1;break;}i++;}if(deal==0) {pri_II(n);sum++;}n=n->next;deal=0;i=0;}if(sum==0) printf("NOT FOUND\n");}void operation(char e)//其他{switch(e){case '1':statistical_I();break;case '2':statistical_II();break;case '3':statistical_III();break;case '4':statistical_IV();break;case '5':batchentry();break;case '6':classdelete();break;default:break;}}int main(void){FILE *fp;char op,sf,a,ch;int end=1;/*shell();*//*LinkList b;//链表头*/p=(LinkList)malloc(sizeof(LNode));q=p;load();x6:shell();/*system("cls");*/x8:while(end){she:op=console();if(op<='9'&&op>='1')switch(op){case'1':{sw=0;x1:entry();if(sw==1) {sw=0;goto x7;}break;}case'2':{x2:system("cls");sw=0;printf("请输入要修改的学生的学号():\n");search();if(sw==1) {sw=0;goto x7;}if(!n) {printf("A查无此人");printf("输入任意键以退出\n");a=getchar();break;}else pri_II(n);shell_II();op=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=0;goto x7;}switch(op){case'1':printf("请输入新姓名:");gets(n->name);break;case'2':printf("请输入新性别:");gets(n->sex);break;case'3':printf("请输入新学号:");gets(n->snumber);break;case'4':printf("请输入新入学时间:");gets(n->time);break;case'5':printf("请输入新身份证号码:");gets(n->id);break;case'6':printf("请输入新学院:");gets(n->college);break;case'7':printf("请输入新专业:");gets(n->major);break;case'8':printf("请输入新班级:");gets(n->classes);break;case'9':break;}if(op!='9'){printf("修改成功\n");printf("输入任意键以退出\n");a=getchar();}break;}case'3':{x3:system("cls");sw=0;printf("请输入要删除的学生的学号(如201330330102):\n");search();if(sw==1) {sw=0;goto x7;}if(!n) {printf("B查无此人");a=getchar();break;}else{c=n;n=n->next;free(c);m->next=n;printf("删除成功\n");printf("输入任意键以退出\n");a=getchar();break;}}case'4':{x4:system("cls");sw=0;printf("请输入要查询的学号():\n");search();if(sw==1) {sw=0;goto x7;}if(!n) printf("C查无此人");else pri(n);printf("输入任意键以退出\n");a=getchar();break;}x9:case'5':{sw=0;search_II();if(sw==1) {sw=0;goto x7;}printf("输入任意键以退出\n");a=getchar();break;}x11:case'6':{system("cls");sw=0;shell_III();printf("请输入实现的功能:\n");sf=console();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=0;goto x7;}operation(sf);if(sw==1) {sw=0;goto x7;}printf("输入任意键以退出\n");a=getchar();break;}case'7':{x5:system("cls");fp=fopen("说明.txt","r+");while(!feof(fp)){ch=fgetc(fp);putchar(ch);}printf("输入任意键以退出\n");a=getchar();break;}case'8':end=0;goto x8;default:printf("A error\n");printf("输入任意键以退出\n");a=getchar();break;}else{x7:switch(k){case 562:goto x1;case 648:goto x2;case 627:goto x3;case 966:goto x4;case 1164:goto x9;case 1189:goto x11;case 1218:goto x5;case 311:end=0;goto x8;case 672:system("cls");goto x6;case 735:{system("cls");statistical_I();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161)printf("输入任意键以退出\n");a=getchar();break;}case 840:{statistical_II();printf("输入任意键以退出\n");a=getchar();break;}case 839:{system("cls");statistical_III();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=0;goto x7;}printf("输入任意键以退出\n");a=getchar();break;}case 836:{system("cls");statistical_IV();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=0;goto x7;}printf("输入任意键以退出\n");a=getchar();break;}case 1076:{system("cls");batchentry();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161)printf("输入任意键以退出\n");a=getchar();break;}case 1161:{system("cls");classdelete();if(k==562||k==648||k==627||k==966||k==1164||k==1218||k==311||k==672||k==1189||k==735||k== 840||k==839||k==836||k==1076||k==1161){sw=0;goto x7;}printf("输入任意键以退出\n");a=getchar();break;}default:printf("d error\n");goto she;break;}}system("cls");shell();}rewirte();return 0;}综合性实验报告评分表题目:学生证管理系统学号:姓名:评分项目分数1.实现情况(40):完成设计要求的情况2.程序规范(10):程序的结构与格式规范程度等3.报告情况(35):报告内容是否详细,总结内容是否深刻等4.报告规范(15):撰写的规范性、合理性等总成绩:评语:评阅老师:评阅时间:。