程序设计基础课程设计报告.docx
《程序设计基础课程设计报告.docx》由会员分享,可在线阅读,更多相关《程序设计基础课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
程序设计基础课程设计报告
课程设计(大作业)报告
课程名称:
程序设计基础
设计题目:
学生成绩记录薄设计
院系:
信息技术学院
班 级:
设计者:
学号:
指导教师:
设计时间:
2013。
78.—2013。
7。
13
信息技术学院
昆明学院课程设计(大作业)任务书
姓名:
ﻩﻩ 院(系):
信息技术学院
专 业:
计算机科学与技术 学 号:
任务起止日期:
2013。
7.8—2013.7.13
课程设计题目:
学生成绩记录薄设计
课程设计要求:
(1)通过课程设计,进一步掌握C语言的语法结构,基本流程,更加深入和全面理解所学的基本概念、基本原理和基本方法。
(2)独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高程序编制、程序调试及综合应用的能力
(3)明确课程设计的目的,通过布置具有一定难度的,能综合运用所学知识的程序设计题目。
(4)程序设计经过需求分析,明确程序设计题目要求,进行合理的设计,编码阶段编出的程序易读、易懂并具有良好的交互性,界面清晰。
测试阶段应指导学生编写测试用例,尽量多地找出程序中的错误,进行调试.
工作计划及安排:
第一天的,两个人合作选定题目,建立起程序的构思图形,了解题目意思,确立程序的方向,并且查阅一些资料开始构建程序。
第二天,两人商量分工合作,确定谁写那段函数,并且在总体思路的框架下,逐步写程序,并确保证程序无误。
第三天,将小程序合并,进行调试,对里面出现的问题协商合作共同解决。
第四天,开始写实验报告,对每次失败原因进行总结,并且整合两人思想纂写报告.
第五天,实训课也接近尾声,和班上的同学交流心得体会.
指导教师签字
2013年7月8日
课程设计(大作业)成绩
学号:
ﻩ姓名:
指导教师:
课程设计题目:
学生成绩记录薄设计
总结:
通过一周C语言课程设计,不仅增加了我对C语言学习的兴趣,还让我对C语言有了更深的了解。
在这次的实训中,我们通过自己动手查找资料,并自己设计程序,还上机运行验证我们的程序。
虽然在上机调试过程中,我遇到了很多的困难,(比如:
很难理解一些逻辑思维上的东西)但通过自己不断的重新理解和修正,最终还是成功的完成了程序的设计。
那种喜悦感难以用言语来表达,这让我感觉到学习也可以是快乐的。
在这次设计我不单单学习到了C语言的知识,也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。
有许多知识,光靠老师上课所讲的和自己看书得到的,还远远不够,C语言主要是通过上机来熟悉并且运用的,这次的实训课让我深刻的明白了这一点。
所以在以后的学习生活中,我要经常写程序并上机进行调试,不断从中学习新的知识。
还有一点就是:
不懂就问。
遇到难题实在解决不了的,问老师同学,和同学共同讨论,有合作精神也是很重要的。
希望以后还有更多的实训机会,让我得到锻炼。
指导教师评语:
成绩:
填表时间:
ﻩﻩﻩ指导教师签名
学生成绩记录薄设计
一、课程设计目的与要求
1。
课程设计目的
(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。
(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。
2.课程设计要求
设计一个简易学生成绩记录簿设计,其中包括:
姓名,学号,C语言成绩;
具体功能:
1。
系统以菜单方式工作
2。
创建学生成绩信息并以磁盘文件保存;
3。
读取磁盘文件并显示输出所有学生的成绩;
4。
查询学生成绩
(1)按学号查询成绩
(2)学号姓名查询成绩
5.添加成绩记录;
6.修改指定姓名或学号的学生的成绩并可存盘;
7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
二、总体设计
根据系统的要求,系统总体设计如图1所示。
图1系统总体结构
三、详细设计
1、数据结构设计
#include<stdio.h〉
#include<stdlib。
h>
#include〈string.h>
#includeh〉
int n=4;
structstudent
{
int num; /*学号*/
charname[10];/*姓名*/
ﻩfloatscore[3];/*成绩*/
}
2.函数说明
1。
主函数
main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能.
2.其他部分功能函数包括
(1) 将学生成绩信息保存为文件void save();
算法思想:
①定义指向文件的指针变量;
②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;
③将存有学生成绩信息的结构体数组信息依次保存到文件中。
(2)学生成绩信息录入函数voidinput()
算法思想:
①依次录入结构体数组中所包含的各个成员;
②直到输入的结构体成员中信息为4,数据输入结束;
③返回实际录入的学生成绩信息数。
(3)从文件中读出学生成绩信息voidoutput();
算法思想:
①定义指向结构体变量的指针和指向文件的指针;
②输入文件的路径,打开文件,若不能打开文件给出提示信息;
③将文件中的信息依次读出,最后结构体的指针为NULL。
3。
函数设计
(1)主菜单函数main()
功能:
函数返回值为整数,代表所选的菜单项
intmain()
{
ﻩ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("§【0】---—--————--—-—---——————-—退出 §\n”);
ﻩﻩprintf("§ §\n");
printf(”*********************************************************\n");
ﻩﻩprintf(" 请输入相应菜单编号:
”);
}
(2)我负责编写的程序
A。
添加学生信息
voidAddstudent()
{
FILE*fp;
ﻩstructstudents;
ﻩfp=fopen("stu.dat","ab”);
ﻩif((fp=fopen("stu。
dat",”ab"))==NULL)
ﻩprintf("Fileopen error!
\n”);
else
ﻩ{
ﻩﻩprintf("请输入所增加学生的学号 姓名 c语言成绩:
\n");
ﻩﻩscanf("%d”,&s。
num);
ﻩﻩscanf(”%s",s.name);
ﻩscanf(”%f",&s。
score[0]);
ﻩﻩfwrite(&s,sizeof(structstudent),1,fp);
ﻩfclose(fp);/*关闭文件*/
}
ﻩprintf("写入成功!
\n");
}//end functionAddstudent;
B.修改学生成绩
voidmodify()
{
ﻩintnumber,i;
ﻩprintf(”请输入要修改信息的学生学号:
”);
ﻩscanf("%d”,&number);
for(i=0;iﻩif(number==stud[i]。
num)
break;/*查找判断*/
if(i〈n)/*查找判断*/
ﻩﻩ{
ﻩprintf("请输入修改后的学生的信息:
”);
ﻩﻩprintf(”\n请输入学生的c语言成绩:
”);
ﻩscanf("%f",&stud[i].score[0]);
ﻩﻩsave();
ﻩﻩ}
ﻩelse
ﻩprintf("没找到该学生的信息\n”);
ﻩsystem("paues");system(”cls");
}
C.查询学生成绩
void namecheck(void);
voidscorecheck(void);
voidsearchmenu()
{ﻩprintf("***** 欢迎进入学生成绩查询系统******\n”);
printf("*1——-—-——-—--------—按姓名查询成绩*\n”);
ﻩprintf("* 2—--—-——————-—--——按学号查询成绩 * \n");
printf(”*3————---——--—--—-—返回上一层 *\n");ﻩ
printf("*4--——-————-——----——退出 * \n”);
printf("*************************************\n");
printf("请输入相应菜单编号:
”);
ﻩintm;ﻩ
scanf("%d”,&m);
ﻩswitch(m)ﻩ
ﻩ{
ﻩcase1:
namecheck();
ﻩﻩprintf(”\n");
ﻩ system(”PAUSE");
ﻩﻩsystem(”CLS");
ﻩﻩbreak;
case2:
scorecheck();
ﻩﻩprintf(”\n");
ﻩﻩsystem("PAUSE”);
ﻩﻩ system("CLS");
ﻩﻩbreak;
ﻩcase 3:
main();break;ﻩ
case4:
exit(0); break;ﻩ
}
}
voidnamecheck()
{
charname[10];
ﻩprintf(”按照姓名查询请按\n");
printf(”\n请输入姓名:
");
ﻩscanf("%s”,&name);ﻩ
printf("查询结果\n");
printf("学号 姓名c语言成绩\n");
ﻩif(strcpy(stud[i].name,name))
ﻩ{
ﻩprintf("%d%s %.2f\n”,stud[i]。
num,stud[i]。
name,stud[i].score[0]);
ﻩ}
}
void scorecheck()
{
ﻩintb;
printf("按照学号查询请按\n”);
ﻩ{
ﻩﻩprintf("\n请输入学号:
");
ﻩﻩscanf("%d",&b);ﻩ
ﻩﻩprintf(”查询结果\n");
printf(”学号姓名 c语言成绩\n");
for(i=0;iﻩﻩif(stud[i].num==b)
{
ﻩprintf("%d%s %.2f\n",stud[i].num,stud[i]。
name,stud[i].score[0]);
ﻩ}
ﻩ}
}
四、程序清单和执行结果
1.头文件
#include<stdio.h〉
#include〈stdlib。
h〉
#include<string.h〉
#include
intn=4;
struct student
{
intnum; /*学号*/
ﻩcharname[10];/*姓名*/
floatscore[3]; /*成绩*/
/******以下是函数原型*******/
void save(void);
voidinput(void);
void output(void);
voidmodify(); /*修改信息*/
ﻩvoidsearchmenu(void); /*查询信息*/
voidnamecheck(void);/*按姓名查询*/
voidscorecheck(void);/*按学号查询*/
void Addstudent(); /*添加信息*/
ﻩvoidsclsearch(); /*成绩按分数段显示*/
2.函数源程序代码与运行结果
[1]函数源程序代码
#include〈stdio.h>
#include<stdlib。
h〉
#include<string.h>
#include<windows.h〉
int n=4;
struct student
{
ﻩintnum;
ﻩchar name[10];
floatscore[3];
}stud[100];
int i,choose,a,t=0;
longintnum;
intmain()
{
voidsave(void);
void input(void);
ﻩvoidoutput(void);
voidmodify();
voidsearchmenu(void);
voidAddstudent();
void sclsearch();
while(1)
ﻩ{
ﻩ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(" §【0】--—-—---————-—--------—--— 退出 §\n”);
ﻩprintf("§ §\n");
ﻩﻩprintf(”********************************************************* \n”);
printf("请输入相应菜单编号:
");
ﻩscanf("%d”,&a);
ﻩswitch(a)
ﻩﻩ{
ﻩcase1:
ﻩﻩinput();
ﻩsave();
ﻩﻩbreak;
ﻩcase 2:
ﻩoutput();
ﻩﻩprintf("\n”);
ﻩsystem("PAUSE");
system("CLS”);
ﻩbreak;
case3:
ﻩAddstudent();
ﻩﻩprintf("\n");
system("PAUSE");
ﻩsystem("CLS");
break;
ﻩcase4:
ﻩﻩﻩsearchmenu();
ﻩﻩprintf("\n”);
ﻩsystem("PAUSE”);
system("CLS”);
ﻩbreak;
ﻩﻩcase5:
ﻩmodify();
ﻩﻩprintf(”\n");
ﻩsystem("PAUSE");
ﻩﻩsystem("CLS");
ﻩﻩbreak;
ﻩcase6:
ﻩﻩsclsearch();
printf(”\n");
system("PAUSE");
ﻩﻩsystem("CLS");
break;
ﻩcase0:
exit(0);
ﻩdefault:
;
ﻩ}
ﻩ}
return0;
}
voidsave()
{
ﻩFILE*fp;
if((fp=fopen("stu。
dat",”wb"))==NULL)/*以只写的方式打开文件*/
{
printf(”无法打开文件!
\n”);
ﻩreturn;
ﻩ}
ﻩfor(i=0;i<n;i++)
if(fwrite(&stud[i],sizeof(struct student),1,fp)!
=1)/*写入字节为1的信息在文件中*/
ﻩﻩprintf(”文件写入错误!
\n");
ﻩfclose(fp);/*关闭文件*/
}
void input()//录入学生成绩
{
ﻩinti;
ﻩchara;
for(i=0;i<n;i++)
ﻩ{
ﻩprintf("\n 请输入学生成绩信息:
\n");
printf("\n请依次输入学号、姓名、c语言成绩:
\n");
scanf(”%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]);
printf(”输入:
y(继续),n(终止)!
\n");
ﻩﻩfflush(stdin);
ﻩscanf("%c",&a);
ﻩif(a=='n' ||a=='N')
ﻩbreak;
ﻩ}
n=i+1;
}
voidAddstudent()
{
ﻩFILE*fp;
structstudents;
ﻩfp=fopen(”stu.dat”,”ab");
if((fp=fopen(”stu.dat”,”ab”))==NULL)
ﻩprintf(”Fileopenerror!
\n”);
else
{
ﻩﻩprintf("请输入所增加学生的学号姓名c语言成绩:
\n”);
ﻩscanf("%d”,&s.num );
ﻩﻩscanf("%s",s。
name);
ﻩﻩscanf(”%f”,&s.score[0]);
ﻩﻩfwrite(&s,sizeof(structstudent),1,fp);
fclose(fp);/*关闭文件*/
}
ﻩprintf(”写入成功!
\n");
}//endfunction Addstudent;
voidoutput()
{
int i;
//floats;
ﻩFILE*fp;
if((fp=fopen(”stu.dat","rb”))==NULL)
ﻩ{
ﻩprintf(”cannotopenfile\n");
exit(0);
}
printf("\n学号 姓名c语言成绩\n");
for(i=0;fread(&stud[i],sizeof(structstudent),1,fp)==1;i++)
{
printf("%d %10s% 10。
2f\n",stud[i].num,stud[i].name,stud[i]。
score[0]);
}
fclose(fp);
n=i;
}
voidmodify()
{
ﻩintnumber,i;
ﻩprintf("请输入要修改信息的学生学号:
");
scan