课程设计(大作业)报告
课程名称:程序设计基础
设计题目:学生成绩记录薄设计
院系:信息技术学院
班级:
设计者:
学号:
指导教师:
设计时间: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);