您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言程序设计报告——学生信息管理系统
C语言程序设计课程设计报告设计题目:班级学生成绩管理系统专业:班级:学号:姓名:指导教师:时间:2011/06/122目录一、课程设计目的和要求……………………3二、课程设计任务内容………………………4三、程序流程图………………………………16四、软件使用说明……………………………17五、课程设计心得与体会……………………193一.课程设计的目的和要求目的:本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:1.巩固和加深学生对C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力程序功能和要求:1.学生记录用结构体2.学生信息数据用文件保存3.采用多文件形式组织程序4.基本功能:1)增加学生记录2)文件存储3)读取文件4)删除记录5)修改记录6)查询记录5.程序简洁易懂4二.课程设计任务和内容代码:#ifndefH_STUDENT_HH#defineH_STUDENT_HH#includestdio.h#includestdlib.h#includeconio.h#includestring.h#defineNUM_SUBJECT5//科目数#defineINITIAL_SIZE100//数组初始大小#defineINCR_SIZE50//数组每次增加的大小structstudent_info{charnumber[15];//学号charname[20];//姓名chargender[4];//性别floatscore[NUM_SUBJECT];//某学生的各科成绩floatsum;//总分floataverage;//平均分intindex;//名次5};typedefstructstudent_infoStuInfo;externintnumStus;//记录的学生数externStuInfo*records;//记录学生信息的数组externcharsavedTag;//信息是否保存externintarraySize;//数组大小externchar*subject[];voidhandle_menu(void);intmenu_select(void);voidaddRecord(void);voidmodifyRecord(void);voiddisplay(void);voidqueryInfo(void);voidremoveRecord(void);intsaveRecords(void);intloadRecords(void);voidquit(void);voidshowTable(void);intfindRecord(char*target,inttargetType,intfrom);voidcopyRecord(StuInfo*src,StuInfo*dest);6voidsortInfo(void);intfindRecord(char*target,inttargetType,intfrom);intgetIndex(float);#endif//H_STUDENT_HH#includestudent.h//******************输出表头**********************voidshowTable(void){intj;printf(学号\t姓名\t性别);for(j=0;jNUM_SUBJECT;j++)printf(%s,subject[j]);printf(总分平均分名次\n);}//****************显示所有学生信息函数******************voiddisplay(void){7inti,j;if(numStus==0){printf(没有可供显示的记录!);return;}showTable();for(i=0;inumStus;i++){printf(%4s\t%3s\t%3s,records[i].number,records[i].name,records[i].gender);for(j=0;jNUM_SUBJECT;j++)printf(\%.1f,records[i].score[j]);printf(%.1f%.1f%d\n,records[i].sum,records[i].average,records[i].index);if(i%19==0&&i!=0){printf(输入一行字符后继续...\n);getch();8printf(\n\n);showTable();}}}//*******************在当前表的末尾增加新的信息*************************voidaddRecord(void){charstr[10];intj;floatmark,sum;if(numStus==0)printf(原来没有记录,现在建立新表\n);elseprintf(先面在当前的末尾增加新的信息\n);while(1){printf(您将要添加一组信息,确定吗?(y/n));9gets(str);if(str[0]=='n'||str[0]=='N')break;if(numStus=arraySize){records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));if(records==NULL){printf(memoryfalled!);exit(-1);}arraySize=arraySize+INCR_SIZE;}printf(请输入学号:);gets(records[numStus].number);printf(请输入姓名:);gets(records[numStus].name);printf(请输入性别(0为女,1为男):);10gets(str);if(str[0]=='0')strcpy(records[numStus].gender,女);elsestrcpy(records[numStus].gender,男);sum=0;for(j=0;jNUM_SUBJECT;j++){printf(请输入%s成绩:,subject[j]);gets(str);mark=(float)atof(str);records[numStus].score[j]=mark;sum+=mark;}records[numStus].sum=sum;records[numStus].average=sum/NUM_SUBJECT;records[numStus].index=getIndex(sum);numStus++;}printf(现在一共有%d条信息\n,numStus);savedTag=1;11}//************找出总分为sum在第0至numStus-1个记录中按升序排序的位置************intgetIndex(floatsum){inti;intcount=0;for(i=0;inumStus;i++){if(records[i].sumsum){records[i].index++;}elseif(records[i].sumsum){count++;}}returncount+1;}12#includestudent.h//******************文件存储操作函数*********************intsaveRecords(void){FILE*fp;charfname[30];if(numStus==0){printf(没有记录可存!);return-1;}printf(请输入要存入的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)==0)strcpy(fname,stu_info);13if((fp=fopen(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;return0;}//************************文件读取操作函数****************************intloadRecords(void){FILE*fp;charfname[30];14charstr[5];if(numStus!=0&&savedTag==0){printf(请选择您是要覆盖现有记录(y),还是要将);printf(读取的记录添加到现有记录之后(n)?\n);printf(直接回车则覆盖现有记录\n);gets(str);if(str[0]=='n'||str[0]=='N'){savedTag=1;}else{if(savedTag==1){printf(读取文件将会更改原来的记录,);printf(是否保存原来记录?(y/n));gets(str);if(str[0]!='n'&&str[0]!='N')saveRecords();15}numStus=0;}}printf(请输入要读取的文件名(直接回车选择文件stu_info):);gets(fname);if(strlen(fname)==0)strcpy(fname,stu_info);if((fp=fopen(fname,rb))==NULL){printf(打不开文件!请重新选择\'n);return-1;}printf(\n取文件...\n);while(!feof(fp)){if(numStus=arraySize)16{records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));if(records==NULL){printf(memoryfailed!);exit(-1);}arraySize=arraySize+INCR_SIZE;}if(fread(&records[numStus],sizeof(StuInfo),1,fp)!=1)break;//按照addRecord函数的方法,更新名次records[numStus].index=getIndex(records[numStus].sum);numStus++;}fclose(fp);17printf(现在共有%d条记录。,numStus);return0;}#includestudent.h//******************文件存储操作函数*********************intsaveRecords(void){FILE*fp;charfname[30];if(numStus==0){printf(没有记录可存!);return-1;}printf(请输入要存入的文件名(直接回车选择文件stu_info):);gets(fname);18if(strlen(fname)==0)strcpy(fname,stu_info);if((fp=fopen(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;return0;}//*************
本文标题:C语言程序设计报告——学生信息管理系统
链接地址:https://www.777doc.com/doc-2397834 .html