C语言实现学生成绩管理系统Word文件下载.docx
- 文档编号:22462191
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:17
- 大小:103.42KB
C语言实现学生成绩管理系统Word文件下载.docx
《C语言实现学生成绩管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言实现学生成绩管理系统Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
小结与体会
总体方案与说明
③
④
⑤
⑥
附录:
①源程序(必须有简单注释)②使用说明③参考资料
2013年6月22日
2013年6月24日
2.每位学生应独立完成各自的任务且每天至少在设计室工作半天;
指导教师签名:
教研室主任(或责任教师)签名:
1.设计题目及要求
1.1设计题目
用C语言实现成绩统计程序的设计。
1.2具体任务
对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行
记录,信息内容包含:
(1)学生的学号
(2)学生的姓名(3)学生的成绩。
假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
2.系统设计思想
2.1系统设计思想
在编写成绩统计管理系统程序的过程中运用结构体,把问题中所涉及的变量定义在结构体中,利用函数来管理学生成绩,循环语句控制所选择的选择界面,case语句进行选择。
然后利用相关变量函数把学生成绩记录下来,利用循环语句再回到选择界面,利用查找函数,统计函数来查找统计学生成绩,利用冒泡排序法来对学生平均成绩进行排序。
然后按成绩高低对学生进行排名。
2.2系统算法设计
2.2.1系统模块结构图
系统结构如图2-1所示
菜单选择
结束
3.1开发环境
VisualC++6.0,MicrosoftWindowsXP
3.2程序调试
3.2.1主界面调试
选择界面如图3-1所示
3.2.2
3.2.3
成绩录入模块成绩录入界面录入界面如图3-2所示
图3-2成绩录入模块成绩查询模块成绩查询界面如图3-3所示
图3-3成绩查询模块
3.2.4
图3-4
成绩统计模块
成绩统计界面如图3-4所示
4.设计评价与修改
在数据结构课程设计过程中,许多知识点都没有学过,都要靠自己到课外的资料中去查
找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,
而是窗
中出现混乱,要经过自己一遍遍的调试与修改,和老师同学的帮助下逐渐改进完善,
最后才
渐渐的成型。
运行的也基本达到所需要的运算要求。
5.心得与体会
回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论
到实践,在整整一个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩
固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这
次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不
够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正
为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中
遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的
问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得
不够深刻,掌握得不够牢固,比如说结构体。
通过这次课程设计之后,一定把以
前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知
识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面
做得还不够。
这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了
解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我
们对待事情要认真!
在编写程序的过程中,错误不断出现,不同的类型(如少写了
一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,
能不能坚持到底,不能半途而废。
使自己认识之前的不足与缺点,利于以后的改正与今后学习的发展方向,希望每
一次的课程设计都能有一个很好的提高
参考文献
[1]
[2]
[3]
[4]
[5]
[6]
詹春华李小艳黄启荃?
《计算机应用基础》?
科学出版社2011.5
詹春华杨沙?
《C语言程序设计》?
科学出版社2011.8
谭浩强-C语言程序设计•北京•清华大学腋社,2000年1月。
徐孝凯魏荣?
《数据结构》?
机械工业出版社?
1996年徐孝凯?
《数据结构简明教程》?
清华大学出版社?
1995年陈文博朱青?
《数据结构与算法》?
1996年
程序代码
#include<
stdlib.h>
stdio.h>
#include<
string.h>
#defineMAXN35#defineMAX_NAME256typedefstructstudent//{
intno;
charname[MAX_NAME];
doubledoubledoubledoubledouble
Chinese;
math;
English;
mark_ave;
mark_tot;
学生信息
}STUDENT;
/*输入信息子程序
voidinput(STUDENT*data,int*len){
putchar('
\n'
);
printf("
%s\n"
"
*/
请输入新的记录,如果需要退出当前菜单请输入
printf("
printf("
如:
\n"
1\n"
小明939589\n"
格式:
\n学号\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++)putchar('
='
for(i=0;
i<
len;
i++){
%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);
}for(i=0;
按回车键继续."
getchar();
}
/*排序子程序--
voidsort(STUDENT*data,intlen){
inti,j,k;
STUDENTtemp;
for(i=0;
len-1;
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;
请输入需要查找的学生的学号,退出当前菜单请输入-1."
/*exitthefinesub
find_no);
if(find_no==-1)return;
program*/
while(data[result].no
!
=find_no&
&
result<
len)result
++;
data[result].no);
data[result].name);
data[result].Chinese);
data[result].math);
data[result].English);
data[result].mark_ave);
data[result].mark_tot);
i++)
putchar('
gotolab;
}/*插入子程序-
voidinsert(STUDENT*data,int*len){
intno,pos;
doubleChinese,math,English,mark_ave,mark_tot;
inti;
学号"
姓名语文数学英语"
name,&
Chinese,&
math,&
English);
lab:
输入新的记录,退出当前菜单请输入-1."
格式:
if(no==-1)return;
data[*len].no=no;
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;
(*len)++;
gotolab;
/*删除子程序*/
voiddelete_item(STUDENT*data,int*len)
{
intno,i,pos;
pos=0;
输入需要删除的学生的学号,退出当前菜单
请输入-1."
while((data[pos].no!
=no)&
*len))pos=pos
+1;
if(pos>
=*len){
未找到需要删除的学生"
else{
for(i=pos+1;
i<
*len;
data[i-1]=data[i];
*len=*len-1;
if(*len==0){
没有任何记录,请按回车键返回."
return;
/*统计子程序-
voidstat(STUDENT*data,intlen){
intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0;
for(i=0;
if(data[i].mark_ave<
=59)no_59++;
elseif(data[i].mark_ave<
=69)no_69++;
=79)no_79++;
=89)no_89++;
elseno_100++;
}system("
分数"
0--59"
60--69"
70--79"
80--89"
90--100"
学生"
%10d"
no_59);
no_69);
no_79);
no_89);
no_100);
按回车键返回"
getchar();
/*
voidpaint(){inti;
%55s\n"
伟\n"
1出信息\n"
学号查找\n"
显示信息子程序
武汉理工大学华夏学院学生成绩管理系统\n"
制作者:
武汉理工大学华夏学院软件
输入信息
按平均分排序
1121班钟
学号删除\n"
存到文件\n"
插入
按平均分输出统计信息
退出\n"
=79;
请输入各操作对应的序号:
"
voidsave(STUDENT*data,intlen)//将数据保存到文件{
数学"
英语"
平均分"
总分"
FILE*fp;
fp=fopen("
成绩统计表.txt"
"
w"
fprintf(fp,"
%10s\n"
fprintf(fp,"
=======\n"
%10.1lf\n"
========\n"
fclose(fp);
文件已保存到\"
成绩统计表.txt\"
/*
voidmain()
STUDENTdata[MAXN];
intlen=0;
charctrl_ch;
paint();
scanf("
%c"
ctrl_ch);
while(ctrl_ch!
='
0'
){
switch(ctrl_ch){
case'
1'
:
input(data,&
len);
break;
case2:
output(data,len);
case3:
sort(data,len);
4'
find(data,len);
5'
insert(data,&
6'
delete_item(data,&
len);
7'
stat(data,len);
8'
save(data,len);
default:
输入错误!
);
if(ctrl_ch!
)printf("
)paint();
scanf("
设计过程中质疑(或答辩)记载:
1.提问:
数据在程序中是怎样存储的?
答:
数据是以数组的形式存储在结构体数组中。
2.提问:
怎样实现由用户自己选择学生个数和科目数?
通过改变宏定义所定义的数目来改变,或者通过输入语句来由用户自己确定。
指导教师评语:
2013
签名:
年7月1日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 学生 成绩管理系统