学生成绩记录簿设计Word文档格式.docx
《学生成绩记录簿设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩记录簿设计Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
流程图是课程设计中极其重要的一部分,只有充分对题目进行分析,将问题细致化,才能更好的解决问题。
录入流程图
显示流程图
查询流程图
修改流程图
删除流程图
2概要设计
学生成绩记录簿设计是一个教育学生单位不可或缺的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩记录簿设计能为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着血多缺点。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算及应用的一部分,使用计算机对学生信息及成绩进行管理,具有手工管理所无法比拟的优点。
所以设计学生成绩记录簿设计是极其需要的。
随着计算机的发展,高级语言也随着产生,c语言就是其中一种,并成为国内外广泛使用的计算机语言。
学会使用c语言进行课程设计是计算机工作者的一项基本功,所以进行课程设计也是必不可少的。
此次课程设计根据是根据要求设计一个系统,其中要利用c语言中的结构体、子函数主函数、选择语句、条件语句等知识进行程序编写。
相应的函数,可实现成绩的录用、修改等要求,并在函数右侧备注。
3程序代码
#include<
stdio.h>
stdlib.h>
string.h>
#defineMAX1000
typedefstructLesson//定义课程结构体
{
intLesson_Num;
charLesson_Name[50];
intLesson_Mark;
intLesson_Credit;
}Lesson;
typedefstructStudent//定义学生的结构体
charName[50];
intNum;
intLesson_Count;
LessonL[20];
}Student;
StudentS[MAX];
staticintStudent_Count=0;
//记录学生数的变量
voidPrintInterface();
//打印界面
intAddStudent();
//添加,带返回值,提示操作成功
intDelStudent();
//删除,带返回值,提示操作成功
voidCheckStudent();
//查学生成绩
voidCheckClass();
//查班成绩表
voidWriteFile();
//写入文本文件
voidReadFile();
//读取文本文件
voidmain()
intChoice;
while
(1)
{
PrintInterface();
scanf("
%d%*c"
&
Choice);
//"
%*c"
是吸收回车的,因为后面会输入字母类型
if(Choice>
=0&
&
Choice<
=6)//选择操作合法
switch(Choice)
case0:
exit
(1);
case1:
system("
cls"
);
if(AddStudent())printf("
\n添加成功...回车继续\n"
elseprintf("
\n添加失败...回车继续\n"
getchar();
break;
}
case2:
if(DelStudent())printf("
\n删除成功...回车继续\n"
\n删除失败...回车继续\n"
case3:
CheckStudent();
case4:
CheckClass();
case5:
WriteFile();
system("
break;
case6:
ReadFile();
default:
;
else
printf("
无此功能..重新选择..回车确定\n"
//选择操作非法
//清屏函数
}
voidPrintInterface()
\t--------------------------\n"
\t|1、添加|\n"
\t||\n"
\t|2、删除|\n"
\t|3、查学生成绩|\n"
\t|4、查班成绩表|\n"
\t|5、写入文本文件|\n"
\t|6、读取文本文件|\n"
\t|0、退出|\n"
\t选择操作:
"
intAddStudent()
intS_count,i,j;
\n添加中......\n"
\n添加学生人数(如1、2……999):
%d"
S_count);
if(Student_Count+S_count>
=MAX)return0;
//超过了数组上限
for(i=Student_Count;
i<
Student_Count+S_count;
i++)
\n\t第%d个学生:
\n"
i-Student_Count+1);
\n\t学生学号:
S[i].Num);
\n\t学生姓名:
gets(S[i].Name);
\n\t该学生所修课程数:
S[i].Lesson_Count);
for(j=0;
j<
S[i].Lesson_Count;
j++)
\n\t第%d门课:
j+1);
\n\t\t课程编号:
S[i].L[j].Lesson_Num);
\n\t\t课程名称:
gets(S[i].L[j].Lesson_Name);
\n\t\t课程成绩:
S[i].L[j].Lesson_Mark);
\n\t\t课程学分:
S[i].L[j].Lesson_Credit);
if(S[i].L[j].Lesson_Mark<
60)S[i].L[j].Lesson_Credit=0;
//不及格的课程学分为0
Student_Count+=S_count;
return1;
intDelStudent()
char*D_Name;
intD_Num;
inti,j;
\n填写待删除学生的信息:
\n学生姓名:
gets(D_Name);
\n学生学号:
D_Num);
for(i=0;
Student_Count;
if(!
strcmp(S[i].Name,D_Name)&
S[i].Num==D_Num)
\n找到该学生,删除中......\n"
for(j=i+1;
S[j-1]=S[j];
if(i==Student_Count)
\n未找到该学生...请核对所填信息\n\n"
return0;
Student_Count--;
voidCheckStudent()
intC_Choice;
charC_Name[50];
intC_Num;
\n输入所查学生信息(1.姓名\\2.学号)选择:
C_Choice);
\n查找中......\n"
if(C_Choice==1||C_Choice==2)//选择合法
if(C_Choice==1)
\n姓名:
gets(C_Name);
i++)//全部穷举,防止同名同姓
strcmp(S[i].Name,C_Name))
\n学号:
%d\t姓名:
%s\n"
S[i].Num,S[i].Name);
\n课程编号\t课程名称\t课程成绩\t课程学分\n"
-----------------------------------------------------\n"
%d\t\t%s\t\t%d\t\t%d\n"
S[i].L[j].Lesson_Num,
S[i].L[j].Lesson_Name,S[i].L[j].Lesson_Mark,
S[i].L[j].Lesson_Credit);
\n\n"
C_Num);
i++)//不用全部穷举,学号唯一
if(S[i].Num==C_Num)
查找完毕...回车继续\n"
else//选择不合法
选择错误...回车继续\n"
return;
voidCheckClass()
intC_LNum;
doubleSSNum=0,PassSNum=0,SMark=0;
\n请输入课程编号:
C_LNum);
\n查找中......\n\n"
学号\t姓名\t课程名称\t课程成绩\t课程学分\n"
----------------------------------------------------\n"
if(S[i].L[j].Lesson_Num==C_LNum)
%d\t%s\t%s\t\t%d\t\t%d\n"
S[i].Num,S[i].Name,S[i].L[j].Lesson_Name,
S[i].L[j].Lesson_Mark,S[i].L[j].Lesson_Credit);
SMark+=S[i].L[j].Lesson_Mark;
SSNum++;
if(S[i].L[j].Lesson_Mark>
=60)PassSNum++;
\n平均分:
%.2lf\t及格率:
%.2lf%%\n\n"
SMark/SSNum,PassSNum/SSNum*100);
\n查找完毕...回车继续\n"
voidWriteFile()
FILE*fp;
charAdr[100];
\n请输入写入的文件地址:
\n\n地址输入格式:
例如d:
\\\\Student.txt(\\\\为转义字符):
%s%*c"
Adr);
\n写入中......\n"
if(fp=fopen(Adr,"
w"
))//写入文件
fprintf(fp,"
%d\n"
Student_Count);
%d\t%s\t%d\n"
S[i].Num,S[i].Name,S[i].Lesson_Count);
%d\t%s\t%d\t%d\n"
S[i].L[j].Lesson_Name,S[i].L[j].Lesson_Mark,
\n写入完成...回车继续\n"
fclose(fp);
\n写入失败...回车继续\n"
voidReadFile()
\n请输入读取(为防止读入错误,希望与写入文件内容格式一致)的文件地址:
\n读取中......\n"
r"
))
fscanf(fp,"
&
Student_Count);
%d%s%d"
S[i].Num,&
S[i].Name,&
%d%s%d%d"
S[i].L[j].Lesson_Num,
&
S[i].L[j].Lesson_Name,&
S[i].L[j].Lesson_Mark,
\n读取成功...回车继续\n"
\n读取失败...回车继续\n"
4设计结果
5总结
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
通过这次的课程设计,能加强我们对程序的思考、设计、分析、理解和解决问题的能力。
对于我们初学者来说,主要是学习成长设计的方法,进行程序设计的基本训练为将来进一步学习打下基础。
课程设计不能之掌握概念,还要动手编程、上机调试运行。
只有自己动手,才能学的更多。
参考文献
[1]谭浩强著《C程序设计》(第三版).北京:
清华大学出版社
[2]袁志祥、秦锋主编《数据结构(c语言版)例题详解与课程设计指导》第二版中国科学技术大学出版社出版
[3]谭浩强编《C语言程序设计题解与上机指导》清华大学出版社2000年11月
[4]谭浩强.C程序设计[M].3版.北京:
清华大学出版社,2005