1、对数据进行保存,用save函数向文件中写入数据实现该功能。7、退出程序五、调试方法以及测试过程中的问题及解决方法调试方法:逐条的对程序中的错误进行修改;修改程序中的变量、声明新函数以及声明头文件对函数进行调试。测试过程中遇到的问题:1、删除学生信息功能不能实现。 问题描述:在选择删除功能后不能把选择的学生信息删除,而总是删除其他学生的信息。 解决办法:出现这个问题肯定是数据覆盖的时候出现了错误,也就是循环出现了错误。检查循环程序后发现,循环体内数据交换出现了错误,没有定义结构体变量。重新定义结构体变量后问题解决了。2、显示结果时候出错每一个功能在现实结果现实的信息部完整,部分信息部能现实或被覆
2、盖。现实出错也就是printf语句中的结构没有排列好所导致的。检查所有的Printf语句后发现所有的printf语句中少输出了以个语文成绩,且它们不能完全对齐。在增加了“语文”,修改了转义字符以及空格后,问题解决了。3、在查询信息的时候出错在输入不在文件中保存的姓名、学号时,没有信息提示。出现此问题说明if语句后少了一条else语句,加上该语句后,显示的结果正确了。4、打开文件出错当显示保存成功后关闭程序。重新打开程序选择打开文件后,文件不能正常打开,或打开文件后没有显示结果。查看文件文件中有数据,说明文件在保存的是后没有出错。再仔细观察运行结果后,发现该函数在执行到循环输出的时候把该循环跳了
3、过去没有执行。出现此问题是因为循环的终止条件改变了。将openl函数该为有返回值函数之后,重新定义了一个see函数来调用openl函数,并在see函数中用循环输出已经打开的文件中的数据。重新定义一个函数后保存的文件可以成功的打开。5、在排序后没有保存文件在order函数后边加上了printf(是否保存?(y or n); getchar(); scanf(%c,&a); if(a=y) save(); else printf(退出语句后可以选择是否保存排序后的文件。六、设计心得 通过一个星期的课程设计,我更深刻的了解了C语言中每个函数的含义,领会了算法是C语言的灵魂这句话的真谛。一个好的算法可
4、以使程序简洁,运行速度更快。同时也对C语言中的循环,函数的调用有了更深的理解。虽然这次的课程设计,老师已经给出了程序让我们改错。看起来比较容易,但是要让程序实现要求的几个功能却不是很容易。而且要看懂每一个函数也不是十分的容易。在修改程序的过程中也收获了很多以前忽略的东西。在修改的过程中巩固了基础,认识了自已以前常犯得错误,也发现了自己的不足之处。在程序编写中,我认识编写一个系统不仅仅要有良好的用户界面,良好的程序编写风格也是相当重要的。只有良好的种程序编写风格,程序代码的可读性才会好,开发的复杂度才能大大减少,检查错误、修改代码时才会更加容易下手。通过实际操作,学会 C语言程序编程的基本步骤、
5、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到了团队协作的重要性。七、程序代码#includestdio.hconio.hstring.hstdlib.hvoid look(); /*声明查看函数*/void save(); /*声明保存函数*/void search_name(); /*声明按姓名查看函数*/void search_number(); /*声明按学号查看函数*/void order(); /*声明排序函数*/void del(); /*声明删除函数*/int openl(); /*声明打开函数*/void welcome(); /*声明我的个人
6、信息函数*/void type(); /*声明输入函数*/void see(); /*声明打开并查看文件函数*/struct student /*定义学生信息的结构体类型*/ char num15; /*学号*/ char name20; /*姓名*/ char sex4; /*性别*/ int english; /*英语成绩*/ int math; /*数学成绩*/ int chinese; /*语文成绩*/ float aver; /*平均成绩*/ float sum; /*总成绩*/stu100;int n; /*声明一个全局变量*/void main() /*主函数即用户的操作界面*/
7、 system(color 1E /*设计文本颜色*/ int b,flag=0; /*声明局部变量*/ while(1) /*循环输出以下信息*/ printf(nttt欢迎来到学生成绩管理系统!nntttt 郗绿阳制作nttt-nttt1.键入学生的信息nn /*键入学生的信息*/ttt2.查看录入的学生信息nn /*查看录入的学生信息*/ttt3.按姓名查看学生的信息nn /*按姓名查看学生的信息*/ttt4.按学号查看学生的信息nn /*按学号查看学生的信息*/ttt5.按平均成绩排序nn /*排序*/ttt6.删除学生信息nn /*删除学生信息*/ttt7.保存学生信息nn /*保存
8、*/ttt8.打开文件nn /*打开文件*/ttt9.我的个人信息nn /*我的个人信息*/ttt0.退出nn /*退出*/ttt请输入你的选择: scanf(%db); switch(b) case 1:type();break; /*调用键入学生信息函数*/ case 2:look(); /*调用查看函数*/ case 3:search_name(); /*调用姓名查看函数*/ case 4:search_number(); /*调用学号查看函数*/ case 5:order(); /*调用排序函数*/ case 6:del();/*调用删除函数*/ case 7:save();/*调用保
9、存函数*/ case 8:see();/*调用打开文件函数*/ case 9:welcome();/*调用我的个人信息函数*/ case 0:flag=1;/*退出SWITCH语句*/ default :错误! if(flag) break; /*如果选择0就退出循环*/ void welcome() /*我的个人信息函数*/ system(CLSnntt-个人信息- /*在屏幕上输出一下信息*/nnnntt姓名:郗绿阳tttSex:男ntt年龄:20nnttt-学习经历-nnntt小学:北大小学nntt初中:禹州市神垕一中nnttS高中:禹州五高nntt大学:洛阳理工学院nnnntt按任意键
10、返回欢迎屏幕! getch(); /*按任意键返回主函数*/void type() /*定义键入学生信息函数*/ int i; /*定义局部变量*/tt输出你想输入的学生信息个数: scanf(n); for(i=0;in;i+) /*输入每个学生的信息*/nttt-nttt学号:%sstui.num); /*输入学号*/ttt姓名:stui.name); /*输入姓名*/ttt性别:%Sstui.sex); /*输入性别*/ttt英语:stui.english); /*输入英语成绩*/ttt数学:stui.math); /*输入数学成绩*/ttt语文:stui.chinese); /*输入语
11、文成绩*/stui.aver=(float)stui.english+(float)stui.math+(float)stui.chinese)/3;/*计算平均成绩*/stui.sum=(float)stui.english+(float)stui.math+(float)stui.chinese;/*计算总成绩*/ttt平均成绩=%4.1fn,stui.aver); /*输出平均成绩*/ttt总成绩=%4.1fn,stui.sum); /*输出总成绩*/nnttt按任意键返回菜单!void save() /*建立保存文件函数*/FILE *fp; /*定义文件型指针*/ if(fp=fop
12、en(student.txt,wb)=NULL) /*打开输出文件*/不能打开文件! return; /*终止程序*/i+) /*向student文件中写入信息*/ if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(文件写入错误n fclose(fp); /*关闭文件*/nnnnttt学生信息保存成功!nnnnttt按任意键返回菜单!void look() /*定义查看函数*/ /n=openl(); /*调用openl函数*/t学号t姓名t性别t英语t数学t语文t平均成绩t总成绩ni+) /*输出所有的学生信息*/%10st%st
13、%2st%dt%dt%dt%3.1ftt%6.1fn,stui.num,stui.name, stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui.sum);nnnttt按任意键返回菜单void search_name() /*按姓名查看函数*/ /*声明字符数组*/ttt请输入学生姓名:,name);i+) if(strcmp(stui.name,name)=0) /*将输入的姓名与结构体中的姓名进行比较*/ stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui
14、.sum);void search_number() /*定义按学号查看函数*/ char number15;ttt请输入学号:,number); if(strcmp(stui.num,number)=0) /*将输入的学号与结构体中的学号进行比较*/void order() /*定义排序函数*/ int i,j; char a; struct student temp; /*声明结构体变量*/i+) /*对数据进行排序*/ for(j=i+1;jj+) if(stui.sumstuj.sum) temp=stui; stui= stuj; stuj=temp; getchar(); if(a
15、=) /*是否保存排序后的文件*/ save(); elsevoid del() /*定义删除学生信息函数*/ttt输入学生名字: if(strcmp(stui.name,name)=0) getch();真的删除? getchar(); scanf( if(a=) /*是否删除该信息*/ for(; stui=stui+1; n=n-1; printf(你已经删除信息 else getch();int openl() /*定义打开文件函数*/system( FILE *fp;rb)=NULL)Cannot open file.n exit(0);feof(fp); fread(&stui,sizeof(struct student),1,fp); return(i-1);void see() /*打开并查看文件*/ n=openl();文件打开成功!按任意键查看!八、运行结果菜单屏幕输入学生信息查看学生信息按姓名查询按学号查询按平均成绩排序删除学生信息保存文件打开文件我的个人信息
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1