C语言程序设计报告班级学生成绩管理系统.doc
《C语言程序设计报告班级学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计报告班级学生成绩管理系统.doc(47页珍藏版)》请在三一办公上搜索。
1、 C语言程序设计课程设计报告设计题目:班级学生成绩管理系统专 业: 班 级: 学 号: 姓 名: 指导教师: 时间:2011/06/12目 录一、 课程设计目的和要求3二、 课程设计任务内容4三、 程序流程图16四、 软件使用说明17五、 课程设计心得与体会19一. 课程设计的目的和要求目的:本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力
2、5. 提高运用C语言解决实际问题的能力 程序功能和要求:1. 学生记录用结构体2. 学生信息数据用文件保存3. 采用多文件形式组织程序4. 基本功能:1) 增加学生记录2) 文件存储3) 读取文件4) 删除记录 5) 修改记录6) 查询记录 5.程序简洁易懂二课程设计任务和内容代码:#ifndef H_STUDENT_HH#define H_STUDENT_HH#include#include#include#include#define NUM_SUBJECT 5 /科目数#define INITIAL_SIZE 100 /数组初始大小#define INCR_SIZE 50 /数组每次增加
3、的大小struct student_infochar number15; /学号char name20; /姓名char gender4; /性别float scoreNUM_SUBJECT; /某学生的各科成绩float sum; /总分float average; /平均分int index; /名次;typedef struct student_info StuInfo;extern int numStus; /记录的学生数extern StuInfo* records; /记录学生信息的数组extern char savedTag; /信息是否保存extern int arraySiz
4、e; /数组大小extern char* subject;void handle_menu(void);int menu_select(void);void addRecord(void);void modifyRecord(void);void display(void);void queryInfo(void);void removeRecord(void);int saveRecords(void);int loadRecords(void);void quit(void);void showTable(void);int findRecord(char* target,int targ
5、etType,int from);void copyRecord(StuInfo* src,StuInfo* dest);void sortInfo(void);int findRecord(char* target,int targetType,int from);int getIndex(float);#endif / H_STUDENT_HH#include student.h/*输出表头*void showTable(void)int j;printf(学号t姓名t性别);for(j=0;jNUM_SUBJECT;j+)printf( %s ,subjectj);printf( 总分
6、平均分 名次n);/*显示所有学生信息函数*void display(void)int i,j;if(numStus=0)printf(没有可供显示的记录!);return;showTable();for(i=0;inumStus;i+)printf(%4st%3st%3s,recordsi.number,recordsi.name,recordsi.gender);for(j=0;j= arraySize)records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo);if(records=NULL)printf(memory fa
7、lled!);exit(-1);arraySize=arraySize+INCR_SIZE;printf(请输入学号:);gets(recordsnumStus.number);printf(请输入姓名:);gets(recordsnumStus.name);printf(请输入性别(0为女,1为男):);gets(str);if(str0=0)strcpy(recordsnumStus.gender,女);elsestrcpy(recordsnumStus.gender,男);sum=0;for(j=0;jNUM_SUBJECT;j+)printf(请输入%s成绩:,subjectj);ge
8、ts(str);mark=(float)atof(str);recordsnumStus.scorej=mark;sum+=mark;recordsnumStus.sum=sum;recordsnumStus.average=sum/NUM_SUBJECT;recordsnumStus.index=getIndex(sum);numStus+;printf(现在一共有%d条信息n,numStus);savedTag=1;/*找出总分为sum在第0至numStus-1个记录中按升序排序的位置*int getIndex(float sum)int i;int count=0;for(i=0;inu
9、mStus;i+)if(recordsi.sumsum)count+;return count+1;#include student.h/*文件存储操作函数*int saveRecords(void)FILE *fp;char fname30;if(numStus=0)printf(没有记录可存!);return -1;printf(请输入要存入的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)=0)strcpy(fname,stu_info);if(fp=fopen(fname,wb)=NULL)printf(不能存入文件!n);ret
10、urn -1;printf(n存文件.n);fwrite(records,sizeof(StuInfo)*numStus,1,fp);fclose(fp);printf(%d条记录已经存入文件,请继续操作。n,numStus);savedTag=0;return 0;/*文件读取操作函数*int loadRecords(void)FILE *fp;char fname30;char str5;if(numStus!=0 & savedTag=0)printf(请选择您是要覆盖现有记录(y),还是要将);printf(读取的记录添加到现有记录之后(n)?n);printf(直接回车则覆盖现有记录
11、n);gets(str);if(str0=n|str0=N)savedTag=1;elseif(savedTag=1)printf(读取文件将会更改原来的记录,);printf(是否保存原来记录?(y/n));gets(str);if(str0!=n&str0!=N)saveRecords();numStus=0;printf(请输入要读取的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)=0)strcpy(fname,stu_info);if(fp=fopen(fname,rb)=NULL)printf(打不开文件!请重新选择n);re
12、turn -1;printf(n取文件.n);while(!feof(fp)if(numStus=arraySize)records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo);if(records=NULL)printf(memory failed!);exit(-1);arraySize=arraySize+INCR_SIZE;if(fread(&recordsnumStus,sizeof(StuInfo),1,fp)!=1) break;/按照addRecord函数的方法,更新名次recordsnumStus.index =
13、 getIndex(recordsnumStus.sum);numStus+;fclose(fp);printf(现在共有%d条记录。,numStus);return 0;#include student.h/*文件存储操作函数*int saveRecords(void)FILE *fp;char fname30;if(numStus=0)printf(没有记录可存!);return -1;printf(请输入要存入的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)=0)strcpy(fname,stu_info);if(fp=fopen
14、(fname,wb)=NULL)printf(不能存入文件!n);return -1;printf(n存文件.n);fwrite(records,sizeof(StuInfo)*numStus,1,fp);fclose(fp);printf(%d条记录已经存入文件,请继续操作。n,numStus);savedTag=0;return 0;/*文件读取操作函数*int loadRecords(void)FILE *fp;char fname30;char str5;if(numStus!=0 & savedTag=0)printf(请选择您是要覆盖现有记录(y),还是要将);printf(读取的
15、记录添加到现有记录之后(n)?n);printf(直接回车则覆盖现有记录n);gets(str);if(str0=n|str0=N)savedTag=1;elseif(savedTag=1)printf(读取文件将会更改原来的记录,);printf(是否保存原来记录?(y/n));gets(str);if(str0!=n&str0!=N)saveRecords();numStus=0;printf(请输入要读取的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)=0)strcpy(fname,stu_info);if(fp=fopen(fn
16、ame,rb)=NULL)printf(打不开文件!请重新选择n);return -1;printf(n取文件.n);while(!feof(fp)if(numStus=arraySize)records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo);if(records=NULL)printf(memory failed!);exit(-1);arraySize=arraySize+INCR_SIZE;if(fread(&recordsnumStus,sizeof(StuInfo),1,fp)!=1) break;/按照addRe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 班级 学生 成绩管理系统
链接地址:https://www.31ppt.com/p-4855030.html