学生成绩管理系统设计报告[内含C语言程序].docx
《学生成绩管理系统设计报告[内含C语言程序].docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计报告[内含C语言程序].docx(27页珍藏版)》请在冰豆网上搜索。
山东工商学院
信电学院
高级语言程序设计课程设计报告
高级语言程序设计课程设计报告
题目:
学生学籍信息管理系统设计
专 业:
自动化班 级:
自动142学 号:
14057217姓 名:
吕泽帅
指导教师:
杨莉
日 期:
2015年7月1日
山东工商学院信电学院
1、程序基本功能要求
(1)、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
(2)、总体设计
整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
(3)、详细设计
设计学生基本信息和学生成绩基本信息结构体数组。
2、总体设计
(1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。
综合成绩和实得学分通过计算得到。
(2)通过学号删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则在A.TXT查找该生信息,删除之。
注意:
C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
(3)通过姓名删除模块
通过菜单选择删除学生的功能,输入要删除学生的姓名,先在A.TXT中得到该生的学号,删除该生信息,再删除该学号对应的信息。
注意:
C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。
(5)查询模块
通过菜单选择查询功能,通过菜单输入所要查找的学生的姓名,按照基本查找算法查找A.TXT,查找对应的姓名,再查找该学生的课程情况,并统计各类成绩和实得总成绩,输出结果。
(6)成绩浏览模块
通过菜单选择对所有学生成绩进行输出显示。
(7)结束模块
通过菜单选择结束改程序。
3、详细设计(各模块程序设计组成框图、流程图)
(1)总流程图
主函数
界面
根据提示操作
退出
录入信息
通过学号
通过姓名删
用
学生成绩排序调
用
Student_SortBy
学生成绩查
所有成绩浏
调
用
删除
用
调
除 调
询
调
用
览
调
用
Student_I
nsert函
数
Student_D
elete函数
Name_Delet
e函数
totalGrade
和
Student_Se
lect函数
display
函数
Student_Displa
y函数
(2)函数说明
①.Student_Insert函数,该函数是录入函数,运用scanf语句对学生基本信息进行录入,并使用if语句判断是否继续录入。
②.Student_Delete函数,该函数是通过学号删除函数,首先利用scanf函数对所要删除学生的学号进行输入,然后在A.txt中查找此学生的信息并显示,最后询问是否确认删除,删除后询问是否继续进行删除操作。
③.Name_Delete函数,该函数是通过姓名删除学生信息函数,首先利用scanf函数对所要删除学生的姓名进行输入,然后在A.txt中查找此学生的信息并显示,最后询问是否确认删除,删除后询问是否继续进行删除操作。
④.Student_SortBytotalGrade和Student_Display函数,分别是按综合成绩值排序和显示学生信息函数,先对学生综合成绩进行排序再将其显示。
⑤.Student_Select函数,该函数是学生成绩查询函数,先用scanf函数输入所要查询学生的姓名,然后在A.txt中查找到该学生信息并显示出来,最后询问是否继续输入。
⑥.display函数,该函数是所有学生成绩浏览函数,通过调用A.txt将其中所有存在的学生成绩信息输出。
4、程序运行结果
(1)主界面
(2)学生成绩录入界面
(3)通过学号学生删除界面
(4)通过姓名学生删除界面
(5)学生成绩排序
(6)学生成绩查询
(7)所有学生成绩浏览
(8)退出
5、源程序代码
/*各模块分工已注明,未注明模块为小组成员共同负责*/#include
#include
//-------------------------------------------------------------
/*定义学生结构体*/
structStudent
{
charID[20];// 学号
charName[20];// 姓名charsex[5];//性别chardomNum;//宿舍号
inttel;//电话号
charcourseNo;//课程编号
charcourseName[20];//课程名称
floatcreditHour;//学分
doubletriGrade;//平时成绩占20%
doubleexperiGrade;// 实验成绩占10%
doubleexamGrade;// 卷面成绩占70%
doubletotalGrade;// 综合成绩
};
//-------------------------------------------------------------
/*声明学生数组及学生数量*/
structStudentstudents[1000];
intnum=0;
//-------------------------------------------------------------
/*求综合成绩值*/
doubletot(structStudentstu)
{
returnstu.triGrade*0.2+stu.experiGrade*0.1+stu.examGrade*0.7;
}
//-------------------------------------------------------------
/*通过学号返回数组下标,本模块由吕泽帅负责*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i{
if(strcmp(students[i].ID,id)==0)
{
returni;
}
}
return-1;
}
//-------------------------------------------------------------
/*通过姓名返回数组下标,本模块由吕泽帅负责*/
intStudent_SearchByName(charname[])
{
inti;
for(i=0;i{
if(strcmp(students[i].Name,name)==0)
{
returni;
}
}
return-1;
}
//-------------------------------------------------------------
/*显示单条学生记录*/
voidStudent_DisplaySingle(intindex)
{
printf("%10s%10s%11s%11s%11s%11s\n"," 学号","姓名","平时成绩","实验成绩","
卷面成绩","综合成绩");
printf(" \n");
printf("%9s%11s%10.2f%10.2f%10.2f%11.2f\n",students[index].ID,students[index].Name,
students[index].triGrade,students[index].experiGrade,students[index].examGrade,students[index].totalGrade);
}
//-------------------------------------------------------------
/*录入学生信息,本模块由苗振阳负责*/
voidStudent_Insert()
{
while
(1)
{
printf(" 请输入学号:
");
scanf("%s",&students[num].ID);
getchar();
printf(" 请输入姓名:
");
scanf("%s",&students[num].Name);
getchar();
printf(" 请输入性别:
");
scanf("%s",&students[num].sex);
getchar();
printf("请输入宿舍号:
");
scanf("%s",&students[num].domNum);
getchar();
printf("请输入电话号码:
");
scanf("%d",&students[num].tel);
getchar();
printf("请输入课程编号:
");
scanf("%s",&students[num].courseNo);
getchar();
printf("请输入课程名称:
");
scanf("%s",&students[num].courseName);
getchar();
printf(" 请输入该课程多少学分:
");
scanf("%f",&students[num].creditHour);
getcha