学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学⽣成绩管理系统
科技⼤学
课程设计报告
学⽣:孟江曼学号:080705110 专业班级:软件081班
课程名称:数据结构课程设计
设计题⽬:学⽣成绩管理系统
学年学期:2010-2011学年第⼆学期
指导教师:⼴
2011年6⽉
⽬录
⼀.需求分析说明 (2)
1.主函数模块功能描述 (2)
2.⽂件合并模块功能描述 (2)
3.补考学⽣查找模块功能描述 (2)
4.排序模块功能描述 (2)
5.查找模块功能描述 (3)
6. 推出模块功能描述 (3)
⼆.概要设计说明 (3)
模块调⽤图: (3)
三.详细设计说明 (4)
1主函数模块 (4)
2⽂件合并模块 (4)
3学⽣信息查找模块 (5)
4补考学⽣查找模块 (8)
5排序模块 (9)
6退出模块 (9)
四.调试分析 (10)
五.⽤户使⽤说明 (10)
六.课程设计总结 (11)
七.测试结果 (12)
⼋.参考书⽬ (12)
⼀.需求分析说明
本系统实现了学⽣成绩管理系统所需的相关功能,其中的功能主要分为五项:试编写⼀管理系统,要求如下:
1)实现对两个⽂件数据进⾏合并,⽣成新⽂件3.txt
2)抽取出三科成绩中有补考的学⽣并保存在⼀个新⽂件4.txt
3)对合并后的⽂件3.txt中的数据按总分降序排序(⾄少采⽤两种排序⽅法实现)
4)输⼊⼀个学⽣后,能查找到此学⽣的信息并输出结果
5)要求使⽤结构体,链或数组等实现上述要求.
以下是各功能模块的功能描述:
1.主函数模块功能描述
本模块的主要功能是初始化图形界⾯,进⼊主菜单,调⽤各模块,实现软件功能。
2.⽂件合并模块功能描述
本模块的主要功能是实现对两个⽂件数据1.txt、2.txt进⾏合并,⽣成新⽂件3.txt
3.补考学⽣查找模块功能描述
本模块的主要功能是通过对于查找数据中的各科成绩来判断该学⽣是否需要补考,如果需要补考则将其信息写⼊另外⼀个⽂件。
4.排序模块功能描述
本模块的主要功能是实现对合并后的数据3.txt的容按总分进⾏降序排序,系统采⽤的排序⽅式有快速排序和选择排序。根据⽤户的选择,进⾏不同排
序⽅式的选择。
5.查找模块功能描述
该模块的功能是当⽤户输⼊学⽣信息以后,可以根据⽤户需要按进⾏不同⽅式的查找。第⼀种是在⽂件3.txt中查找;第⼆种是在结构体中查找。
6.推出模块功能描述
调⽤exit函数,退出系统。
⼆.概要设计说明
模块调⽤图:
1. void Unitedfile()//合并1.txt和
2.txt为
3.txt
2. void findout()//抽取出三科成绩中有补考的学⽣并保存在⼀个新⽂件4.txt
3. void sortfile()//提供两种排序⽅法
4. void xuanze() //对合并后的⽂件3.txt中的数据按总分降序排序
5. void QSort(int low,int high)//快速排序
6. void kuaisu()//读取⽂件,快速排序,将结果写⼊3.txt
7. void findoutstudent()//提供两种查找⽅法
8. void derectfindoutstudent()//输⼊⼀个学⽣,查找到此学⽣的信息并输出结果
9. void autofindoutstudent()//从结构体数组中查找
10. exit()//退出
三.详细设计说明
1主函数模块
调⽤各功能模块,实现⽂件合并、查找学⽣信息、排序等功能。
2⽂件合并模块
实现对两个⽂件数据进⾏合并,⽣成新⽂件3.txt。调⽤函数Unitedfile()来实现,函数以读的⽅式打开1.txt⽂件,以写的⽅式打开3.txt⽂件,从1.txt 读⼊⼀个数据并写⼊3.txt⽂件,直到遇到1.txt⽂件结束。关闭1.txt⽂件,再以读的⽅式打开2.txt⽂件,⽤上述⽅式直到遇到2.txt⽂件结束。关闭
2.txt,
3.txt⽂件。实现对于⽂件的合并。
void Unitedfile()//合并1.txt和2.txt为3.txt
{
FILE *fp,*p;
Student studd;
fp=fopen("1.txt","r");//以读的⽅式打开1.txt
p=fopen("3.txt","w");//以写的⽅式打开3.txt
while(fscanf(fp,"%s%s%d%d%d",,studd.id,&studd.chines e,&studd.math,&studd.english )!=EOF)
{
fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",,studd.id,st
udd.chinese,studd.math,studd.english );
}//读取1.txt的数据进⼊结构体中,写⼊3.txt,继续读取直结束
fclose(fp);//关闭⽂件1.txt
fp=fopen("2.txt","r");//以写的⽅式打开2.txt
while(fscanf(fp,"%s%s%d%d%d",,studd.id,&studd.chines e,&studd.math,&studd.english )!=EOF)
{
fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",,studd.id,st udd.chinese,studd.math,studd.english );
}
fclose(fp);
fclose(p);
}
3学⽣信息查找模块
输⼊⼀个学⽣后,能查找到此学⽣的信息并输出结果。调⽤函数findoutstudent()来实现。函数也提供了两种查找⽅法,通过调⽤函数derectfindoutstudent()实现从⽂件从3.txt中逐个读⼊数据,再进⾏查找判断,如果找到所需要的数据,则查找结束,否则继续查找直⾄⽂件结束。autofindoutstudent()在进⾏第三步的过程中,已经把3.txt中的学⽣数据读⼊了结构体数组当中,调⽤函数autofindoutstudent()直接从结构体中进⾏查找。
void derectfindoutstudent()//输⼊⼀个学⽣,查找到此学⽣的信息并输出结果
{
char NAME[30];
int flag=0;