C语言课程设计报告 2.docx
《C语言课程设计报告 2.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告 2.docx(31页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告 2.docx](https://file1.bdocx.com/fileroot1/2022-11/20/e76d9ee5-a5ff-4c17-93e5-9e72d1032ac5/e76d9ee5-a5ff-4c17-93e5-9e72d1032ac51.gif)
C语言课程设计报告2
C语言课程设计报告
设计题目:
学生成绩管理系统
系(院):
经济管理学院
学年学期:
2010~2011学年第1学期2010年1月3日
C语言课程设计任务书
课程设计题目
学生成绩管理
课程设计目的
(1)培养学生正确的设计思想,将理论与实际相结合,严肃认真、实事求是的科学态度和勇于探索的创新精神。
(2)培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。
(3)通过课程设计实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前言知识的习惯。
同时,C++语言程序设计课程设计可以充分弥补课堂教学及普通实验中知识深度与广度有限的缺陷,更好地帮助学生从全局角度把握课程体系。
课程设计环境
硬件:
P4以上计算机
软件:
VisualC++
MicrosoftWindowsXP
课程设计任务和要求
任务:
用C语言对学生成绩进行编程;
要求:
1、要充分认识C++语言程序设计课程设计的重要性,认真做好各项准备工作;既要虚心接受老师的指导,又要充分发挥主观能动性,要结合课题,独立思考,努力钻研,勤于实践,勇于创新;收集资料,自学相关知识,拓宽知识面,根据课题的基本要求,自行完成设计任务。
要按时、独立完成规定的工作任务,不弄虚作假,不抄袭他人;严格遵守学习和劳动纪律,不无故缺席,不迟到早退,不懈怠,不拖拉,要积极主动;严格要求自己,树立严肃、严密、严谨的科学态度,按时、按质、按量完成。
工作进度计划
序号
起止日期
工作内容
01
2010.12.27~2010.12.28
查找资料,熟悉操作环境,开始编写程序
02
2010.12.29~2010.12.31
编写程序,调试程序
03
2010.01.01~2010.01.03
写实验报告
指导老师签字(盖章):
年月日
摘要:
本系统使用VisualC++语言编写制作一个对学生成绩信息的管理系统,对于信息管理的具体分类,例如:
学生信息,成绩信息进行管理,信息查询进行方便查询。
系统包括信息管理和查询两个部分,更加方便地减少人工所花费的时间,提高了管理的水平和服务质量,使得查询降低了错误率,完成了不同类型的查询。
本系统具有的功能如下:
学生信息管理功能:
显示学生信息,用户可以浏览查看学生信息,也可对学生信息进行添加,修改,删除等一系列操作。
信息查询功能:
用户可以按学号对学生的基本信息以及成绩信息进行查询,
退出系统功能:
完成了对学生信息管理系统的操作后,应该可以安全的离开该系统,通过该模块可以离开学生信息管理系统。
关键词:
功能;管理;查询;
学生成绩管理系统分析和设计
1需求分析
学生成绩管理系统的功能需求分析
学生成绩管理系统主要提供成绩查询、添加和修改,方便管理的学生成绩信息查阅平台,系统管理员可以对学生的信息进行修改、查询、插入;同时可以为学生提供各门成绩的查询,包括总分和平均分;也可以为各科任课教师提供任教课程学生的成绩查询,方便老师了解教学质量;还可以为学校提供评奖、评优的信息,并且这些信息还可以保留备份。
2总体方案设计
按要求排序
3数据库的物理设计
3.1把关系模型转换为表结构:
3.1.1course用于记录课程的基本信息,如表3.1.1所示:
字段名
描述
字段类型
允许空值
说明
Cname
课程名
Varchar(10)
No
主键
grade
成绩
Int(10)
Yes
表3.1.1course
3.1.2student用于记录车票的基本信息,如表3.1.2所示:
字段名
描述
字段类型
允许空值
说明
Sno
学号
Varchar(10)
No
主键
sname
姓名
Float(10)
YES
bj
班级
Char(10)
YES
表3.1.2ticket
3.1.3coursestudent用于记录学生查询和添加记录的基本信息,如表3.1.3所示:
字段名
描述
字段类型
允许空值
说明
Sno
编号
Varchar(10)
No
主键(同时都是外键)
cname
班次
Varchar(10)
No
sname
票价
Float(10)
YES
Bj
终点站
Varchar(10)
YES
grade
发车时间
Datetime(8)
YES
表3.1.2coursestudent
3.2实现数据完整性
通过各种约束,缺省,规则实现数据的完整性。
(1)各种外键约束保证数据的完整性,不能随意删除。
(2)主键约束保证实体的完整性。
4算法设计
算法:
第一步:
进入系统界面,按要求输入管理员密码;如果密码正确,那么进入系统;否则,再输入密码,3次内任意一次正确进入系统,超过3次退出界面。
第二步:
进入系统,按界面提示选择0~9按键,进入所需要的界面。
第三步:
若选择1进入,按系统提示进行初始化并输入数据;若选择2进入,进入下一层界面,按要求选择0~7按键,选择排序方式;若选择3进入,进入搜索界面,输入学号进行搜索;若选择4则进入浏览界面,对系统中数据进行浏览;若选择5进入插入界面,按要求输入记录;若选择6,则进入删除界面中,输入要删除的学号;选择7进入修改界面,选择0~7按键按所需进行修改;选择8保存记录;选择9读取记录;选择0则退出程序。
第四步:
完成所需要求,退出系统。
5实现方法:
分别通过顺序结构、选择结构,按照顺序,通过判断输入数据是否满足条件进行操作,同时调用C语言本身具有的一些函数,如struct(),getch(),_sleep(),strcmp()等等函数,在关键的地方进行选择判断,从而保证系统的进行与操作正确。
6流程图:
(fp=fopen("d:
\zhang。
txt","w+"))==NULL
printf("无发打开\n");
c==1
printf("\t");
fprintf(fp,"%s\t",a[i]num);
i++
i<10
i=0
fclose(fp);
i++
i=0
inti,c=0;
fprintf(fp,"学号\t姓名\t班级\tc语言\t语文\t数据库\t高数\t英语\t总分\t平均分\n");
i
保存功能:
a[j]。
score[0]score[0]
temp=a[j];
j++
j<=m-i-1
j=0
i++
i<=m-1
i=1
inti,j;
课程排序
i++
continue
break;
h==1
printf("请输入学号:
\n");
ii=m
a[i]=a[i+1];
c==1
printf("初始化完毕!
是否增加新记录(1/0)!
");
i--
i>0
i=m
inti,c=0;
初始功能
printf("****************************************\n");
printf("%。
1f\t",a[i]。
score[j]);
printf("%。
1f\t%。
1f\t",a[i]。
sum,a[i]。
averge);
j++
j<5
j=0
printf("%s\t",a[i]。
num);
i++
ii=0
inti;
输出功能
printf("%。
1f\t",a[i]。
score[j]);
搜索功能
7代码编写
structstu
{
charname[20];
charnum[20];
charbanji[20];
floatscore[5];
floatsum;
floataverge;
};
定义结构体数组,包括姓名,学号,班级,5门成绩分数,总分和平均分
zhuomian();
scanf("%d",&a);
getchar();
switch(a)
{
case1:
case0
自定义函数zhoumian()实现从键盘输入a,当a分别等于0~9中的数时,分被执行case下的程序
printf("请输入学号:
\n");
scanf("%s",a[i].num);
printf("姓名:
\n");
scanf("%s",a[i].name);
printf("班级:
\n");
scanf("%s",a[i].banji);
a[i].sum=0;
printf("C语言的成绩:
\n");
scanf("%f",&a[i].score[0]);
printf("语文的成绩:
\n");
scanf("%f",&a[i].score[1]);
printf("数据库的成绩:
\n");
scanf("%f",&a[i].score[2]);
printf("高数的成绩:
\n");
scanf("%f",&a[i].score[3]);
printf("英语的成绩:
\n");
scanf("%f",&a[i].score[4]);
a[i].sum=a[i].sum+a[i].score[0]+a[i].score[1]+a[i].score[2]+a[i].score[3]+a[i].score[4];
a[i].averge=a[i].sum/5;
分别从键盘上输入学号、姓名、班级和C语言、语文等五门成绩,同时求五门成绩的总分和平均分
if(a[j].score[0]{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
比较两门成绩的大小,如果a[i].sorce[0]8程序调试
在输出班级、学号、姓名、五门成绩以及总分、平均分时与下面所对应的数字不对齐,造成数据的错误。
后来经过多次的调试与代码检查,终于发现是在输出时“\t”即水平制表的后面多加了一个空格键,将空格删去后问题就解决的,数据就能够对齐了。
其他的还存在一些中英文切换的输入输出的错误,基本上没什么太大的错误。
运行与测试
图1初始化并输入记录
图2按学号查找学生记录
图3浏览学生记录
图3删除学生记录
图3修改学生记录
能够迅速地查找出学生的相关成绩,并且能够一一对应;准确性、可靠性都达到了,基本上达到了实验目的。
总结
忙碌了一个多星期,终于将此程序设计出来。
虽然有点累但还是很高兴的,因为在设计的过程中,让我了解到要设计一个程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。
为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情,尤其是老师。
在设计这个程序时,刚开始是根据老师给我们提供的要求,