C语言课程设计学生成绩管理系统课案Word格式.docx
《C语言课程设计学生成绩管理系统课案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统课案Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

(成绩信息用文件保存,可以一次完成若干条记录的输入。
)
(3)、成绩信息显示浏览功能:
完成全部学生记录的显示。
(4)、查询功能:
完成按姓名查找学生记录,并显示。
(5)成绩信息的删除:
按学号进行删除某学生的成绩.
(6)、排序功能:
按学生平均成绩进行排序。
(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
四课程设计应完成的工作
(1)编写算法;
(2)算法测试,并有具体的测试结果和结果分析;
(3)撰写课程设计报告。
内容包括:
1)封面扉页
2)设计任务书
3)目录
4)总体设计方案(包括流程图)
5)使用说明及运行实例(包括界面)
6)成员设计内容简介
7)项目源程序代码(注意注释的使用)
8)指导教师评语
五总体设计(包含几大功能模块)
1、成绩录入功能
2、成绩输出功能
3、成绩查询功能
4、删除模块
5、排序功能
6、统计功能
7、退出系统
六详细设计(各功能模块的具体实现算法——流程图)
6.1各函数的功能和实现
1、输入初始的学生信息:
输入信息包括学生的姓名、学号以及学生的成绩等相关信息;
可用函数voidinput(STUDENT*data,int*len)来实现此操作。
2、成绩输出模块:
输出学生的信息以及成绩voidoutput(STUDENT*data,intlen):
通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage()
、maverage()
、eaverage()
和comaverage()
来输出成绩的平均分数、最高和最低分数。
3、成绩查询模块:
可用voidfind(STUDENT*data,intlen)
来实现。
找到就输出此学生全部信息。
4、删除模块:
用函数voiddelete_item(STUDENT*data,int*len)来实现
5、排序模块:
用函数voidsort(STUDENT*data,intlen)来实现
6、统计功能能:
用函数voidstat(STUDENT*data,intlen)来实现
7、退出系统:
可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
如图6.1
图6.1
七调试分析(包含各模块的测试用例,及测试结果)
7.1源程序
#include<
stdlib.h>
stdio.h>
string.h>
#defineMAXN35
#defineMAX_NAME256
typedefstructstudent//学生信息
{
intno;
charname[MAX_NAME];
doubleChinese;
doublemath;
doubleEnglish;
doublemark_ave;
doublemark_tot;
}STUDENT;
/*-----------输入信息子程序---------*/
voidinput(STUDENT*data,int*len)
putchar('
\n'
);
printf("
%s\n"
"
请输入新的记录,如果需要退出当前菜单请输入-1."
格式:
\n学号\n"
姓名语文数学英语"
如:
\n"
1\n"
杨江彬939589\n"
scanf("
%d"
&
no);
while(no!
=-1){
data[*len].no=no;
scanf("
%s%lf%lf%lf"
data[*len].name,&
data[*len].Chinese,&
data[*len].math,&
data[*len].English);
data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*len].English)/3.0;
data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*len].English;
(*len)++;
}
/*---------------输出信息子程序---------------*/
voidoutput(STUDENT*data,intlen)
inti;
system("
cls"
%8s"
学号"
姓名"
语文"
数学"
%10s"
英语"
%12s"
平均分"
总分"
for(i=0;
i<
80;
i++)
='
for(i=0;
i<
len;
{
%8d"
data[i].no);
data[i].name);
%8.1lf"
data[i].Chinese);
data[i].math);
%10.1lf"
data[i].English);
%12.1lf"
data[i].mark_ave);
data[i].mark_tot);
}
按回车键继续."
getchar();
}
/*--------------排序子程序------------*/
voidsort(STUDENT*data,intlen)
inti,j,k;
STUDENTtemp;
for(i=0;
len-1;
i++){
for(k=i,j=i+1;
j<
len;
j++)
if(data[k].mark_ave>
data[j].mark_ave)k=j;
if(k!
=i){
temp=data[i];
data[i]=data[k];
data[k]=temp;
}
/*--------------------搜索子程序-----------------------*/
voidfind(STUDENT*data,intlen)
intfind_no,result;
lab:
result=0;
printf("
请输入需要查找的学生的学号,退出当前菜单请输入-1."
find_no);
if(find_no==-1)return;
/*exitthefinesubprogram*/
while(data[result].no!
=find_no&
&
result<
len)result++;
if(result>
=len){
printf("
未查询到相关信息"
gotolab;
}
else{
system("
查询信息如下:
"
for(i=0;
putchar('
putchar('
data[result].no);
data[result].name);
data[result].Chinese);
data[result].math);
data[result].English);
data[result].mark_ave);
data[result].mark_tot);
for(i=0;
/*-----------------插入子程序-------------*/
voidinsert(STUDENT*data,int*len)
intno,pos;
doubleChinese,math,English,mark_ave,mark_tot;
输入新的记录,退出当前菜单请输入-1."
姓名语文数学英语"
if(no==-1)return;
name,&
Chinese,&
math,&
English);
mark_ave=(Chinese+math+English)/3.0;
mark_tot=Chinese+math+English;
pos=0;
while((data[pos].mark_ave<
mark_ave)&
(pos<
*len))
pos++;
for(i=*len-1;
i>
=pos;
i--)
data[i+1]=data[i];
data[pos].no=no;
strcpy(data[pos].name,name);
data[pos].Chinese=Chinese;
data[pos].math=math;
data[pos].English=English;
data[pos].mark_ave=mark_ave;
data[pos].mark_tot=mark_tot;
gotolab;
/*-------------删除子程序--------------*/
voiddelete_item(STUDENT*data,int*len)
intno,i,pos;
pos=0;
输入需要删除的学生的学号,退出当前菜单请输入-1完整版联系qq771069075
图7.9
八总结
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
解决的这个问题的办法是调整。
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。
回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整两个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!
在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。
但我们总结出了一点点的经验如下:
1、要对系统的功能和要求做出详细的分析,并合理分解任务。
2、把分解出来的子任务,做给一个相对独立的模块。
3、在设计一个模块之前,要简单构想一下总界面的显视情况。
4、针对构想出来的界面进行程序的编写。
九成员设计内容
小组负责人一般进行总体设计(包括设计流程、模块函数原型接口设计以及重要模块的程序设计,以及模块组装调试,),其他成员负责模块程序设计,并独立调试自己的程序。
十参考资料
[1]谭浩强.C程序设计(第三版).北京:
清华大学出版社,2005
[2]谭浩强.C程序设计题解与上机指导(第三版).北京:
清华大学出版社,2005
[3]李春葆,张植民,肖忠付.C语言设计题典[M].北京:
清华大学出版社,2002
[4]网上相关资料