C语言程序设计成绩管理系统.docx
《C语言程序设计成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计成绩管理系统.docx(34页珍藏版)》请在冰豆网上搜索。
C语言程序设计成绩管理系统
内蒙古科技大学
本科生课程设计论文
题目:
C语言课程设计
——学生成绩管理系统
学生姓名:
黄亚坤
学号:
1367159105
专业:
软件
班级:
软件一班
指导老师:
王丽颖
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
学生成绩管理系统
指导教师
王丽颖
时间
2013.12.30——2014.1.3
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
某班学生成绩管理,包括以下功能:
v从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里
v打开文件后,计算每个人的总分和平均分,排序并保存
v具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)
v具有插入、删除和修改功能
v具有输出文件数据信息的功能
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
2.《C语言程序设计课程设计》,刘振安,机械工业出版社
第一章需求分析
1.1引言
近年来,随着学校规模的不断扩大,学生数量也相应的增加,有关学生考试的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致学生成绩管理上的混乱,人力与物力过多浪费,学生成绩管理费用的增加,从而使学校的负担过重,影响整个学校的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的学生成绩管理系统,对学生成绩进行集中统一的管理。
系统开发的总的设计目标是学生成绩管理的系统化、规范化和自动化,实现对学绩集中统一的管理。
1.2任务概述
概述本系统通过管学生成绩信息可以进行学生成成绩信息的插入,修改,对学生的平均分进行排序,为学生成绩供准确的资料,提高了人员的工作效率
1.3功能需求
系统以菜单方式工作,编写存放有学生信息,包含学生姓名,学号、学生成绩,总分,平均分,并可对这些信息进行浏览,建立学生信息的文件,并可以对学生信息进行插入,删除。
根据学号对学生信息进行查找,修改,根据学生成绩的平均分进行计算排序
第二章概要设计
2.1总体设计
第三章详细设计
3.1输入模块设计
打开学生信息输入函数
{
读入学生信息
并进行存储
}
3.2查找模块设计
打开学生信息查询函数
{
按姓名查询
输入姓名(找不到结束)
按学号查询
输入学号(找不到结束)
}
3.3修改模块设计
{
进入学生信息修改函数
输入修改的学生学号
及修改后的学生信息(
前提是输入的学生学号正确)
}
3.4删除模块设计
{
进入学生信息修改模块
输入需要删除的学生学号
核对学生学号
删除成功
}
3.5插入模块设计
{
进入学生信息插入模块
输入需要插入的学生信息
插入成功
}
第四章测试分析
4.1测试程序执行情况
把下例中的数据输入到程序中,进行运行,即可得到此学生成绩管理系统的执行情况。
学号
姓名
语文成绩
数学成绩
英语成绩
物理成绩
化学成绩
13042001
01
78
75
87
96
92
13042002
02
89
86
95
92
90
13042003
03
87
83
80
90
97
13042004
04
67
78
98
80
92
第五章用户手册(可选)
5.1使用说明
打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。
点击开始菜单,进入菜单选择。
输入:
将所需的信息输入。
输出:
学号,姓名,成绩,排名,输入:
根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。
当错误不能改正,则退出浏览信息。
进入查询信息:
则屏幕会出现两个对话框——按作学号和按姓名查找,查处相应的所需信息,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。
当信息输入正确,进入你所需要的菜单程序中:
学生信息:
显示学生的成绩,学号,姓名,排序等
第六章课程设计总结
该系统以学生成绩信息管理为背景,并且有一定的可行性和安全性,确保了各项指定功能得以运行。
本系统以基本函数、结构体、枚举性、文件以及链表等多方位知识贯穿实现。
通过此次程序设计实践,是对所学知识的综合运用,也是程序设计得以提高表现。
通过此次编程培养了我们结构化程序设计的思想,加深了对高级语言基本语言要素和控制结构的理解,锻炼我们独立思考制作程序的能力,并且掌握了一些课程设计的相关知识与实践操作能力,为以后的学习提供了锻炼的机会。
并且我对c语言这门课程有了更好的了解
附录:
程序代码
#include
#include
typedefstructkecheng
{
intyuwen;
intshuxue;
intyingyu;
intwuli;
inthuaxue;
}kecheng;
typedefstructstudent
{
intstudentxuehao;
charxingming[20];
kechengchengji;
intzongfen;
intpinjunfen;
}student;
studenta[100];
inti=0;
voidshuru();
voidjisuan();
voidchaxun();
voidcharu();
voidshanchu();
voidxiugai();
voidshuchu();
intmain()
{
intt;
printf("\n\n\n\n");
printf("***********\n");
printf("**********************\n");
printf("\n");
printf("****\n");
printf("*欢迎来到学生成绩管理系统*\n");
printf("****\n");
printf("************************\n");
printf("************************\n");
printf("***请选折你需要执行的操作***\n");
printf("\n");
printf("***************\n");
printf("****按1输入****\n");
printf("***************\n");
printf("****按2计算排序***\n");
printf("***************\n");
printf("****按3查询****\n");
printf("***************\n");
printf("****按4插入****\n");
printf("***************\n");
printf("****按5删除****\n");
printf("***************\n");
printf("****按6修改****\n");
printf("***************\n");
printf("****按7输出****\n");
printf("***************\n");
printf("****按0退出****\n");
printf("***************\n");
printf("\n");
while(scanf("%d",&t)&&t!
=0)
{
switch(t)
{
case1:
shuru();
break;
case2:
jisuan();
break;
case3:
chaxun();
break;
case4:
charu();
break;
case5:
shanchu();
break;
case6:
xiugai();
break;
case7:
shuchu();
break;
default:
printf("*************\n");
printf("****\n");
printf("*输入不符合要求请重新输入!
*\n");
printf("\n");
printf("***************************\n");
}
}
return0;
}
voidshuru()
{
printf("\n");
printf("****************************\n");
printf("****************************\n");
printf("****\n");
printf("****\n");
printf("**请输入学生学号**\n");
printf("****\n");
printf("**请输入姓名**\n");
printf("****\n");
printf("**请输入语文成绩**\n");
printf("****\n");
printf("**请输入数学成绩**\n");
printf("****\n");
printf("**请输入英语成绩**\n");
printf("****\n");
printf("**请输入物理成绩**\n");
printf("****\n");
printf("**请输入化学成绩**\n");
printf("****\n");
printf("****\n");
printf("****\n");
printf("****************************\n");
printf("****************************\n");
scanf("%d",&a[i].studentxuehao);
getchar();
scanf("%s",a[i].xingming);
scanf("%d",&a[i].chengji.yuwen);
scanf("%d",&a[i].chengji.shuxue);
scanf("%d",&a[i].chengji.yingyu);
scanf("%d",&a[i].chengji.wuli);
scanf("%d",&a[i].chengji.huaxue);
i++;
printf("\n");
printf("***********\n");
printf("***********\n");
printf("\n");
printf("*输入成功!
*\n");
printf("\n");
printf("***********\n");
printf("***********\n");
printf("\n");
}
voidjisuan()
{
intj,z;
studentt;
for(j=0;j
{
a[j].zongfen=a[j].chengji.yuwen+a[j].chengji.shuxue+a[j].chengji.yingyu+a[j].chengji.wuli+a[j].chengji.huaxue;
a[j].pinjunfen=a[j].zongfen/5;
}
for(z=0;z{
for(j=0;j{
if(a[j].pinjunfen>a[j+1].pinjunfen)
t=a[j],a[j]=a[j+1],a[j+1]=t;
}
}
printf("\n");
printf("********\n");
printf("**排列完毕**\n");
printf("\n");
printf("************\n");
}
voidchaxun()
{
intj,k,z=0,c,e=1;
charb[20];
printf("**********************************\n");
printf("****\n");
printf("**请选择按学号查询或者按名字查询**\n");
printf("**按1学号查询**\n");
printf("**按2姓名查询**\n");
printf("****\n");
printf("**********************************\n");
scanf("%d",&c);
if(c==1)
{
printf("***********\n");
printf("***请输入你要查询的学号:
***");
printf("***********\n");
scanf("%d",&k);
for(j=0;j
{
if(a[j].studentxuehao==k)
z=1,printf("学号:
%d名字:
%s语文成绩:
%d数学成绩:
%d英语成绩:
%d物理成绩:
%d化学成绩:
%d平均分:
%d\n",a[j].studentxuehao,a[j].xingming,a[j].chengji.yuwen,a[j].chengji.shuxue,a[j].chengji.yingyu,a[j].chengji.wuli,a[j].chengji.huaxue,a[j].pinjunfen);
}
if(z==0)
{
printf("***************\n");
printf("*你输入的学号有误*\n");
printf("***************\n");
}
}
if(c==2)
{
printf("***********\n");
printf("**请输入你要查询的名字:
**");
printf("*************************");
scanf("%s",b);
for(j=0;j
{
e=strcmp(b,a[j].xingming);
if(e==0)
z=1,printf("学号:
%d名字:
%s语文成绩:
%d数学成绩:
%d英语成绩:
%d物理成绩:
%d化学成绩:
%d平均分:
%d\n",a[j].studentxuehao,a[j].xingming,a[j].chengji.yuwen,a[j].chengji.shuxue,a[j].chengji.yingyu,a[j].chengji.wuli,a[j].chengji.huaxue,a[j].pinjunfen);
}
if(z==0)
{
printf("********\n");
printf("**你输入的名字有误!
**\n");
}
}
}
voidcharu()
{
intj,c=0,k=0;
studentt;
i++;
printf("************\n");
printf("请输入你要插入的学生信息\n");
printf("**************************\n");
scanf("%d",&t.studentxuehao);
getchar();
scanf("%s",t.xingming);
scanf("%d",&t.chengji.yuwen);
scanf("%d",&t.chengji.shuxue);
scanf("%d",&t.chengji.yingyu);
scanf("%d",&t.chengji.wuli);
scanf("%d",&t.chengji.huaxue);
t.zongfen=t.chengji.yuwen+t.chengji.shuxue+t.chengji.yingyu+t.chengji.wuli+t.chengji.huaxue;
t.pinjunfen=t.zongfen/5;
for(j=0;j{
if(t.zongfen<=a[j].zongfen&&k==0)
c=j,k=1;
}
for(j=i-1;j>c;j--)
{
a[j]=a[j-1];
}
a[c]=t;
printf("*******\n");
printf("插入成功!
\n");
printf("****************\n");
}
voidshanchu()
{
intj,z,k,c=0;
printf("**************\n");
printf("请输入你要删除的学生学号:
");
printf("************************\n");
scanf("%d",&k);
if(a[i-1].studentxuehao==k)
i--,c=1;
else
{
for(j=0;j
{
if(a[j].studentxuehao==k)
{
for(z=j;z{
a[z]=a[z+1];
}
i--;
c=1;
}
}
}
if(c==0)
printf("你输入的学号有误!
\n");
else
printf("删除成功!
");
}
voidxiugai()
{
intj,c=0;
studentt;
printf("请输入你要修改的学生学号以及修改后的学生信息\n");
scanf("%d",&t.studentxuehao);
getchar();
scanf("%s",t.xingming);
scanf("%d",&t.chengji.yuwen);
scanf("%d",&t.chengji.shuxue);
scanf("%d",&t.chengji.yingyu);
scanf("%d",&t.chengji.wuli);
scanf("%d",&t.chengji.huaxue);
t.zongfen=t.chengji.yuwen+t.chengji.shuxue+t.chengji.yingyu+t.chengji.wuli+t.chengji.huaxue;
t.pinjunfen=t.zongfen/5;
for(j=0;j
{
if(a[j].studentxuehao==t.studentxuehao)
a[j]=t,c=1;
}
if(c==0)
{
printf("***************\n");
printf("你输入的学生学号有误!
\n");
printf("**********************\n");
}
else
{
printf("******\n");
printf("修改成功!
\n");
printf("***********\n");
}
}
voidshuchu()
{
intj;
for(j=0;j
{
printf("学号:
%d名字:
%s语文成绩:
%d数学成绩:
%d英语成绩:
%d物理成绩:
%d化学成绩:
%d平均分:
%d\n",a[j].studentxuehao,a[j].xingming,a[j].chengji.yuwen,a[j].chengji.shuxue,a[j].chengji.yingyu,a[j].chengji.wuli,a[j].chengji.huaxue,a[j].pinjunfen);
}
}
参考文献
[1].张跃廷,王小科,帖凌珍.ASP.NET程序开发范例宝典[M],北京:
人民邮电出版社,2007
[2].马颖华,苏贵洋,袁艺等.ASP.NET2.0网络编程从基础到实践[M],北京:
电子工业出版社,2000
[3]C程序设计题解与上机指导,谭浩强,清华大学出版社,1999
[4]C语言的实际应用,安徽科学技术出版社,2000
致谢
在编写程序的过程中,我们得到了王丽颖老师的精心指导以及孜孜不倦的教诲,在老师指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!
感谢我们小组同学对我的帮助和指点,尤其感谢我的舍友在非常时期,在生活和学习上帮我许多忙。
在课设即将完成之际,我的心情无法平静,从开始进入课题到