学生成绩管理系统
2012-09-16 15:43
288 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stddef.h> #include "conio.h" #define N 100 struct student { char name[20]; char number[10]; char sex[2]; unsigned int age; char tel[20]; char address[20]; float math; float english; float physics; float computer; float sum; }stu ; char filename[30];//全局变量,用来保存要打开的文件名字 int input(struct student *arr,int n); void display(struct student *arr,int n); void sort(struct student *arr,int n); int insert(struct student *arr,int n); int Delete(struct student *arr,int n); int add(struct student *arr,int n); void WriteToText(struct student *arr,int n); int main() { int n=0; char selmenu;//功能编号 struct student stu ;//学生信息 do //循环显示界面 { system("cls"); //清屏 printf("\n\n"); printf("欢迎使用学生管理系统\n"); printf("---------------------\n"); printf("学生成绩管理系统 \n\n"); printf(" 1.输入学生信息 \n"); printf(" 2.显示所有的学生信息\n"); printf(" 3.按总成绩进行拍序\n"); printf(" 4.插入一条记录\n"); printf(" 5.按姓名查找,删除一条记录\n"); printf(" 6.新增功能,输出统计信息\n"); printf(" 7.循环写入数据\n"); printf(" 8.退出学生成绩管理系统\n\n"); printf("请输入功能选择编号:"); fflush(stdin); //清空输入缓冲区 scanf("%c",&selmenu);//选择的功能编号 switch(selmenu) //输入不同功能编号调用相应函数 { case 1:input(stu,n); break; case 2:display(stu,n); break; case 3:sort(stu,n); break; case 4:insert(stu,n); break; case 5:Delete(stu,n); break; case 6:add(stu,n);//新增信息 break; case 7:WriteToText(stu,n);//把记录写入到文件中 break; case 8:exit(0);//退出 break; } }while(selmenu!='8'); //判断是否退出 printf("*^-^*谢谢使用*^-^*\n"); printf(" 完成任务 "); getchar(); } int input(struct student *arr,int n)//输入 { int i = 0; char ch; //接受指令 do //使用户控制输入学生成绩 { system("cls"); printf("\n输入第%d个学生stddef.h 的信息:\n输入学生姓名: ",n+i); scanf("%s",arr[n+i].name); printf("\n学号: "); scanf("%s",arr[n+i].number); printf("\n性别: "); scanf("%s",arr[n+i].sex); printf("\n年龄: "); scanf("%d",&arr[n+i].age); printf("\n电话: "); scanf("%s",arr[n+i].tel); printf("\n地址: "); scanf("%s",arr[n+i].address); printf("\n数学成绩: "); scanf("%f",&arr[n+i].math); printf("\n英语成绩: "); scanf("%f",&arr[n+i].english); printf("\n物理成绩: "); scanf("%f",&arr[n+i].physics); printf("\n计算机成绩: "); scanf("%f",&arr[n+i].computer); i++; fflush(stdin);//清空输入缓冲区 printf("\n是否继续输入(y/n)\n"); ch = getchar(); }while(ch != 'n'||ch!='N'); //判断用户指令,是否继续输入 return(n+i); } void display(struct student *arr,int n) //全部显示 { system("pause"); int i; printf("\t\t\t-------------------------------------------------------------\n"); printf("\t\t\tnumber,name,sex,age,tel,address,english,math,physics,computer\n"); printf("\t\t\t--------------------------------------------------------------\n"); for(i=1;i<n+1;i++) { printf("\t\t\t%-6s\t%-4s\t%-4s\t%-4d\t%-4s\t%-4s\t%-6.1f\t%-6.1f\t-6.1%f\t-6.1f\n", arr[i-1].number,arr[i-1].name,arr[i-1].sex,arr[i-1].age,arr[i-1].tel, arr[i-1].address,arr[i-1].english,arr[i-1].math,arr[i-1].physics,arr[i-1].computer); if(i>1&&i%10==0) { printf("\t\t\t------------------------------------------------------\n"); printf("\t\t\t"); system("pause"); printf("\t\t\t------------------------------------------------------\n"); } } printf("\t\t\t"); system("pause"); } void sort(struct student *arr,int n) //按总分排行输 入 { int i,j,k; //变量i,j,最小数位置k struct student t;//交换临时变量 arr .sum=arr .math+arr .english+arr .computer+arr .physics; if(n == 0) //判断数组中学生成绩是否存在 printf("无学生成绩,请先录入学生信息\n"); else { for(i = 0;i<n-1;i++)//按总分对学生成绩排序 { k = i; for(j = i+1;j<n;j++) //k为arr[i]到arr[count-1]中最小数的位置 if((arr[k].sum)<(arr[j].sum)) k = j; if(k!=i) //如果最小数不是比价数 ,对调 { t = arr[k]; arr[k] = arr[i]; arr[i] = t; } } printf("\n总分排榜版: \n\n"); printf("\t姓名\t学号\t性别\t年龄\t电话\t地址\t数学\t英语\t物理\t计算机\t总分\t名次 词\n"); for(j = 0;j<n;j++) //输出按总分排榜后的学生成绩和名次 printf("\t%-6s\t%-4s\t%-4s\t%-4s\t%-4s\t%-4s\t%-6.1f\t%-6.1f\t-6.1%f\t-6.1f\t-6.1%f\t-5d\n",arr[j].name,arr[j].number, arr[j].sex, arr[j].age,arr[j].tel,arr[j].address,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].sum,j+1); } printf("\n回车键返回主程序\n"); fflush(stdin); getchar(); } int insert(struct student *arr,int n) //插入 { system("cls"); printf("输入学生姓名: "); scanf("%s",arr .name); printf("\n学号: "); scanf("%s",arr .number); printf("\n性别: "); scanf("%s",&arr .sex); printf("\n年龄: "); scanf("%d",&arr .age); printf("\n电话: "); scanf("%s",arr .tel); printf("\n地址: "); scanf("%s",arr .address); printf("\n数学成绩 fflush(stdin);//清空输入缓冲区: "); scanf("%f",&arr .math); printf("\n英语成绩: "); scanf("%f",&arr .english); printf("\n物理成绩: "); scanf("%f",&arr .physics); printf("\n计算机成绩: "); scanf("%f",&arr .computer); fflush(stdin); n++; printf("\t\t\tinsert Successed!\n"); return(n); } int Delete(struct student *arr,int n) { int i=0,j; char name[20]; // 学生姓名 system("cls"); //清屏函数 printf("\n请输入要删除的学生资料: \n"); printf("\n学生姓名: "); scanf("%s",name); printf("\n"); while(strcmp(arr[j].name,name)!=0&&i<n) i++; if(i==n) { printf("\t\t\tnot find!\n"); return(n); } for(j=i;j<n-1;j++) { for(j=i;j<n-1;j++) strcpy(arr[j].number,arr[j+1].number); strcpy(arr[j].name,arr[j+1].name); strcpy(arr[j].sex,arr[j+1].sex); arr[j].age=arr[j].age; strcpy(arr[j].tel,arr[j+1].tel); strcpy(arr[j].address,arr[j+1].address); arr[j].math=arr[j+1].math; arr[j].english=arr[j+1].english; arr[j].physics=arr[j+1].physics; arr[j].computer=arr[j+1].computer; } printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/ return(n-1); } int add(struct student *arr,int n)//新增 { int i =0,num; FILE *fp; char filename[20]; printf("\t\tinput the filename:"); scanf("\t\t\t%s",filename); if((fp=fopen(filename,"rb"))==NULL) { printf("\t\t\tcan not open the file\n"); printf("\t\t\t"); system("pause"); return(n); } fscanf(fp,"%d",&num); while(i<num) { fscanf(fp,"%s%s%s%d%s%s%f%f%f%f\n", arr[n+i].number,arr[n+i].name,arr[i-1].sex,&arr[i-1].age,arr[i-1].tel,arr[i-1].address,&arr[i-1].english,&arr[i-1].math,&arr[i-1].physics,&arr[i-1].computer); i++; } n+=num; fclose(fp); printf("\t\t\tSuccessed!\n"); printf("\t\t\t"); system("pause"); return(n); } void WriteToText(struct student *arr,int n) /*将所有记录写入文件*/ { int i=0; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/ printf("\t\t\tInput the filename:"); scanf("\t\t\t%s",filename); if((fp= fopen(filename,"w"))==NULL) /*打开文件*/ { printf("\t\t\tcann't open the file\n"); system("pause"); return; } fprintf(fp,"%d\n",n); /*循环写入数据*/ while(i<n) { printf("\t%-6s\t-4s\t%-4s\t%-4s\t%-4s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t-%5.1f\n",arr[i].name,arr[i].number,arr[i].sex, arr[i].age,arr[i].tel,arr[i].address,arr[i].math,arr[i].english,arr[i].physics,arr[i].computer); i++; } fclose(fp); /*关闭文件*/ printf("Successed!\n"); /*返回成功信息*/ }
有一个错误,是#endif without #if 头文件的错误,可能是程序中调用stddef.h这个文件的时候有问题!还没解决!
相关文章推荐
- C语言编写的简单的学生成绩管理系统
- C++课程设计:学生成绩管理系统
- 简单学生成绩管理系统(Java实现)
- VB案例:学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- C++基础知识复习之--顺序表学生成绩管理系统
- 学生成绩管理系统的代码
- 学生成绩管理系统
- 学生成绩管理系统课程设计(C语言,链表实现)
- Java课程设计—学生成绩管理系统
- 学生成绩管理系统
- C_综合使用数组实现简单的学生成绩管理系统
- 我至今写的最长的代码!!(学生成绩管理系统)
- C语言——学生成绩管理系统
- 《C语言编写 学生成绩管理系统》
- 汇编语言学生成绩管理系统(一)结构体的使用
- VC版学生成绩管理系统
- 学生成绩管理系统(2)
- 学生成绩管理系统c++