一. 程序功能说明
本程序可以实现以下功能
1.主功能:
1.登录认证和密码修改
2. 自动读取和存储数据
3. 添加,删除,修改学生信息(名字,学号,专业班级等)
4. 添加,删除,修改科目信息(开科时间,科目学分,科目名称等)
5. 添加,删除,修改分数信息
6. 多重搜索(学生姓名,学号,科目)
7. 按升序或降序显示所有学生任一科目的成绩(包括加权成绩)
注:程序中可以存储同名的学生,但是不允许学号相同,因此做了部分处理应对这种情况。当搜索某个同名学生时,倘若通过姓名搜索,则会显示所有该姓名的学生,然后再通过学号确定。
2.辅助功能
1. 全自动生成数据。为便于程序测试,由系统自动随机生成所有数据(包括学生姓名,学科的相关信息,学生的各科成绩等).
(本来想写一个程序自动测试脚本的,算法已经成熟了,然而精力有限未能完成)
二.总体算法设计
1.数据存储文件结构
a)本程序的二进制存储文件为stuinfo.dat,文件包含两个部分,文件头和数据区,类似于bmp文件结构.文件头中存储了文件信息,包括学生数,科目数,冗余块数,冗余块的位移地址数组,以及学科信息数组及用户的登录密码.当文件进行数据的操作时首先要读入文件头,当数据操作完后会自动修改头文件,头文件的存在使文件能高效的操作.当数据块删除时,不采取文件大块数据整体移动的物理删除方法,而是采用将数据块的flag标志位置零的逻辑删除方法,同时将该数据块的起始偏移地址写入冗余块数组中,当有新数据写入文件时,则由文件头中的冗余块数组得到某个冗余块的偏移地址,然后新数据即可写入该处,而不是简单地追加到文件末,此法可以有效地利用文件空间,减少冗余度.
b)由于数据存储文件为二进制形式,因此当对该文件进行数据写入或删除等操作后,无法掌握是否正确地完成了相关功能,文件结构是否保持正常.当程序出现异常时,无法及时定位导致异常的数据块,因此另外生成了一个辅助文件test.txt,将stuinfo.dat文件中的所有变量以文本形式一一写入test.txt,此法便于调试程序及对异常数据的准确定位
c)为便于测试程序,需要首先建立一个数据文件,同时输入大量数据,人工输入未免过于麻烦,因此我专门写了个模块用于随机产生数据文件,随机产生学生的姓名,学号,性别,所有科目的成绩,所有学科的学分,开课时间等.随机产生字符串时,需要抽取字符进行组合,对于随机产生姓名,其长度及字符都是随机的,而学号由十二位数字组成,学生的分数,学科的学分都为double型,因此产生随机整数乘以0.5,随机数产生时要严格控制其范围,如分数不能超过100,学分不超过6等.(本想使随机产生的成绩成正态分布,且学生间分数拉开,由于时间有限,算法研究未成熟,因此只能采用简单的随机数生成获得成绩).
源代码有4个头文件,5个C文件,1700多行,不便在此贴出
如有需要源代码的,请与我联系
请广大同志多多指教
>> 本文固定链接: http://www.vcgood.com/archives/2616
>> 转载请注明: jmy2446267 2008年08月13日 于 C语言帝国 发表
小弟想要一份学习学习,多谢楼主分享,wyong9@163.com
我也想学习学习。jxynanjing@126.com
我也来一份,学习学习
344155279@qq.com
给我来一份,谢谢啦
学习一下
857382945@qq.com
快给我一份,谢谢
363800649@qq.com
小弟急不可耐
weiiyonglong@126.com
感谢楼主分享
想学习一下,谢谢
xiangyihong@gmail.com
如果有空也给我来 一份吧x8990253@126.com
我也想学习你能把代码发给我吧 谢啦 我的423863665@qq.com
学习学习,能把代码发给我吧 谢啦 我的385294033@qq.com
zhoujiebin15@qq.com谢谢!
我也要一份,谢谢.
您好!我也想要一份,zizhengwang@163.com,谢谢了!
您好,我也想要一份谢谢!!
yangguo67890@163.com
小弟,要一份,麻烦传下谢了 founding1990@163.com
给我也来一份吧,参考参考学习下。960773740@qq.com
那就给我一份吧 正好现在在做这个东西 lizhidong3724@yahoo.cn
我也需要一份,主要想看一下登录功能!请楼主方便给发一份 122281021@qq.com 谢谢!
1264747292@qq.com,感谢楼主!
有时间也给我一份吧 hy_reg@hotmail.com 谢谢了
我想要一份。。。看看具体怎么编写实现的、、
我的地址c527380322@sina.com 麻烦你了 谢谢