100010821-基于C语言开发学生管理系统 ♻️ 资源大小2.88MB➡️资源下载https://download.csdn.net/download/s1t16/87453180学生信息系统的设计与实现设计任务设计并实现一个学生管理系统可以对高校学生的信息进行管理。基本操作应至少包括添加学生信息、删除学生信息、修改学生信息、浏览学生信息、查找学生信息。学生属性应至少包括学号、姓名、性别、籍贯、出生年月、专业、入学年份、所属年级、学籍状态在读、休学、退学、服兵役。查找功能以学生的属性为查找关键字。应实现根据所属年级进行批量删除的功能。应以文件的形式对信息进行加密存储。需求分析系统角色辅导员管理学生成绩学生修改管理自己的部分信息管理员管理全部的辅导员和学生信息以及自己的部分信息功能需求学生管理系统包括三个方面的需求分别是学生的需求、辅导员的需求以及后台管理人员的需求。学生的需求是查询自己的信息修改自己部分信息诸如联系方式、家庭住址、修改登录密码等。辅导员的需求是查询自己的信息登记修改学生的成绩、修改登录密码以及修改自己部分信息诸如地址等。后台管理员人员的需求则是修改学生、辅导员除登录密码外所有信息以及自己的登录密码的修改。基本功能用户管理能够对用户名、密码的简单验证能够修改密码等操作。学生信息管理能够对学生信息进行删除、添加、修改等操作。学生成绩管理能够对学生成绩进行添加、修改、删除等操作。学生科目管理能够对学生科目进行添加、修改、删除等操作。辅导员信息管理能够对辅导员信息进行添加、修改、删除等操作。浏览查询能够对学生信息、辅导员信息的查找、浏览等操作。开发与运行环境运行环境需求电脑端CPU 奔腾、运行内存 2G、硬盘空间等。开发环境需求操作系统 XP 及以上、开发平台 codeblocks、编译器 GNU 、开发语言 C 、GitHub 等。开发环境开发环境统一为 C 语言。运行环境开发平台推荐 Code::Blocks 16.01或其他版本GCC 编译器。但也可选择其他熟悉的开发环境如 VC 6.0。系统概要设计数据结构设计账号的数据结构struct _IDid 字符串 账号password 字符串 密码flag 布尔值(char) 标记是否删除科目信息的数据结构struct _subjectname 字符串 学科名称mark 浮点型数据 学科分数flag 布尔值(char) 标记是否删除班级的数据结构struct _classname 字符串 班级名称Flag 布尔值(char) 标记是否删除学生信息的数据结构struct _studentstruct _ID 结构体 账号的数据结构name 字符串 学生姓名class 字符串 学生班级address 字符串 学生地址phoneNumber 字符串 学生电话号码Struct_subject 结构体 科目信息SubjectNum 无符号常整型 科目数量nativePlace 字符串 籍贯birthday 字符串 生日major 字符串 专业YearOfEnrollment 字符串 入学年份enum _enum_sex 枚举类型 性别enum _enum_status 枚举类型 在读状态辅导员信息的数据结构struct _counsellorstruct _ID 结构体 账号的数据结构name 字符串 辅导员姓名address 字符串 辅导员地址struct_class 结构体 辅导员管理班级manageClassNum 无符号常整型 辅导员管理班级数目管理员的数据结构struct _adminstruct _ID 结构体 账号的数据结构文件系统的数据结构struct _fileStructadminInfoFile 字符串 管理员信息的文件studentInfoFile 字符串 学生信息的文件counsellorInfoFile 字符串 辅导员信息的文件profile 字符串 配置文件学生信息管理系统的数据结构FileStruct 结构体 文件信息pStudent 结构体 学生数组信息studentLen 无符号常整型 学生数组长度Admin 结构体 管理员信息pCounsellor 结构体 辅导员信息counsellorLen 无符号常整型 辅导员数组长度系统总体设计[用例 1]绘制系统总体功能构成如图一。[用例 1 图][用例 2][用例 2 图]功能名登陆参与角色老师、学生、管理员事件流事件流1. 输入用户名、密码2. 登录成功 2.1 密码错误超过三次退出程序1. 输入用户名、密码2. 登录成功 2.1 密码错误超过三次退出程序功能名修改密码参与角色老师、学生、管理员事件流事件流输入原密码1.1 密码错误三次自动退出修改密码界面2. 输入两次新密码 2.1 两次新密码一致修改成功 2.2 两次新密码不一致选择继续修改或放弃输入原密码1.1 密码错误三次自动退出修改密码界面2. 输入两次新密码 2.1 两次新密码一致修改成功 2.2 两次新密码不一致选择继续修改或放弃[用例 3][用例 3 图]功能名删除学生信息参与角色管理员、辅导员事件流事件流是否删除删除信息不删除信息是否删除删除信息不删除信息功能名修改学生信息参与角色管理员、辅导员事件流事件流修改学生信息学号姓名班级成绩籍贯手机号确认修改信息修改信息不修改信息修改学生信息学号姓名班级成绩籍贯手机号确认修改信息修改信息不修改信息功能名添加学生信息参与角色管理员、辅导员事件流事件流添加学生信息学号姓名班级成绩籍贯手机号确认添加添加不添加添加学生信息学号姓名班级成绩籍贯手机号确认添加添加不添加[用例 4][用例 4 图]功能名添加科目信息参与角色管理员事件流事件流添加科目信息科目名称、科目总分、绩点确认添加2.1 添加2.2 不添加添加科目信息科目名称、科目总分、绩点确认添加2.1 添加2.2 不添加功能名修改科目信息参与角色管理员事件流事件流修改科目信息确认修改信息2.1 修改信息2.2 不修改信息修改科目信息确认修改信息2.1 修改信息2.2 不修改信息功能名删除科目参与角色管理员事件流事件流1是否删除删除科目不删除信息1是否删除删除科目不删除信息[用例 5][用例 5 图]功能名添加成绩信息参与角色管理员、辅导员事件流事件流添加成绩确认添加2.1 添加2.2 不添加添加成绩确认添加2.1 添加2.2 不添加功能名修改成绩信息参与角色管理员、辅导员事件流事件流修改成绩确认修改信息2.1 修改信息2.2 不修改信息修改成绩确认修改信息2.1 修改信息2.2 不修改信息功能名删除成绩信息参与角色管理员、辅导员事件流事件流1是否删除删除科目不删除信息1是否删除删除科目不删除信息[用例 6][用例 6 图]功能名按学号查找学生信息参与角色管理员、辅导员、学生事件流事件流输入学号查找查无此记录请重新输入或选择退出输出学生信息输入学号查找查无此记录请重新输入或选择退出输出学生信息功能名按姓名查找学生信息参与角色管理员、辅导员、学生事件流事件流输入姓名查找1.1 查无此记录请重新输入或选择退出2. 输出学生信息输入姓名查找1.1 查无此记录请重新输入或选择退出2. 输出学生信息功能名显示学生基本信息参与角色管理员、辅导员、学生事件流事件流显示学号、姓名、班级显示成绩各科目成绩显示学号、姓名、班级显示成绩各科目成绩功能名显示学生详细信息参与角色管理员、辅导员、学生事件流事件流显示学号、姓名、班级显示籍贯、手机号等显示成绩各科目成绩显示学号、姓名、班级显示籍贯、手机号等显示成绩各科目成绩功能名按编号查找辅导员信息参与角色管理员、辅导员事件流事件流输入编号查找1.1 查无此记录请重新输入或选择退出2. 输出辅导员信息输入编号查找1.1 查无此记录请重新输入或选择退出2. 输出辅导员信息功能名按姓名查找辅导员信息参与角色管理员、辅导员事件流事件流1输入姓名查找1.1 查无此记录请重新输入或选择退出2. 输出辅导员信息1输入姓名查找1.1 查无此记录请重新输入或选择退出2. 输出辅导员信息功能名显示辅导员详细信息参与角色管理员、辅导员事件流事件流显示编号、姓名显示籍贯、手机号等显示管理班级名称显示编号、姓名显示籍贯、手机号等显示管理班级名称[用例 7][用例 7 图]功能名删除辅导员信息参与角色管理员事件流事件流是否删除删除不删除是否删除删除不删除功能名添加辅导员信息参与角色管理员事件流事件流添加辅导员信息姓名编号所管班级手机号确认是否添加确认添加不添加添加辅导员信息姓名编号所管班级手机号确认是否添加确认添加不添加功能名修改辅导员信息参与角色管理员事件流事件流修改辅导员信息姓名编号所管班级手机号确认是否修改确认修改不修改修改辅导员信息姓名编号所管班级手机号确认是否修改确认修改不修改系统详细设计模块设计[用例 1]用户管理登录、修改密码。以学生身份登录认证const student pStudentArray[] 参数指 学生数组const size_t len 参数指 学生数组的长度size_t *const pIndex 参数指认证成功获得该学生在学生数组中的下标函数返回值 bool 型若返回值为真则表示认证成功否则失败pIndex 值无意义bool LoginByStudent(const student pStudentArray[], const size_t len, size_t *const pIndex);以辅导员身份登录认证const counsellor pCounsellorArray[] 参数指 辅导员数组const size_t len 参数指 辅导员数组的长度size_t *const pIndex 参数指认证成功获得该辅导员在辅导员数组中的下标函数返回值 bool 型 若返回值为真则表示认证成功否则失败pIndex 值无意义bool LoginByCounsellor(const counsellor pCounsellorArray[], const size_t len, size_t *const pIndex);以管理员身份登录认证const admin *const pAdmin 参数指 管理员指针函数返回值 bool 型 若返回值为真 则表示认证成功 否则失败bool LoginByAdmin(const admin *const pAdmin);检查 ID 是否一致参数 const ID *const pIDA 指 账号 A参数 const ID *const pIDB 指 账号 B该账号 A 和 账号 B 相等 则返回值为 真 否则为假bool CheckID(const ID *const pIDA, const ID *const pIDB);修改密码参数 ID *const pID 为待修改的账号指针void ChangePassword(ID *const pID);[用例 2]辅导员信息管理添加辅导员信息、删除辅导员信息、修改辅导员信息。删除辅导员信息 通过标记 flag 惰性删除counsellor pcounsellorArray[ ] 参数指辅导员数组指针const size_t len 参数指 辅导员数组的长度void DeleteCounsellorInfo(counsellor pCounsellorArray[ ], const size_t len);添加辅导员信息counsellor **pCounsellorArray 参数指辅导员数组指针的指针size_t *const pConLen 参数指辅导员是数组的长度void AddCounsellorInfo(counsellor **pCounsellorArray, size_t *const pConLen);修改辅导员信息counsellor *const pcounsellor 参数指修改当前辅导员信息void ChangeCounsellorInfo(counsellor *const pCounsellor);删除辅导员数组信息counsellor **pCounsellorArray 参数指指向辅导员数组指针的指针size_t *pLen 参数指辅导员数组长度的指针void FreeCounsellorArray(counsellor **pCounsellorArray, size_t *pLen);[用例 3]学生信息管理删除学生信息、添加学生信息、修改学生信息。删除学生信息通过标记 flag 惰性删除student *const pStudentArray 参数指学生数组指针const size_t Len 参数指学生数组的长度void DeleteStudentInfo(student *const pStudentArray, const size_t len);添加学生信息student **pStudentArray 参数指学生数组指针的指针size_t *const pConLen 参数指学生是数组的长度void AddStudentInfo(student **pStudentArray, size_t *const pConLen);修改学生信息student *const pStudent 参数指修改当前学生信息void ChangeStudentInfo(student *const pStudent);删除学生数组信息student **pStudentArray 参数指指向学生数组指针的指针size_t *pLen 参数指学生数组长度的指针void FreeStudentArray(student **pStudentArray, size_t *pLen);[用例 4]浏览、查询浏览、查询学生、辅导员信息。查找学生信息const student *const pStudentArray 参数指学生数组指针const size_t len 参数指学生数组的长度size_t *const locateIndex 参数指找到学生在数组中的下标函数返回值 bool 值指是否在学生数组中找到该学生信息若没有找到locateIndex 值没有意义bool LocateStudentInfo(const student *const pStudentArray, const size_t len, size_t *const pLocateIndex)通过 ID 查找学生信息const student *const pStudentArray 参数指学生数组指针const size_t len 参数指学生数组的长度const ID *const id 参数指需要找到的学生的 ID 指针size_t *const locateIndex 参数指找到学生在数组中的下标函数返回值 bool 值指是否在学生数组中找到该学生信息若没有找到locateIndex 值没有意义bool LocateStudentInfoByID(const student *const pStudentArray, const size_t len, const ID *const pID, size_t *const pLocateIndex);通过姓名查找学生信息const student *const pStudentArray 参数指学生数组指针const size_t len 参数指学生数组的长度const char *const name 参数指需要找到的学生的姓名size_t *const pLocateIndex 参数指找到学生在数组中的下标函数返回值 bool 值指是否在学生数组中找到该学生信息若没有找到locateIndex 值没有意义bool LocateStudentInfoByName(const student *const pStudentArray, const size_t len, const char *const name, size_t *const pLocateIndex);显示学生信息const student *pStudent 参数指需要显示的学生指针void DispStudentInfo(const student *const pStudent);显示所有学生信息const student *pStudentArray 参数指需要显示的学生数组指针const size_t conLen 参数指需要显示的学生数组的长度void DispAllStudentInfo(const student *const pStudentArray, const size_t conLen);查找辅导员信息const counsellor *const pCounsellorArray 参数指辅导员数组指针const size_t len 参数指辅导员数组的长度size_t *const locateIndex 参数指找到辅导员在数组中的下标函数返回值 bool 值 指是否在辅导员数组中找到该辅导员信息若没有找到locateIndex 值没有意义bool LocateCounsellorInfo(const counsellor *const pCounsellorArray, const size_t len, size_t *const pLocateIndex);通过 ID 查找辅导员信息const counsellor *const pCounsellorArray 参数指辅导员数组指针const size_t len 参数指辅导员数组的长度const ID *const id 参数指需要找到的辅导员的 ID 指针size_t *const locateIndex 参数指找到辅导员在数组中的下标函数返回 bool 值指是否在辅导员数组中找到该辅导员信息若没有找到locateIndex 值没有意义bool LocateCounsellorInfoByID(const counsellor *const pCounsellorArray, const size_t len, const ID *const pID, size_t *const pLocateIndex);通过姓名查找辅导员信息const counsellor *const pCounsellorArray 参数指辅导员数组指针const size_t len 参数指辅导员数组的长度const char *const name 参数指需要找到的辅导员的姓名size_t *const pLocateIndex 参数指找到辅导员在数组中的下标函数返回值 bool 值指是否在辅导员数组中找到该辅导员信息若没有找到locateIndex 值没有意义bool LocateCounsellorInfoByName(const counsellor *const pCounsellorArray, const size_t len, const char *const name, size_t *const pLocateIndex);显示辅导员信息const counsellor *pcounsellor 参数指需要显示的辅导员指针void DispCounsellorInfo(const counsellor *const pCounsellor);显示所有辅导员信息const counsellor *pcounsellorArray 参数指需要显示的辅导员数组指针const size_t conLen 参数指需要显示的辅导员数组的长度void DispAllCounsellorInfo(const counsellor *const pCounsellorArray, const size_t conLen);[用例 5]学生成绩管理添加单个学生的成绩const student *const pStudent 参数指学生的指针void AddMark(student *const pStudent);修改 单个学生的成绩const student *const pStudent 参数指学生的指针void ChangeMark(student *const pStudent);[用例 6]学生科目管理删除所有学生科目信息 通过标记 flag 惰性删除student pStudentArray[ ] 参数指学生数组指针const size_t Len 参数指 学生数组的长度void DeleteAllStudentSubjectInfo(student pStudentArray[ ], const size_t len);添加所有学生科目信息通过修改已标记删除的科目或者重新分配空间student pStudentArray[ ] 参数指学生数组指针const size_t len 参数指学生是数组的长度void AddAllStudentSubjectInfo(student pStudentArray[], const size_t len);修改所有学生科目信息通过查找每个学生的科目信息如若找到符合的科目信息则修改。student pStudentArray[ ] 参数指学生数组指针const size_t len 参数指学生是数组的长度void ChangeAllStudentSubjectInfo(student pStudentArray[ ], const size_t len);删除单个学生科目信息通过标记 flag 惰性删除const Student *const pStudent 参数指学生指针void DeleteSingleStudentSubjectInfo(student *const pStudent);添加单个学生科目信息通过修改已标记删除的科目或者重新分配空间const student *const pStudent 参数指 学生指针void AddSingleStudentSubjectInfo(student *const pStudent);修改单个学生科目信息通过查找该学生的科目信息如若找到符合的科目信息则修改。student pStudent[ ] 参数指 学生指针函数返回值 bool 若为真则修改成功否则修改失败或没有找到符合的科目bool ChangeSingleStudentSubjectInfo(student *const pStudent);模块结构通过图形来描述函数模块之间的调用关系。系统测试该部分结合插图演示的整个运行流程要涉及到所实现的全部功能。1.CounsellorInfoManage_test():DeleteCounsellorInfo_test():2.AddCounsellorInfo_test():3.StudentInfoManage_Test():DeleteStudentInfo_Test();4.AddStudentInfo_Test();5.ChangeStudentInfo_Test();6.LocateStudentInfoByID_Test();7.LocateStudentInfoByName_Test();8.DispStudentInfo;9.DispAllStudentInfo10.StudentMarkManage_Test():AddMark_Test();11.ChangeMark_Test();12.StudentSubjectManage_Test():DeleteAllStudentSubjectInfo_Test();13.AddAllStudentSubjectInfo_Test();14.ChangeAllStudentSubjectInfo_Test();15.DeleteSingleStudentSubjectInfo_Test();16.AddSingleStudentSubjectInfo_Test();17.ChangeSingleStudentSubjectInfo_Test();总结与反思由于时间和技术水平的原因在本系统设计上还不能将全部功能设计得非常完善还有一些功能模块有待于进一步的完善。同时在本系统中还缺少了一部分必要的功能模块,例如系统的操作日志。这一系列工作都有待于今后在工作中逐步地加以补充和完善。只要生命不停止学习永不停止。有了知识才不会觉得虚拟有了知识才会觉得充实。在整个项目的建设与编程的过程中我们深深地体会到了“学以致用”这句话的含义。过去在课堂学习的过程有很多知识我们错误地认为并不需要甚至感到是浪费时间但是在实践过程中我们才发现课堂上学习的内容还远远不足许多问题在编程的过程中一一暴露出来。一些平时容易忽视的细节往往成为我们编程的一道障碍百思不得其解。通过查阅了大量的资料和请教了指导老师以后我们才发现原来差错只是小小的一个这更加促使我们经常提醒自己要做到事无巨细处处留心。编程并不是一件很困难的事情只要在实践中多加体会和运用一定能越来越精。然而在编程前的系统分析和设计方面却需要我们们花费足够的耐心考虑周详从这次的学习和实践中我们体会到了要能够适应这个突飞猛进的科技时代真正困难的是如何能够不断地学习提高自己的知识水平来适应社会的需要。相信在今后的学习过程中我们一定要以仔细谨慎的思想来对待每一件事情力争成为一个能为社会做出贡献的有用之人。该部分对课程设计的全程进行总结说明通过课程设计得到的锻炼、收获、感悟或经验。同时也思考一下整个过程中可以改进的地方。参考文献门鹏, 段振华. 一种基于 Petri 网的自动 Web 服务组合算法[J]. 西安电子科技大学学报. 2008, 35(4): 609-613.谭浩强. C 程序设计[M]. 第 3 版. 北京: 清华大学出版社. 2005.孙昌爱, 尚岩, 李飞. 事务感知的 Web 服务开发框架[C]. 全国软件与应用学术会议. 2011: 6-11.邓水光. Web 服务自动组合与形式化验证的研究[D]. 杭州: 浙江大学, 2007: 15-28.OWL Web Ontology Language Overview. 2004:http://www.w3.org/TR/2004/REC-owl-features-20040210.范玉顺, 倪悦. 语义 Web 服务组合的模型转换及形式化验证方法[P]. 中国: ZL200910236364.9, .Behrmann, A. David, and K. G. Larsen. A Tutorial on Uppaal4.0[R]. 2006