首页 / C语言 / C语言合作项目——学生信息管理系统
C语言合作项目——学生信息管理系统
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言合作项目——学生信息管理系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3731字,纯文字阅读大概需要6分钟。
内容图文
![C语言合作项目——学生信息管理系统](/upload/InfoBanner/zyjiaocheng/993/b774713e0d1f44ae9fd368c4165630c8.jpg)
C语言合作项目——学生信息管理系统
? 学习c语言以来第一次接触的团队合作项目,虽然这个项目规模比较小而且功能比较简单,但是对我这个零项目经验的新手来说意义非凡,不仅复习和实践了之前不熟悉的知识,也在编写中学习了很多有用的知识,也培养了团队合作的能力。
项目需要实现的目标:
学生:
姓名 性别 学号 密码 语文 数学 英语
1、第一次登录强制修改密码。
2、查询成绩
排名 不显示姓名和学号。
平均分
最高分
最低分
3、修改密码
4、查看个人信息
5、三次密码错误锁定帐号,由教师解锁
教师:
姓名 性别 工号 密码
1、第一次登录强制修改密码。
2、添加学生(学生的学号自动生成)
单个添加
批量导入
3、删除学生
输入两次学号确定
删除的学生要记录保存在已退学的文件中
4、查找学生
按姓名查找
按学号查找
5、修改学生信息
修改学生基础信息
修改学生成绩
6、录入学生成绩
单个录入
批量导入
7、重置学生密码
8、显示所有在校学生信息
9、显示所有退出学生信息
10、三次密码错误锁定帐号,由校长解锁
校长:
admin
1、第一次登录强制修改密码。
2、能重置自己的密码
3、能重置教师密码
4、添加教师
5、删除教师
6、显示所有在职教师
7、显示所有离职教师
设计文档
文件 结构 成员 全局变量 函数名
前期分工:
? 我和三个同学大致划分了一下各自的工作内容。组长负责编写界面、工具函数,组员1负责编写教师模块内容,组员2负责编写校长模块内容,
我负责编写学生模块内容以及文件读写模块的功能。
前期准备:
? 我们大致统一了一下各身份结构体中的内容,然后统一了一些可能需要用到的变量名。我主要负责学生模块,这个模块与其他模块联系较少,只需要单独实现数据的查询,没有涉及到增删改查等功能,所以比较简单。我主要的精力也是放在对于文件读写功能的实现上。对于三个身份模块,我们定义了三个结构体来存储信息,同时定义了两个宏来替换学生和教师的最大人数。
项目过程中的心得:
? 1.学生模块我就简单说一下吧,重点主要是对于成绩排名函数的编写。第一个单科成绩排名,比如说语文成绩。设计中是对内存中所有学生的语文成绩进行遍历,然后与当前学生语文成绩进行对比,当前学生语文成绩小于遍历内存学生的语文成绩,则这门成绩的排名+1 ,否则不变;第二个总成绩排名也是一样的思路,把三门单科成绩相加,再与内存中所有学生单科成绩相加进行遍历比较,得到排名。
? 可以改进的地方:对于总成绩相同的学生,可以按单科成绩进行再次排序,从而得到不同的名次,这样就不会因为同分而出现相同名次了。
? 2.读写函数的实现。由于没有文件读写函数运用的经验,所以一上手感觉很生疏,没有什么思绪。我也是一边学习一边编写,试验了很多方法,也走了不少弯路。本着边练边学的态度,我就从最简单方式先实现目标,再不断改进或者换用更好的方式。
? 早期的第一版代码中,我们使用的是栈内存,而且没有文件读写功能,简单实现了增删改查目标。栈内存是计算机自动释放的,一旦程序关闭,所有数据就消失了。因为栈内存非常小,所以对于大量信息读入肯定是不能实现的,因此要使用堆内存。
? 第二版设计中起初我使用了文本形式读写文件,而且读写形式是将指定文件和内存中所有内容整体读写。这种方法实现起来容易,但是效率非常低下,每对结构体中的信息进行改动(哪怕只是很小的一点改动),都要重新整体写入一次文件,这就导致了写入时间很长,而且如果写入人数较少,文件中依然存储了大量没有使用到的无效数据,无法正常打开。同时,这种方式有致命缺陷,当你越界写入以后,下一次读取文件会导致之后的数据全部都是乱码,直接破坏了文件的存储信息。
? 第三版我申请了堆内存来存储文件读入的数据,而且改用二进制方式读写文件,同时运用了fseek函数来操作文件指针实现指定位置的读写。这一版是最终版的文件读写函数,也是运行效率最高,最简洁的一版。因为每一个结构体变量名中存储的信息数据是连续的,所以相比于文本形式读写,二进读写比较方便。首先,定义一个结构体指针指向对应的结构体,再把指针指向申请的堆内存。比如说学生有500人,那么对应的堆内存大小则为500*sizeof(struct Student),即500个相同大小的结构体的总字节数。我们可以把他想象成一个500个元素的一维数组。这样把指针当做数组使用,通过加法就能指定位置存取相应结构体的信息。
未来改进的地方:
? 1.修复一些界面切换当中存在的小bug
? 2.对于数据的存储,可以考虑使用链式结构
? 3.对于数据输入增加边界判定,保证输入的规范性
? 4.对于密码设定,可以考虑使用更加复杂的规则,密码的存储也能使用加密算法,保证密码的安全性
内容总结
以上是互联网集市为您收集整理的C语言合作项目——学生信息管理系统全部内容,希望文章能够帮你解决C语言合作项目——学生信息管理系统所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。