c语言大作业课程设计报告-学生管理系统(28页).doc
《c语言大作业课程设计报告-学生管理系统(28页).doc》由会员分享,可在线阅读,更多相关《c语言大作业课程设计报告-学生管理系统(28页).doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-c语言大作业课程设计报告-学生管理系统-第 28 页 C语言课程设计报告设计题目:学生管理系统专 业: 班 级: 姓 名: 学 号:提交时间: 完成方式:(单选)自我评分:(单选)独立完成 优秀参考他人工作的基础上完成 良好在他人的帮助下完成 中等完整拷贝他人成果 及格 不及格设计任务:C语言课程设计任务书5题目:学生管理系统设计功能:学生管理系统设计,每个学生是一条记录,包括姓名、学号、性别、出生年月、专业、年级、班级、家庭住址、宿舍号码等。系统要求实现以下功能:1、 输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等);2、 显示功能:完成学生记录的显示;3、 查找功能:
2、完成按学号或姓名查找学生的相关记录,并显示。分布实施:1、 初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2、 建立一个文件,将每位学生的信息写入文件中(人数利用宏定义设定)并显示与屏幕上;3、 完成上述显示,查找(姓名、性别等),修改等功能;4、 进一步要求,修改记录设置密码操作。要求:1、 用C语言实现程序设计;2、 利用结构体数组实现学生信息的数据结构设计;3、 系统各个功能模块要求用函数的形式实现;界面良好(良好的人机交互),程序必须加必要的注释。课程设计实验报告要求:1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分;2、实验总报告:流程图、主
3、要源程序代码(需打印)、测试情况及调试中的问题与解决方案、小结等。一总体设计1.程序的总体设计本次课程设计,主要通过main函数调用welcome( ),mainmenu( )和close( )函数实现。在mainmenu( )函数中,又嵌套了五个函数模块,create( )、search( )、change( )、del( )、printall( ),分别实现新建学生信息、查找学生信息、修改学生信息、显示所有信息的功能。在search ( )中,又调用了search_num( )和search_name( )两个函数,分别代表用学号查找和用姓名查找两种查找方式。另外,open( )函数用于获
4、得文件的头指针,delay( )延时函数用于welcome( )中界面的动态显示。2.数据结构本次课程设计中用到的数据结构类型是单链表,链表的结点储存学生的信息,用结构体储存学生信息。typedef struct student/定义结构体变量,用于储存学生的信息char num12;/学号,最多输入12个字符;char name10;/姓名,最多输入10个字符(5个汉字);char sex4;/性别,最多输入4个字符(2个汉字);char birthday12;/出生年月日,最多输入12个字符;char grade8;/年级,最多输入8个字符;char major20;/专业,最多输入20个
5、字符;char tel15;/手机号码,最多输入15个字符;char wechat15;/微信号,最多输入15个字符;struct student *next;/用于存放链表下一个结点的地址,即下一个学生信息的地址 student;/结构体类型为student型3.函数原型声明的说明l delay( )函数输入参数:unsigned int 延长的时间输出参数:无返 回 值:无功能描述:调用delay( )函数实现延时效果,从而实现字符动态显示在界面中,或字符在界面中停留一段时间再消失。l create( )函数输入参数:无输出参数:无返 回 值:无功能描述:调用create( )函数,能够新
6、建学生信息,并将新建的信息储存到一个文件名为“学生管理系统信息.txt”的文本文件中。l open( )函数输入参数:无输出参数:student *fphead返 回 值:fphead 即返回文件的链头指针功能描述:打开文件,将文件“学生管理系统信息.txt”里面的数据载入链表,并将链表的头指针fphead返回l search_num( )函数输入参数:student *fphead 链头指针输出参数:无返 回 值:无功能描述:按学号查找学生的信息并将信息打印于屏幕l search_name( )函数输入参数:student *fphead 链头指针输出参数:无返 回 值:无功能描述:按姓名查
7、找学生信息并将信息打印于屏幕l search( )函数输入参数:无输出参数:无返 回 值:无功能描述:提供学号和姓名两种查询方式给用户选择,若选择按学号查询,则调用search_num( )函数;若选择按姓名查询,则调用search_name( )函数l change ( ) 函数输入参数:student *fphead 链头指针输出参数:无返 回 值:无功能描述:输入原来修改的密码方可执行此操作输入要修改的姓名,学生信息会打印在屏幕并提供8种选择,输入数字可以做相应信息的修改,并将修改的新信息替换原来的信息储存到文本文件“学生管理系统信息.txt”中l del( )函数输入参数:无输出参数:
8、无返 回 值:无功能描述:输入某个学生的名字将参数该学生的信息并显示删除成功l printall( )函数输入参数:无输出参数:无返 回 值:无功能描述:将所有学生的信息以表格的形式打印到屏幕上l welcome( )函数输入参数:无输出函数:无返 回 值:无功能描述:登录界面将“welcome”以不同颜色显示,随后显示开发者信息并要求输入学号、输入密码以及修改密码l close( )函数输入参数:无输出参数:无返 回 值:无功能描述:退出学生管理系统l mainmenu( )函数输入参数:无输出参数:无返 回 值:无功能实现:显示主菜单,并根据用户的选择调用以上不同的函数模块以实现新建学生信
9、息、查询学生信息、修改学生信息、删除学生信息、显示所有信息、退出管理系统等不同的功能,是整个学生管理系统 的核心部分以下是调用到的库函数l getch( )输入参数:无输出参数:char 字符类型返 回 值:char 字符类型功能描述:有键盘输入一个字符l fopen( )函数输入参数:文件名,使用文件方式输出参数:FILE *fp 文件的地址返 回 值:FILE *fp 文件的地址功能实现:使用文件方式为wb,则以只写的方式打开文件,若文件不存在,则建立一个新文件;使用文件方式为ab,则以追加的方式打开文件,即向文件的末尾添加数据,若文件不存在,则出错l fwrite( )函数输入参数:st
10、udent *p, sizeof(student),int ,FILE*fp输出函数:无返 回 值:无功能描述:向指定文件写一个数据块,将新建的信息写入到指定文件中l fclose( )函数输入参数:FILE *fp 文件地址输出函数:无返 回 值:无功能描述:把fp指定的文件关闭,再次调用fopen 函数之前fp不再指向该文件l feof( )函数输入参数:FIEL *fp 输出参数:真值0或1返 回 值:真值0或1功能描述:检查到文件读写位置标志是否移动到文件末尾,即磁盘文件是否结束l fread( )函数输入参数:student *p, sizeof(student),int , FIL
11、E*fp输出参数:无返 回 值:无功能描述:从指定文件中读一个数据块l strcmp( )函数输入参数:两个字符数组输出参数:真值0或1 返 回 值:真值0或1功能描述:若两个字符串一样,返回真值1;若不同,返回真值0l GetStdHandle( )函数输入参数:STD_OUTPUT_HANDLE输出参数:HANDLE handle返 回 值:HANDLE handle功能描述:获取控制台句柄l SetConsoleTextAttribute( )函数输入参数:HANDLE handle,FOREGROUND_颜色输出函数:无返 回 值:无功能描述:改变字体颜色4.流程图主流程图 退出系统界
12、面 学生管理系统主菜单新建信息模块查询信息模块修改信息模块删除信息模块显示信息模块退出系统模块按学号查询按姓名查询 登录界面二详细设计1各个模块的流程图新建信息模块开始 按输入数据数据数据是否继续输入将数据写进文本按任何键回主菜单 否 是查询信息模块开始输入要查询的方式 读取数据输出“还未建立信息”文件不存在是否找到信息是否找到信息输出数据输出数据是是否否无此信息无此信息按任何键回主菜单文件存在输入要查询的姓名修改信息模块是否继续修改信息开始 读取数据输出“还未建立信息”输入要修改的姓名是否找到信息否无此信息打印信息是 输入数据将数据写进文本,并输出“修改成功”按任何键回主菜单文件不存在 文件
13、存在 文件存在是否删除信息模块开始 读取数据文件不存在输出“还未建立信息”文件存在输入要删除的姓名是否找到信息否无此信息删除数据输出“删除成功”按任何键回主菜单 是显示信息模块开始 读取数据输出“还未建立信息”文件存在文件不存在打印数据按任何键回主菜单退出系统模块开始是否退出系统否返回主菜单延迟2秒后退出程序2.全局变量的说明本次课程设计中定义了全局变量 unsigned int Num,Code 在welcome( )函数中用到这两个变量,在change( )函数中修改信息的时候也用到输入密码,因此定义了全局变量3.宏定义说明本次课程设计中用到的宏定义有#define LEN sizeof(
14、student)/宏定义LEN为结构体的大小以便对student类型的长度的引用三测试及调试1.主要测试方案程序运行到对应模块时,输入正确与非正确的数据,看看有什么效果,分析与预期效果的差异及原因,再做进一步的修改。2.存在的问题及解决的方案问题一:如何实现获得一个字符后程序就能直接运行而不用按回车。解决方案:通过查阅网上资料才知道getch()函数就能实现这个功能,但要增加conio.h这个头文件问题二:如何建立一个新的文件保存数据解决方案:通过查阅C程序设计知道,定义FILE *fp,fp=fopen(“文件名”,”wb”)可以新建原来没有的文件并将数据储存到文件中。问题三:seach()
15、函数中,原来是int a,若输入一个非数值字符,就回进入一个死循环。解决方案:将int a 改为char a问题四:如何将屏幕清空解决方案:上网查阅资料,发现用system(“cls”)即可,但要增加stdlib.h这个头文件问题五:显示的东西太多,界面长度不够解决方案:使用system(“mode con cols= 130 lines=40”)改变界面大小,要增加windows.h头文件问题六:如何改变字体颜色解决方案:一个是用system(“color *” )改变,这个可以同时改变字体和背景的颜色,另外一个是HANDLE handle = GetStdHandle(STD_OUTPUT
16、_HANDLE); /获取控制台句柄SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN); / 设置为绿3.程序运行截图与分析l 欢迎界面,有welcome不同颜色的动态显示。l 登录界面,设置输入学号密码以及修改密码的功能l 主菜单几面,有六个模块可以选择。l 选择模块1,进入以下界面l 新建学生信息的过程l 选择N/n退出新建信息的界面回到主菜单l 选择查询模块进入以下界面,供学号还有姓名两种查询模式l 输入信息与刚新建信息部匹配的情况l 查询到的信息打印与屏幕l 选择修改信息模块进入以下界面,需要
17、输入密码l 对应信息会打印于屏幕,提供八种修改的内容l 不修改其他信息,按0,并显示修改成功l 选择删除信息模块进入以下界面l 选择显示所有信息模块,将所有信息显示在屏幕上l 选择退出系统模块,会提示是否要退出系统l 退出系统的界面四小结本次C语言课程设计是对上学期的C程序设计和对这学期的数据结构的综合运用,是一次难得的实践机会,也是一次巨大的挑战。由于学到的东西在之前没有实际操作过,所以运用起来也比较困难,因此要不断的复习前面的知识,并通过上网查阅资料,来让自己知道要怎么写出一个完整的程序。所以也是一个温故而知新的过程。在这次课程设计中,处理除了实现任务书的要求外,我还有所改进和创新,比如改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 课程设计 报告 学生 管理 系统 28
限制150内