文档库 最新最全的文档下载
当前位置:文档库 › 程序设计基础课程设计报告

程序设计基础课程设计报告

程序设计基础课程设计报告
程序设计基础课程设计报告

课程设计(大作业)报告

课程名称:程序设计基础

设计题目:学生成绩记录薄设计

院系:信息技术学院

班级:

设计者:

学号:

指导教师:

设计时间:2013。7 8.—2013。7。13

信息技术学院

昆明学院课程设计(大作业)任务书

姓名:??院(系):信息技术学院

专业:计算机科学与技术学号:

任务起止日期:2013。7 .8—2013.7.13

课程设计题目:

学生成绩记录薄设计

课程设计要求:

(1)通过课程设计,进一步掌握C语言的语法结构,基本流程,更加深入和全面理解所学的基本概念、基本原理和基本方法。

(2)独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高程序编制、程序调试及综合应用的能力

(3)明确课程设计的目的,通过布置具有一定难度的,能综合运用所学知识的程序设计题目。

(4)程序设计经过需求分析,明确程序设计题目要求,进行合理的设计,编码阶段编出

学生成绩记录薄设计

一、课程设计目的与要求

1。课程设计目的

(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。

(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。

2. 课程设计要求

设计一个简易学生成绩记录簿设计,其中包括:姓名,学号,C语言成绩;

具体功能:

1。系统以菜单方式工作

2。创建学生成绩信息并以磁盘文件保存;

3。读取磁盘文件并显示输出所有学生的成绩;

4。查询学生成绩

(1)按学号查询成绩

(2)学号姓名查询成绩

5.添加成绩记录;

6.修改指定姓名或学号的学生的成绩并可存盘;

7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

二、总体设计

图1 系统总体结构

三、详细设计

1、数据结构设计

#include<stdio.h〉

#include<stdlib。h>

#include〈string.h>

#include

int n=4;

struct student

{

intnum;/*学号*/

charname[10];/*姓名*/

?floatscore[3];/*成绩*/

}

2.函数说明

1。主函数

main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能.

2.其他部分功能函数包括

(1)将学生成绩信息保存为文件voidsave();

算法思想:

①定义指向文件的指针变量;

②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;

③将存有学生成绩信息的结构体数组信息依次保存到文件中。

(2) 学生成绩信息录入函数void input()

算法思想:

①依次录入结构体数组中所包含的各个成员;

②直到输入的结构体成员中信息为4,数据输入结束;

③返回实际录入的学生成绩信息数。

(3)从文件中读出学生成绩信息void output();

算法思想:

①定义指向结构体变量的指针和指向文件的指针;

②输入文件的路径,打开文件,若不能打开文件给出提示信息;

③将文件中的信息依次读出,最后结构体的指针为NULL。

3。函数设计

(1)主菜单函数main()

功能:函数返回值为整数,代表所选的菜单项

int main ()

?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。添加学生信息

void Addstudent()

FILE *fp;

?struct student s;

?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",https://www.wendangku.net/doc/9917361724.html,);

?scanf(”%f",&s。score[0]);

??fwrite (&s,sizeof(struct student),1,fp);

?fclose(fp);/*关闭文件*/

?printf("写入成功!\n");

}//endfunctionAddstudent;

B.修改学生成绩

void modify()

{

?int number,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);

void scorecheck(void);

voidsearchmenu()

{?printf(" *****欢迎进入学生成绩查询系统****** \n”);

printf("* 1——-—-——-—--------—按姓名查询成绩*\n”);

?printf("*2—--—-——————-—--——按学号查询成绩*\n");

printf(”* 3————---——--—--—-—返回上一层*\n");?

printf("* 4--——-————-——----——退出*\n”);

printf(" ************************************* \n");

printf("请输入相应菜单编号:”);

?int m;?

scanf("%d”,&m);

?switch(m)?

?{

?case 1:namecheck();

??printf(”\n");

?system(”PAUSE");

??system(”CLS");

??break;

case 2:scorecheck();

??printf(”\n");

??system("PAUSE”);

??system("CLS");

??break;

?case3:main();break;?

case4: exit(0);break;?

}

voidnamecheck()

char name[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]);

?}

voidscorecheck()

{

?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]。na me,stud[i].score[0]);

?}

?}

}

四、程序清单和执行结果

1.头文件

#include<stdio.h〉

#include〈stdlib。h〉

#include<string.h〉

#include

int n=4;

structstudent

int num;/*学号*/

?charname[10];/*姓名*/

float score[3];/*成绩*/

/******以下是函数原型*******/

voidsave(void);

void input(void);

void output(void);

void modify();/*修改信息*/

?void searchmenu(void); /*查询信息*/

void namecheck(void);/*按姓名查询*/

voidscorecheck(void); /*按学号查询*/

void Addstudent();/*添加信息*/

?void sclsearch(); /*成绩按分数段显示*/ 2.函数源程序代码与运行结果

[1]函数源程序代码

#include〈stdio.h>

#include<stdlib。h〉

#include<string.h>

#include<windows.h〉

intn=4;

struct student

{

?int num;

?charname[10];

float score[3];

}stud[100];

inti,choose,a,t=0;

long intnum;

int main ()

void save(void);

void input(void);

?void output(void);

voidmodify();

void searchmenu(void);

void Addstudent();

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)

??{

?case 1:

??input();

?save();

??break;

?case2:

?output();

??printf("\n”);

?system("PAUSE");

system("CLS”);

?break;

case 3:

?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;

?case 6:

??sclsearch();

printf(”\n");

system("PAUSE");

??system("CLS");

break;

?case 0: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()//录入学生成绩

?int i;

?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;

void Addstudent()

?FILE *fp;

struct student s;

?fp=fopen(”stu.dat”,”ab");

if((fp=fopen(”stu.dat”,”ab”))==NULL)

?printf(”File open error!\n”);

else

{

??printf("请输入所增加学生的学号姓名c语言成绩:\n”);

?scanf("%d”,&s.num);

相关文档