c语言实验报告三 学生成绩管理系统_c语言实验报告三
c语言实验报告三 学生成绩管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实验报告三”。
1.实验内容
实现一个学生成绩处理程序,先输入多名学生的学号和成绩,然后进入菜单,可以选择打印,添加,修改,删除或查询成绩(学号查询和成绩段查询)。
2.实验步骤 2.1 程序1 2.1.1 程序功能
这是一个学生成绩处理程序,通过用户输入多名学生的学号和成绩,然后进入菜单,可以选择打印,添加,修改,删除或查询成绩(学号查询和成绩段查询)。2.1.2 设计思路
将一个大程序分块化处理,各个部分先用普通方法实现,在能运行的条件下改用插入排序和折半查找实现。先实现输入成绩和菜单,再一项一项实现菜单中的功能。
2.1.3 流程图或其他描述(不要求可以不写)
2.1.4 程序代码(要有注释)
//实现一个学生成绩处理程序,可以选择打印、添加、修改、删除或查询成绩(学号和成绩段查询)
#include #include #include #include #define N 80
typedef struct student { long num;int score;}STU;
STU stu[N];int n=0;int KEY=0;int k;
void Input();void Output();void Add();void Direct();void Delete();void Search();void Sch();void Save();void Read();
void main(){
switch(chos){ case 1: Input();break;system(“cls”);printf(“n”);printf(“学生成绩管理系统nn”);printf(“1.录入n2.显示n3.添加n4.修改n”);printf(“5.删除n6.查找n7.查询n8.退出n”);printf(“n请选择: ”);scanf(“%d”, &chos);int chos;case 2:
} Output();break;case 3: Add();break;case 4: KEY = 1;Search();break;case 5: Delete();break;case 6: Search();break;case 7: Sch();break;case 8: exit(0);break;default:
} printf(“错误!请按要求输入!”);Sleep(2000);main();void Input(){
} int i=-1;system(“cls”);printf(“当输入学号为负时返回!n”);do{
i++;printf(“n”);printf(“请输入第%2d个学生的学号: ”, i+1);scanf(“%ld”, &stu[i].num);if(stu[i].num =0);if(stu[i].num
} Read();printf(“nn任意键返回!”);getchar();getchar();main();void Add(){
for(i=0;i
}
if(stu[N-1].num
for(j=n;j>i;j--){
} stu[i].num = stu[N-1].num;stu[i].score = stu[N-1].score;break;stu[j].num = stu[j-1].num;stu[j].score = stu[j-1].score;}else{
} stu[n].num = stu[N-1].num;stu[n].score = stu[N-1].score;break;}n++;printf(“修改后的”);Save();void Direct(){
}
void Delete(){
system(“cls”);printf(“请输入要删除信息的学生学号: ”);scanf(“%ld”, &del);getchar();printf(“确认删除?(Y/N)”);int i, del;char key;printf(“请输入修改后的成绩: ”);scanf(“%d”, &stu[k].score);printf(“修改后的成绩为:n”);printf(“t%8ldt%dn”, stu[k].num, stu[k].score);printf(“nn”);printf(“修改后的”);Save();
} scanf(“%c”, &key);if(key=='y' || key=='Y'){
} printf(“修改后的”);Save();for(i=0;i
} if(del == stu[i].num){
} stu[i] = stu[i+1];n-= 1;void Search(){
int i;char key = 'y';
} long search;system(“cls”);if(KEY==1)printf(“n请输入要修改成绩学生的学号: ”);else printf(“n请输入要查询成绩学生的学号: ”);scanf(“%ld”, &search);for(i=0;i
} if(KEY == 1)Direct();KEY = 0;if(search == stu[i].num){
} printf(“学生信息为:n”);printf(“t%ldt%dn”, stu[i].num, stu[i].score);k = i;void Sch(){
}
void Save(){ printf(“任意键返回!”);getchar();getchar();main();for(i=0;i
} if(stu[i].score>=a && stu[i].score
} FILE *fp;if((fp=fopen(“score.bin”, “wb”))== NULL){
} fwrite(stu, sizeof(STU), n, fp);fclose(fp);printf(“Failed to save the data!n”);exit(0);printf(“学生成绩已储存在”score.bin“中!n”);printf(“nn任意键返回!”);getchar();getchar();main();void Read(){
FILE *fp;int i, total;
} printf(“学生信息:n”);if((fp=fopen(“score.bin”, “rb”))== NULL){
} printf(“Failed to read the data!n”);exit(0);for(i=0;!feof(fp);i++){ } fclose(fp);fread(&stu[i], sizeof(STU), 1, fp);total = i-1;for(i=0;i
3.实验体会
3.1 调试中出现的问题及解决过程
在程序中运用数组时还是不够熟练,调试时总出现指代不明或无法显示所要内容的情况,在认真看老师课上例子后找出错误所在,修改后运行成功。
3.2 心得体会 3.3 实验改进建议
在查询某个学生成绩,可实现查询第n-m名学生成绩,查询分数在n-m之间的学生成绩,查询平均成绩;学生成绩修改(增加、删除、修改)等。