学生成绩查询系统代码(C语言学生成绩管理系统代码)
本文目录
- C语言学生成绩管理系统代码
- C语言学生成绩管理系统代码 急!!!!!!
- 求一个用java写的学生成绩管理信息系统的源代码,要求有界面,能实现
- 学生成绩管理系统C语言代码
- 谁会学生成绩查询系统,麻烦发代码过来!!要C语言的
- c语言学生成绩管理系统的用户登录部分,输入用户名和密码的代码
- 求C语言版数据结构题目“学生成绩管理系统”代码
- 用C语言写一个成绩查询系统
- C语言 学生成绩管理系统
- 学生成绩录入查询系统C语言程序
C语言学生成绩管理系统代码
#include《stdio.h》#include《string.h》//外部函数声明void menu(); void line();/* 定义全局变量其中n代表学生人数,ave每科成绩的最高分, min代表每个学生五门成绩的平均分*/int n,i,j;float ave;//定义全局结构体struct student{long int num; //学生学号char name; //学生姓名float score; //学生成绩}stu;//主函数开始int main(){void enter(); //enter:输入学生成绩函数(这是函数声明)void export(); //export:输出学生成绩函数(这是函数声明)void stat(); //stat:学生成绩统计函数(这是函数声明)void rank(); //rank:学生成绩排名函数(这是函数声明)void query(); //query:学生成绩查询函数(这是函数声明) //定义内部变量//界面框架menu();printf(" 学生成绩管理信息系统\n");printf("》》请根据以下提示命令字符进行操作!\n");printf("q:退出 a:成绩输入 p:成绩输出 s:成绩统计 w:成绩排名 t:成绩查询\n");menu();//函数调用,选择成绩管理方式printf("请选择成绩管理方式》》");while(1){char c;printf("》》\n");scanf("%c",&c);if (c==’q’)printf("这是退出学生成绩管理信息系统函数\n》》\n");break;switch(c){case’a’:enter();break;case’p’:export(); break;case’s’:stat();break;case’v’:rank();break;case’t’:query();break;default:("命令无效,请重新输入!\n");}}return 0;}//主函数部分结束//定义函数void menu(){printf("*******************************************************************************\n");}//定义下划线函数void line(){printf("--------------------------------------------------------------------------------\n");}//定义学生成绩输入函数开始void enter(){ menu();printf("学生成绩输入\n请按以下格式进行数据输入\n");printf("请输入学生学号姓名》》");printf(" 学号 学生姓名\n");printf("请输入学生成绩 》》 ");printf(" A成绩 B成绩 C成绩 D成绩 E成绩\n");printf("例如\n请输入学生学号姓名》》");printf("2012060402,张三\n");printf("请输入学生成绩 》》 ");printf("95.5,97.0,89.0,92.0,85.0\n");menu();//输入学生成绩格式备注printf("\n请输入学生人数 》》 ");scanf("%d",&n);//用for循环输入学生成绩for(i=0;i《n;i++){printf("请输入学生学号姓名》》");scanf("%ld,%s",&stu.name);printf("请输入学生成绩 》》 ");scanf("%f",&stu);scanf("%f",&stu);scanf("%f",&stu);scanf("%f",&stu);scanf("%f\n",&stu);getchar();student_ave)/5; //用for循环计算每科成绩z总分for(j=0;j《5;j++){ave;} //用for循环得出每科成绩最高分for(j=0;j《5;j++){if(high){high;}}//用for循环得出每科成绩最低分for(j=0;j《5;j++){ if(i==0){min;}if(min){min;}}}//学生成绩输入完成//用for循环计算每科成绩平均分for(j=0;j《5;j++){ave/n;} getchar();menu();printf("\n");}//定义学生成绩输入函数结束//定义学生成绩输出函数开始void export(){int i;printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");for(i=0;i《n;i++){printf("%9ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu.name,stu); }menu();}//定义学生成绩输出函数结束//定义学生成绩统计函数开始void stat(){printf("各科平均成绩如下!\n");line();printf("\n");printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n"); //这是每科成绩平均分for(i=0;i《5;i++){printf(" %6.1f ",ave);}printf("\n");printf("\n");//只是每科成绩的最高分printf("各科最高分如下!\n");line();printf("\n");printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");for(j=0;j《5;j++){printf(" %6.1f ",high);}printf("\n");printf("\n");//这是每科成绩最低分printf("各科最低分如下!\n");line();printf("\n");printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");for(i=0;i《5;i++){printf(" %6.1f ",min);}printf("\n");printf("\n");}//定义学生成绩统计函数结束//定义学生成绩排名函数开始void rank(){int k=1,z;float t=0;float student_high={0};printf("学生成绩排名如下:\n\n");line();printf("\n");printf("名次 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E 平均分 \n");//把每个学生五门课的成绩按从大到小的顺序排列并存在数组student_high中去for(i=0;i《n;i++){student_high;}for(j=0;j《n;j++){for(i=0;i《n-j;i++){if(student_high){t=student_high;student_high;student_high=t;}}}//按成绩排名输出学生成绩信息for(i=0;i《n;i++){for(j=0;j《n;j++){if(student_high){i++;}if(student_high){printf("%d %ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f %7.1f\n",k,stu.name,stu);for(z=j+1;z《n;z++){if(student_high){k++;}} }}k++;}line();printf("\n");}//定义学生成绩排名函数结束//定义学生成绩查询函数开始void query(){//查询成绩格式char c2,shu_name代表输入查询姓名,shu_num代表输入查询学号int shu_num;menu();printf("学生成绩查询\n请按以下方式查询\na:按学生姓名查询 b:按学生学号查询 q:退出\n"); menu();printf("\n\n");//选择查询方式while(c2!=’q’){printf("请选择查询成绩方式》》");scanf("%c",&c2);getchar(); //按姓名查询成绩if(c2==’a’){line();printf("请输入学生姓名》》");scanf("%s",shu_name);getchar();for(i=0;i《n;i++){if(strcmp(shu_name,stu.name)==0){printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n"); printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu.name, stu);}else if(shu_name!=stu.name&&i==(n-1)){printf("无此学生成绩\n");} }line();printf("\n");}//按学号查询成绩else if(c2==’b’){line();printf("请输入学生学号》》");scanf("%d",&shu_num);getchar();for(i=0;i《n;i++){if(shu_num==stu.num){printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n"); printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu.name, stu);}else if(shu_num!=stu.num&&i==(n-1)){printf("无此学生成绩\n");}}line();printf("\n");} }line();printf("\n\n");}//定义学生成绩查询函数结束
C语言学生成绩管理系统代码 急!!!!!!
参考#include "stdio.h" /*定义学生结构体*/ struct Student { char ID; char Name; float Mark1; float Mark2; float Mark3; float Average; }; /*声明学生数组及学生数量*/ struct Student students; int num=0; /*求平均值*/ float Avg(struct Student stu) { return (stu.Mark1+stu.Mark2+stu.Mark3)/3; } /*通过学号返回数组下标*/ int Student_SearchByIndex(char id) { int i; for (i=0;i《num;i++) { if (strcmp(students.ID,id)==0) { return i; } } return -1; } /*通过姓名返回数组下标*/ int Student_SearchByName(char name) { int i; for (i=0;i《num;i++) { if (strcmp(students.Name,name)==0) { return i; } } return -1; } /*显示单条学生记录*/ void Student_DisplaySingle(int index) { printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩"); printf("-------------------------------------------------------------\n"); printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students.Name, students.Average); } /*插入学生信息*/ void Student_Insert() { while(1) { printf("请输入学号:"); scanf("%s",&students.ID); getchar(); printf("请输入姓名:"); scanf("%s",&students.Name); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark1); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark2); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark3); getchar(); students); num++; printf("是否继续?(y/n)"); if (getchar()==’n’) { break; } } } /*修改学生信息*/ void Student_Modify() { float mark1,mark2,mark3; while(1) { char id; int index; printf("请输入要修改的学生的学号:"); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要修改的学生信息为:\n"); Student_DisplaySingle(index); printf("-- 请输入新值--\n"); printf("请输入学号:"); scanf("%s",&students.ID); getchar(); printf("请输入姓名:"); scanf("%s",&students.Name); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark1); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark2); getchar(); printf("请输入成绩:"); scanf("%f",&students.Mark3); getchar(); students); } printf("是否继续?(y/n)"); if (getchar()==’n’) { break; } } } /*删除学生信息*/ void Student_Delete() { int i; while(1) { char id; int index; printf("请输入要删除的学生的学号:"); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要删除的学生信息为:\n"); Student_DisplaySingle(index); printf("是否真的要删除?(y/n)"); if (getchar()==’y’) { for (i=index;i《num-1;i++) { students; } num--; } getchar(); } printf("是否继续?(y/n)"); if (getchar()==’n’) { break; } } } /*按姓名查询*/ void Student_Select() { while(1) { char name; int index; printf("请输入要查询的学生的姓名:"); scanf("%s",&name); getchar(); index=Student_SearchByName(name); if (index==-1) { printf("学生不存在!\n"); } else { printf("你要查询的学生信息为:\n"); Student_DisplaySingle(index); } printf("是否继续?(y/n)"); if (getchar()==’n’) { break; } } } /*按平均值排序*/ void Student_SortByAverage() { int i,j; struct Student tmp; for (i=0;i《num;i++) { for (j=1;j《num-i;j++) { if (students.Average) { tmp=students; students; students=tmp; } } } } /*显示学生信息*/ void Student_Display() { int i; printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩"); printf("-------------------------------------------------------------\n"); for (i=0;i《num;i++) { printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students.Name, students.Average); } } /*将学生信息从文件读出*/ void IO_ReadInfo() { FILE *fp; int i; if ((fp=fopen("Database.txt","rb"))==NULL) { printf("不能打开文件!\n"); return; } if (fread(#,sizeof(int),1,fp)!=1) { num=-1; } else { for(i=0;i《num;i++) { fread(&students,sizeof(struct Student),1,fp); } } fclose(fp); } /*将学生信息写入文件*/ void IO_WriteInfo() { FILE *fp; int i; if ((fp=fopen("Database.txt","wb"))==NULL) { printf("不能打开文件!\n"); return; } if (fwrite(#,sizeof(int),1,fp)!=1) { printf("写入文件错误!\n"); } for (i=0;i《num;i++) { if (fwrite(&students,sizeof(struct Student),1,fp)!=1) { printf("写入文件错误!\n"); } } fclose(fp); } /*主程序*/ main() { int choice; IO_ReadInfo(); while(1) { /*主菜单*/ printf("\n------ 学生成绩管理系统------\n"); printf("1. 增加学生记录\n"); printf("2. 修改学生记录\n"); printf("3. 删除学生记录\n"); printf("4. 按姓名查询学生记录\n"); printf("5. 按平均成绩排序\n"); printf("6. 退出\n"); printf("请选择(1-6):"); scanf("%d",&choice); getchar(); switch(choice) { case 1: Student_Insert(); break; case 2: Student_Modify(); break; case 3: Student_Delete(); break; case 4: Student_Select(); break; case 5: Student_SortByAverage(); Student_Display(); break; case 6: exit(); break; } IO_WriteInfo(); } }
求一个用java写的学生成绩管理信息系统的源代码,要求有界面,能实现
以下方法实现了用户界面登陆import java.awt.*;import java.awt.event.*;public class DengLuJieMian extends Frame implements ActionListener{ Label username=new Label("用户名:");//使用文本创建一个用户名标签 TextField t1=new TextField();//创建一个文本框对象 Label password=new Label("密码:");//创建一个密码标签 TextField t2=new TextField(); Button b1=new Button("登陆");//创建登陆按钮 Button b2=new Button("取消");//创建取消按钮 public DengLuJieMian() { this.setTitle("学生信息管理系统");//设置窗口标题 this.setLayout(null);//设置窗口布局管理器 username.setBounds(50,40,60,20);//设置姓名标签的初始位置 this.add(username);// 将姓名标签组件添加到容器 t1.setBounds(120,40,80,20);// 设置文本框的初始位置 this.add(t1);// 将文本框组件添加到容器 password.setBounds(50,100,60,20);//密码标签的初始位置 this.add(password);//将密码标签组件添加到容器 t2.setBounds(120,100,80,20);//设置密码标签的初始位置 this.add(t2);//将密码标签组件添加到容器 b1.setBounds(50,150,60,20);//设置登陆按钮的初始位置 this.add(b1);//将登陆按钮组件添加到容器 b2.setBounds(120,150,60,20);//设置取消按钮的初始位置 this.add(b2);// 将取消按钮组件添加到容器 b1.addActionListener(this);//给登陆按钮添加监听器 b2.addActionListener(this);// 给取消按钮添加监听器 this.setVisible(true);//设置窗口的可见性 this.setSize(300,200);//设置窗口的大小 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });//通过内部类重写关闭窗体的方法 } public void actionPerformed(ActionEvent e) { if(e.getSource()==b1)//处理登陆事件 { String name=t1.getText(); String pass=t2.getText(); if(name!=null&&pass.equals("000123"))//判断语句 { new StudentJieMian(); } } } public static void main(String args)//主函数 { new DengLuJieMian(); }}以下方法实现了学生界面设计import java.awt.*;import java.awt.event.*;class StudentJieMian extends Frame implements ActionListener{ MenuBar m=new MenuBar();//创建菜单栏 Menu m1=new Menu("信息");//创建菜单“信息” MenuItem m11=new MenuItem("插入");//创建“插入”的菜单项 MenuItem m12=new MenuItem("查询"); Menu m2=new Menu("成绩");//创建菜单“成绩” MenuItem m21=new MenuItem("查询"); public StudentJieMian() { this.setTitle("学生界面");//设置窗口标题 this.setLayout(new CardLayout());//设置窗口布局管理器 this.setMenuBar(m);//将菜单栏组件添加到容器 m.add(m1);//将信息菜单放入菜单栏 m.add(m2); m1.add(m11);//将“插入”菜单项添加到“信息”菜单 m1.add(m12); //将“查询”菜单项添加到“信息”菜单 m2.add(m21); //将“查询”菜单项添加到“成绩”菜单 m11.addActionListener(this); //给“插入”菜单项添加监听器m12.addActionListener(this); //给“查询”菜单项添加监听器 m21.addActionListener(this); //给“查询”菜单项添加监听器 this.setVisible(true); //设置窗口的可见性 this.setSize(300,200); //设置窗口的大小 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);//关闭窗口 } }); } public void actionPerformed(ActionEvent e) { if(e.getSource()==m11) //处理“添加信息”事件 { new AddStudent(); } if(e.getSource()==m12) //处理“查询信息”事件 { new SelectStudent(); } if(e.getSource()==m21) //处理“查询成绩”事件 { new ChengJiStudent(); } } public static void main(String args) { new StudentJieMian(); //创建一个对象 }
学生成绩管理系统C语言代码
#include"stdio.h"#include《string.h》#include《stdlib.h》#define N 30struct student{ int num; char name; int age; int Math; int English; int Physical; long int sum;}stu;enter(){int i,n; printf("How many students(1-%d)?:",N); scanf("%d",&n); printf("\nEnter data now\n\n"); for(i=0;i《n;i++) {printf("\n Input %dth student record.\n",i+1); input(i); } if(i!=0) save(n); printf_back(); /* browse or back */}add(){int i,n,m,k; FILE *fp; n=load(); printf("How many students are you want to add(1-%d)?:",N-n); scanf("%d",&m); k=m+n; for(i=n;i《k;i++) {printf("\n Input %dth student record.\n",i+1); input(i); } if((fp=fopen("score.txt","ab"))==NULL) {printf("Cannot open file.\n"); } for(i=n;i《k;i++) if(fwrite(&stu,sizeof(struct student),1,fp)!=1) printf("file write error.\n"); fclose(fp); printf_back();}/* insert(){int n,c; struct student s; n=load(); puts("\n Input one data.\n"); do {input(n); printf_face(); printf_one(n); printf("\n\nAre you sure?\n\n\t 1.Sure\t2.cancel and again\t3.Back without save \b\b"); scanf("%d",&c); if(c==1) { save(n+1); printf_back(); } else if(c!=2) menu(); } while(c==2);} */modify(){struct student s; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i《n;i++) {if((i!=0)&&(i%10==0)) {printf("\n\nRemember NO.031073- which needed modify.Pass any key to continue ..."); getch(); puts("\n\n"); } printf_one(i); printf("\n"); } do {printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-"); scanf("%d",&s.num); for(i=0;i《n;i++) if(s.num==stu.num) {k=i; s=stu; /* chengji beifei */ } if(k==-1) printf("\n\nNO exist!please again"); } while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) {printf("\nSuccessful ^_^.\n\nAre you modify another?\n\n\t1.Yes2.Back with save\t\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; /* end */ if(w2==1) stu=s; } if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */ } while(w0==1); menu();}delete(){struct student s; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i《n;i++) {if((i!=0)&&(i%10==0)) {printf("\n\nRemember NO.031073- which needed delete.Pass any key to continue ..."); getch(); puts("\n\n"); } printf_one(i); printf("\n"); } do {printf("\n\nEnter NO.031073- that you want to delete! NO.:031073-"); scanf("%d",&s.num); for(i=0;i《n;i++) if(s.num==stu.num) {k=i; s=stu; /* chengji beifei */ } if(k==-1) printf("\n\nNO exist!please again"); } while(k==-1); printf_face(); printf_one(k); printf("\nAre you sure?\n\n\t1.Sure2.Back without save in this time \b\b"); scanf("%d",&w1); if(w1==1) { stu.sum=0; printf("\nSuccessful ^_^.\n\nAre you delete another?\n\n\t1.Yes2.Back with save\t\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; /* end */ if(w2==1) stu=s; } if(w0!=1&&w2==1) save(n); } while(w0==1); menu();}modify_score(){struct student s; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i《n;i++) {if((i!=0)&&(i%10==0)) {printf("\n\nRemember NO.031073 which score needed modify.Pass any key to continue ..."); getch(); puts("\n\n"); } printf_one(i); printf("\n"); } do {printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-"); scanf("%d",&s.num); for(i=0;i《n;i++) if(s.num==stu.num) {k=i; s=stu; /* chengji beifei */ } if(k==-1) printf("\n\nNO exist!please again"); } while(k==-1); printf_face(); printf_one(k); w1=modify_score1(k); if(w1==1) {printf("\nSuccessful ^_^.\n\nAre you modify another score?\n\n\t1.Yes2.Back with save\t\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; /* end */ if(w2==1) stu=s; } if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */ } while(w0==1); menu();}order(){int i,j,k,n; struct student s; n=load(); for(i=0;i《n-1;i++) {k=i; for(j=i+1;j《n;j++) if(stu.num) k=j; s=stu=s; } save(n); puts("\n\n"); printf_back();}browse(){int i,j,n; n=load(); printf_face(); for(i=0;i《n;i++) {if((i!=0)&&(i%10==0)) {printf("\n\nPass any key to contiune ..."); getch(); puts("\n\n"); } printf_one(i); printf("\n"); } printf("\tThere are %d record.\n",n); printf("\nPass any key to back..."); getch(); menu();}save(int n){FILE *fp; int i; if((fp=fopen("score.txt","wb"))==NULL) {printf("\nCannot open file\n"); return NULL; } for(i=0;i《n;i++) if(stu.sum!=0) if(fwrite(&stu,sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp);}load(){FILE *fp; int i; if((fp=fopen("score.txt","rb"))==NULL) {printf("\nCannot open file\n"); return NULL; } for(i=0;!feof(fp);i++) fread(&stu,sizeof(struct student),1,fp); fclose(fp); return(i-1);}no_input(int i,int n){int k,w1; do {w1=0; printf("NO.:031073-"); scanf("%d",&stu.num); if(stu.num》N) {puts("Input error! Only be made up of(1-N).Please reinput!\n"); w1=1; } if(w1!=1) for(k=0;k《n;k++) if(k!=i&&(stu.num)) {puts("This record is exist. Please reinput!\n"); w1=1;break; } } while(w1==1);}enter_score(int i){printf("Math English Physical"); scanf("%d %d %d",&stu.Physical);}sum(int i){ stu.Physical;}input(int i){no_input(i,i); printf("name: age:"); scanf("%s %d",stu.age); enter_score(i); sum(i);}modify_score1(int i){int c,w1; do { puts("\nmodify by=》\n\n 1.Math 2.English 3.Physical4.all score 5.cancel and back"); printf("Which you needed?:\b\b"); scanf("%d",&c); if(c》5||c《1) {puts("\nChoice error! Please again!"); getchar(); } } while(c》5||c《1); do {switch(c) { case 1:printf("Math:");scanf("%d",&stu.Math);break; case 2:printf("English:");scanf("%d",&stu.English);break; case 3:printf("Physical:");scanf("%d",&stu.Physical);break; case 4:enter_score(i);break; case 5:break; } if(c》0&&c《5) sum(i); puts("\nNow:\n"); printf_face(); printf_one(i); printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time \b\b"); scanf("%d",&w1); } while(w1==2); return(w1);}modify_data(int i,int n){int c,w1; do { puts("\nmodify by=》\n\n 1.NO. 2.name 3.age 4.Math 5.English 6.Physical7.all score 8.all data 9.cancel and back"); printf("Which you needed?:\b\b"); scanf("%d",&c); if(c》9||c《1) {puts("\nChoice error! Please again!"); getchar(); } } while(c》9||c《1); do {switch(c) {case 1:no_input(i,n);break; case 2:printf("name:");scanf("%s",stu.name);break; case 3:printf("age:");scanf("%d",&stu.age);break; case 4:printf("Math:");scanf("%d",&stu.Math);break; case 5:printf("English:");scanf("%d",&stu.English);break; case 6:printf("Physical:");scanf("%d",&stu.Physical);break; case 7:enter_score(i);break; case 8:input(i);break; case 9:break; } if(c》3&&c《8) sum(i); puts("\nNow:\n"); printf_face(); printf_one(i); printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time \b\b"); scanf("%d",&w1); } while(w1==2); return(w1);}printf_face(){printf("\nNO.031073 name age Math English Physical sum\n");}printf_one(int i){ printf("%6d %8s %4d",stu.age); printf("%5d %5d %8d %10d",stu.sum);}printf_back(){int k,w; printf("\n\n\tSuccessful.^_^\n\n"); printf("What do you want to do?\n\n\t1.Browse all now\t2.Back:\b\b"); scanf("%d",&w); if(w==1) browse(); else menu();}menu(){int w1; char n; do { puts("\t\t****************MENU****************\n\n"); puts("\t\t\t\tA.Enter new data"); puts("\t\t\t\tB.Addition data"); puts("\t\t\t\tC.Modify data"); puts("\t\t\t\tD.Delete data"); puts("\t\t\t\tE.Modify score"); puts("\t\t\t\tF.Order by number"); puts("\t\t\t\tG.Browse all"); puts("\t\t\t\tH.Exit"); puts("\n\n\t\t************************************\n"); printf("Choice your number(A-H):\b\b"); n=getchar(); printf("\n"); if(n《’A’||n》’H’) w1=1; else w1=0; } while(w1==1); switch(n) {case ’A’:enter();break; case ’B’:add();break; case ’C’:modify();break; case ’D’:delete();break; case ’E’:modify_score();break; case ’F’:order();break; case ’G’:browse();break; case ’H’:exit(0); }}char password="123456";main(){ char s; printf("\t\t请输入密码:\n\t\t\n\t\t"); scanf("%s",s); if(!strcmp(s,password)) { printf("\n\t\t恭喜你进入学生成绩管理系统\n"); menu(); } else { printf("\t\t 密码错误\n\n"); main(); }}
谁会学生成绩查询系统,麻烦发代码过来!!要C语言的
#include《iostream.h》#include 《fstream.h》#include《iomanip.h》 #include《string.h》#include 《stdio.h》#include 《stdlib.h》#include 《malloc.h》#define LEN sizeof(Student)typedef struct student //定义学生结点 {int num;char name;int score;int sum;struct student *next;}Student;int n;Student *cinn(); //成绩录入函数 Student *sort_1(Student *head,int); //选择排序 函数 void sort_2(Student *head); // //求当前高分及均分函数 void print(Student *head); //打印出当前成绩 Student *sort_all(Student *head); //学生成绩统计排序入口函数 void find(Student *head); //查询函数 Student *add_new(Student *head); //增加新学生信息函数void deletee(Student *q,Student *p); //删除学生信息 void update(Student *p); //更新学生信息void deletee(Student *q,Student *p){ q-》next=p-》next; delete p;}void update(Student *p){ printf("\n请重新录入该生信息\n"); printf("\n请输入该学生的学号\n"); scanf("%d",&p-》num); printf("请输入该学生的语文成绩\n:"); scanf("%d",&p-》score); printf("请输入该学生的数学成绩\n:"); scanf("%d",&p-》score); printf("请输入该学生的英语成绩\n:"); scanf("%d",&p-》score); printf("请输入该学生的计算机成绩\n:"); scanf("%d",&p-》score); p-》sum=p-》score; } Student *cinn(){int flag; //暂存学号变量 Student *head,*p1,*p2;n=0;head=(Student *)malloc(LEN);p2=head;printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1); scanf("%d",&flag);while(getchar()!=’\n’);for(;flag;) { n++; p1=(Student *)malloc(LEN); p1-》num=flag; printf("请输入第%d名学生的姓名:",n); scanf("%s",p1-》name); printf("请输入第%d名学生的语文成绩:",n); scanf("%d",&p1-》score); printf("请输入第%d名学生的数学成绩:",n); scanf("%d",&p1-》score); printf("请输入第%d名学生的英语成绩:",n); scanf("%d",&p1-》score); printf("请输入第%d名学生的计算机成绩:",n); scanf("%d",&p1-》score); p1-》sum=p1-》score; p2-》next=p1; p2=p1; printf("\n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1); scanf("%d",&flag); }p2-》next=NULL;printf("\n\n");return head;}Student *sort_all(Student *head) //学生成绩统计排序入口函数 {int choose;for(;;) { printf("\n\t\t# # # # # 学生成绩统计排序 # # # #\n"); printf("\t\t#\t1.按学生学号排序\t #\n"); printf("\t\t#\t2.按学生总分排序\t #\n"); printf("\t\t#\t3.按学生语文成绩排序\t #\n"); printf("\t\t#\t4.按学生数学成绩排序\t #\n"); printf("\t\t#\t5.按学生英语成绩排序\t #\n"); printf("\t\t#\t6.按学生计算机成绩排序\t #\n"); printf("\t\t#\t7.单科高分及均分\t #\n"); printf("\t\t#\t8.显示当前学生成绩\t #\n"); printf("\t\t#\t0.返回上一级菜单\t #\n"); printf("\t\t# # # # # 由张骏友情提供# # # # #\n\n"); printf("请输入你要执行的操作:"); scanf("%d",&choose); while(getchar()!=’\n’); switch(choose) { case 1: case 2: case 3: case 4: case 5: case 6:head=sort_1(head,choose);break; //调用排序函数 case 7:print(head);sort_2(head);break; case 8:print(head);break; case 0:return head; default: printf("\n\n您的输入有误!请重新输入:\n\n");break; } }}Student *sort_1(Student *head,int choose) //选择排序 函数 {Student *p1,*p2=head-》next,*pm,*px; //p2从第一个学生结点开始 Student mid;if (!p2) return head; //判断链表是否为空 for(p1=p2;p1-》next!=NULL;p1=p1-》next) { pm=p1; for(p2=p1-》next;p2!=NULL;p2=p2-》next) switch(choose) { case 1:if (pm-》num》p2-》num) pm=p2;break; //按学号从小到达排序 case 2:if (pm-》sum《p2-》sum) pm=p2;break; //按总分从大到小排序 case 3:if (pm-》score) pm=p2;break;//按单科从大到小排序 case 4:if (pm-》score) pm=p2;break; case 5:if (pm-》score) pm=p2;break; case 6:if (pm-》score) pm=p2;break; } if (pm!=p1) { mid=*pm; //交换两个节点的内容 *pm=*p1; *p1=mid; px=pm-》next;//交换两个节点的顺序 pm-》next=p1-》next; p1-》next=px; } }printf("\n排序后的成绩表为:\n");print(head); //打印出当前学生成绩报表 return head;}void sort_2(Student *head) //求当前高分及均分函数 {Student *p=head-》next; //从当前第一个学生开始 int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;int max_sum,min_sum;int sum_1=0,sum_2=0,sum_3=0,sum_4=0; //总分 float aver_1,aver_2,aver_3,aver_4,aver_sum; //平均分 if (!p) return;max_1=min_1=p-》score; //赋初值 max_3=min_3=p-》score;max_sum=min_sum=p-》sum;for(;p;p=p-》next) { if (max_1《p-》score; //求各科最大最小值 else if (min_1》p-》score; if (max_2《p-》score; else if (min_2》p-》score; if (max_3《p-》score; else if (min_3》p-》score; if (max_4《p-》score; else if (min_4》p-》score; if (max_sum《p-》sum) max_sum=p-》sum; else if (min_sum》p-》sum) min_sum=p-》sum; sum_1+=p-》score; } //求各科总分 平均分 aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;aver_sum=aver_1+aver_2+aver_3+aver_4; //求总分的平均分 printf("总共%d名学生,具体数据为:\n",n); printf("语文最高分为%d,最低分为%d,平均分为%.2f\n",max_1,min_1,aver_1);printf("数学最高分为%d,最低分为%d,平均分为%.2f\n",max_2,min_2,aver_2);printf("英语最高分为%d,最低分为%d,平均分为%.2f\n",max_3,min_3,aver_3); printf("计算机最高分为%d,最低分为%d,平均分为%.2f\n",max_4,min_4,aver_4);printf("总分最高分为%d,最低分位%d,平均分为%.2f\n", max_sum,min_sum,aver_sum);} void find(Student *head) //查找对应信息的学生 {Student *p,*q;int choose,fnum;char tem;if (n==0) {printf("\n当前系统没有任何学生数据,您就别费劲了!\n ");return;}for(;;) { printf("\n请输入您要查询学生的方式:\n\n"); printf("1、按学号查询;2、按姓名查询;0、我不查询了。\n\n"); printf("请选择:"); scanf("%d",&choose); while(getchar()!=’\n’); if (choose==1) { printf("\n请输入你要查询的学生的学号,输入0退出学号查询:"); scanf("%d",&fnum); for(;fnum;) { for(p=head-》next;p!=NULL&&p-》num!=fnum;p=p-》next); if (!p) { printf("\n\n找不到你要查询的学号,请重新输入,输入0表示结束:"); scanf("%d",&fnum); } else if (p-》num==fnum) {for(q=head-》next;q-》next!=p;q=q-》next); printf("\n学号为%d学生的数据为:\n",p-》num); printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机\成绩 总分\n"); printf("%d\t%s\t %d %d %d %d \%d\n",p-》num, p-》name,p-》score, p-》sum); printf("\n\n请选择后续操作 1.修改该学生信息 2.删除该学生信息 输入0退出学号查询\n"); int choosel; scanf("%d",&choosel); for(;choosel;) { if(choosel==1) { update(p); printf("\n\n请继续选择后续操作:1.再次修改 2.删除该生 0表示退出"); scanf("%d",&choosel); } else if(choosel==2) {deletee(q,p); printf("\n\n请继续选择后续操作:0表示退出"); scanf("%d",&choosel); } }printf("\n\n请输入你还要查询的学生的学号,输入0表示不按学\号查询了:"); scanf("%d",&fnum); } } } else if (choose==2) { printf("\n请输入你要查询的学生的姓名,输入0退出姓名查询:"); scanf("%s",tem); for(;strcmp(tem,"0");) { for(p=head-》next;p!=NULL&&strcmp(p-》name,tem);p=p-》next); if (!p) { printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\示结束:"); scanf("%s",tem); } else if (!strcmp(p-》name,tem)) {for(q=head-》next;q-》next!=p;q=q-》next); printf("\n姓名为%s学生的数据为:\n",p-》name); printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 \计算机成绩 总分\n"); printf("%d\t%s\t %d %d %d \%d %d\n", p-》num,p-》name,p-》score, p-》score,p-》sum);printf("\n\n请选择后续操作 1.修改该学生信息 2.删除该学生信息 输入0退出学号查询\n"); int choosel; scanf("%d",&choosel); for(;choosel;) { if(choosel==1) { update(p); printf("\n\n请继续选择后续操作:1.再次修改 2.删除该生 0表示退出"); scanf("%d",&choosel); } else if(choosel==2) {deletee(q,p); printf("\n\n请继续选择后续操作:0表示退出"); scanf("%d",&choosel); } }printf("\n\n请输入你还要查询的学生的姓名,输入0表\示不按姓名查询了:"); scanf("%s",tem); } } } else if (choose==0) {printf("\n你选择了不查询!\n");break;} else {printf("\n你以其他方式选择了不查询!\n");break;} }}Student *add_new(Student *head) //添加新的学生信息 {Student *p;int flag; printf("\n\n请输入你要新加入学生的学号,学号为0表示结束输入:"); scanf("%d",&flag);while(getchar()!=’\n’);for(;flag;) { p=(Student *)malloc(LEN); p-》num=flag; printf("请输入新加入学生的姓名:",n); scanf("%s",p-》name); printf("请输入新加入学生的语文成绩:",n); scanf("%d",&p-》score); printf("请输入新加入学生的数学成绩:",n); scanf("%d",&p-》score); printf("请输入新加入学生的英语成绩:",n); scanf("%d",&p-》score); printf("请输入第%d名学生的计算机成绩:",n); scanf("%d",&p-》score); p-》sum=p-》score; p-》next=head-》next; head-》next=p; n++; printf("\n请输入还要加入学生的学号,没有此学生则输入0表示结束:"); scanf("%d",&flag); }head=sort_1(head,1);printf("加入后的成绩表为:\n");print(head); return head;} void print(Student *head) //打印出当前的成绩 {Student *p=head-》next;if (!p) {printf("\n\n此系统目前没有任何学生数据!\n\n\n");return;}printf("此系统目前共计学生%d名:\n",n); printf("**************************学生成绩统计一览************************\*****\n");printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机成绩 总分\n");for(;p;p=p-》next) printf("%d\t%s\t %d %d %d %d %d\n", p-》num,p-》name, p-》score, p-》sum=p-》score); printf("************************此软件由张骏友情提供*************************\*\n\n");}void stuconserve(Student *head) //将内容保留至文件,文件名为outfile2_3{ Student *p;fstream outfile("outfile2_3.txt",ios::out|ios::app);if(!outfile){ cout《《"文件不能打开"《《endl; abort();}//fprintf(outfile2_3.txt," 学号 姓名 性别 语文 数学 外语\n");p=head-》next;while(p){outfile《《setw(5)《《p-》num《《setw(15)《《p-》name 《《setw(5)《《p-》score《《endl;p=p-》next;}outfile.close();} int main(){Student *head;int choose,i;head=(Student *)malloc(LEN);head-》next=NULL; for(;;) { printf("\n\t\t* * * * * 学生成绩管理系统 * * * *\n"); printf("\t\t*\t1.学生数据键盘录入\t *\n"); printf("\t\t*\t2.学生数据统计排序\t *\n"); printf("\t\t*\t3.查询修改删除学生数据\t *\n"); printf("\t\t*\t4.插入学生数据\t\t *\n"); printf("\t\t*\t5.显示当前成绩表\t *\n"); printf("\t\t*\t0.保存退出成绩管理系统\t *\n"); printf("\t\t* * * * * 由张骏友情提供* * * * *\n\n"); printf("\n请输入你要执行的操作:"); scanf("%d",&choose); while(getchar()!=’\n’); switch(choose) { case 1:printf("\n\t\t\t\t****注意****"); printf("\n\n 此选项将会建立新的学生数据系统 ,原来的数据将\不再存在,你确信要删除原来的数据并建立新的数据系统么?\n\n"); printf("1、建立新的数据系统;0、放弃建立新的数据系统。\n\n"); printf("请选择:"); scanf("%d",&i); if (i==1) {head=cinn();print(head);break;} else if (i==0) { printf("\n你选择了放弃建立新的数据系统!\n"); break; } else { printf("\n你做出别的选择,当作放弃建立!\n"); break; } case 2:head=sort_all(head);break; case 3:find(head);break; case 4:head=add_new(head); case 5:print(head);break; case 0: stuconserve(head); system("pause");return 0; default: printf("\n\n您的输入有误!请重新输入:\n\n");break; } }}
c语言学生成绩管理系统的用户登录部分,输入用户名和密码的代码
#include 《stdio.h》#include 《string.h》#include 《conio.h》#include 《stdlib.h》int main(){ char passWord; char ch; int i,j; system("cls"); for(i=1;i《=3;i++) { printf("请输入密码:"); j=0; while(j《10&&(ch=getch())!=’\r’) { passWord=ch; putchar(’*’); } passWord=’\0’; if(strcmp(passWord,"123456")==0) { system("cls"); printf("\n\n\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t| 欢迎使用学生成绩管理系统 |\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t|--------------------------------|\n"); getch(); break; } else printf("\n\t\t密码错误,请重新输入!\n"); } if(i》3) { printf("\n\t\t密码已经输入3次,您无权使用,请退出!\n"); getch(); exit(0); } return 0; }
求C语言版数据结构题目“学生成绩管理系统”代码
头文件:student.h#ifndef H_STUDENT_HH#define H_STUDENT_HH#include《stdio.h》#include《stdlib.h》#include《conio.h》#include《string.h》#define INITIAL_SIZE 100#define INCR_SIZE 50#define NUM_SUBJECT 5struct student_info{char number;char name;char gender;float score;float sum;float average;int index;};typedef struct student_info StuInfo;extern int numStus;extern StuInfo* records;extern char savedTag;extern int arraySize;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);void sortInfo(void);int saveRecords(void);int loadRecords(void);void newRecords(void);void quit(void);void showTable(void);int findRecord(char* target,int targetType,int from);int getIndex(float sum);void copyRecord(StuInfo* src,StuInfo* dest);#endif // H_STUDENT_HH各个文件:主界面student.c#include "student.h"int numStus=0;StuInfo *records=NULL;char savedTag=0;int arraySize;char* subject={"语文","数学","英语","物理","化学"};int main(){ records=(StuInfo*)malloc(sizeof(StuInfo)*INITIAL_SIZE);if(records==NULL){ printf("momory fail!");exit(-1);}arraySize=INITIAL_SIZE;printf("\n");printf("\t****************************************\n"); printf("\t* 这是一个 *\n"); printf("\t* 学生成绩管理程序 *\n"); printf("\t* 可以多学生成绩进行管理 *\n"); printf("\t* 欢迎使用管理程序 *\n"); printf("\t****************************************\n"); printf("\n");handle_menu();}void handle_menu(void){ for( ; ; ){ switch(menu_select()) { case 0: addRecord(); break; case 1: modifyRecord(); break; case 2: display(); break; case 3: queryInfo(); break; case 4: removeRecord(); break; case 5: sortInfo(); break; case 6: saveRecords(); break; case 7: loadRecords(); break; case 8: newRecords(); break; case 9: quit(); }}}int menu_select(){ char s; int cn=0; printf("\n"); printf("\t0. 增加学生信息\n"); printf("\t1. 修改学生信息\n"); printf("\t2. 显示学生信息\n"); printf("\t3. 查询学生信息\n"); printf("\t4. 删除学生信息\n"); printf("\t5. 对学生信息进行排序\n"); printf("\t6. 保存学生信息至记录文件\n"); printf("\t7. 从记录文件读取学生信息\n"); printf("\t8. 新建学生信息文件\n"); printf("\t9. 结束运行\n"); printf("\n\t左边数字对应功能选择,请选择0-9: ");for(; ;) { gets(s); cn=atoi(s); if(cn==0&&(strcmp(s,"0")!=0)) cn=11; if(cn《0||cn》9) printf("\n\t输入错误,重选0-9: "); else break; } return cn;}void newRecords(void){ char str; if(numStus!=0) { if(savedTag==1) { printf("现在已经有记录,选择处理已有记录的方法。\n"); printf("是否保存原来的记录?(Y/N)"); gets(str); if(str!=’N’) saveRecords(); } } numStus=0; addRecord();}void quit(void){ char str; if(savedTag==1) { printf("是否保存原来的记录? (Y/N)"); gets(str); if(str!=’N’) saveRecords(); } free(records); exit(0);}排序模块sort.c#include"student.h"void sortInfo(void){char str;int i,j;StuInfo tmps;if(numStus==0){printf("没有可供排序的记录!");return;}printf("请输入您希望进行的排序方式:\n"); printf("1.按学号进行升序排序\n"); printf("2.按学号进行降序排序\n"); printf("3.按名称进行升序排序\n"); printf("4.按名称进行降序排序\n"); printf("5.按名次进行升序排序\n"); printf("6.按名次进行降序排序\n"); printf("7.按错了,我并不想进行排序\n");gets(str);if(str》’6’)return;for(i=0;i《numStus-1;i++){for(j=i+1;j《numStus;j++){ if((str.number, records.number)》0)|| (str.number, records.number)《0)|| (str.name, records.name)》0)|| (str.name, records.name)《0)|| (str==’5’ && records.index)|| (str==’6’ && records.index)) { copyRecord(&records,&tmps); copyRecord(&records); copyRecord(&tmps,&records); }}}printf("排序已经完成\n");savedTag=1;}保存数据模块:save_load.c#include "student.h"int saveRecords(){FILE *fp;char fname;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"); 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 fname;char str;if(numStus!=0&&savedTag==0){printf("请选择您是要覆盖现有记录(Y),还是将");printf("读取的记录添加到现有记录之后(n)?\n");printf("直接按回车则覆盖现有记录\n");gets(str);if(str==’N’){//将读取的记录添加到现有记录之后 savedTag=1;}else{ if(savedTag==1) {//覆盖现有记录 printf("读取文件将会更改原来的记录,"); printf("是否保存原来的记录?(Y/n)"); gets(str); if(str!=’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");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(&records, sizeof(StuInfo),1,fp)!=1)break;//按照addRecord函数的方法,更新名次records.index= getIndex(records.sum);numStus++;}fclose(fp);printf("现在共有%d条记录。",numStus);return 0;}查询模块:que_remv_modi.c#include "student.h"int findRecord(char* target,int targetType,int from){int i;for (i=from;i《numStus;i++) { if (( targetType==0&& strcmp(target,records.number)==0)|| (targetType==1 &&strcmp (target,records.name)==0 )|| (targetType==2 && atoi(target)==records.index)) return i; } return -1; }void queryInfo (void){ char str; char target; int type; int count; int i,j; if (numStus==0) { printf ("没有可供查询的记录!"); return; } while(1) { printf ("请输入查询的方式:(直接输入回车则结束查询)\n"); printf ("1. 按学号\n"); printf ("2.按姓名\n"); printf ("3.按名次\n"); gets(str); if (strlen(str)==0) break; if (str==’1’) { printf ("请输入欲查询的学生的学号:"); gets(target); type=0; } else if (str==’2’) { printf("请输入欲查询的学生的姓名:"); gets(target); type=1; } else { printf ("请输入欲查询的学生的名次:"); gets(target); type=2; } i= findRecord(target,type,0); if(i==1) { //打印查询到的学生的成绩 showTable(); } count = 0; while (i !=-1) { count++; printf("%s\t%s\t%s",records.number, records.gender); for (j=0;j《NUM_SUBJECT;j++) printf ("\t%.lf",records); printf ("\t%.lf\t%.lf\t%d\n", records.average, records.index); i = findRecord(target,type,i+1); } if (count==0) printf ("没有符合条件的学生!\n"); else printf ("一共找到了%d名学生的信息 \n\n",count); }}/***********************删除指定的记录***********************/void removeRecord(void){char str;char target;int type;int i,j;int tmpi;if(numStus==0){printf("没有可供删除的记录!");return; }while(1){printf("请输入如何找到欲删除的记录的方式;");printf("(直接输入回车则结果移除操作)\n");printf("1.按学号\n");printf("2.按姓名\n");printf("3.按名次\n");gets(str);if(strlen(str)==0)break;if(str==’1’){printf("请输入学生的学号;"); gets(target); type=0;}else if(str==’2’){printf("请输入学生的姓名"); gets(target); type=1;}else{printf("请输入学生的名次;"); gets(target); type=2;}i=findRecord(target,type,0);if(i==-1) printf("没有符合条件的学生!\n"); while (i!=-1) {showTable(); printf("%s\t%s\t%s",records.gender); for(j=0;j《NUM_SUBJECT;j++) printf("\t%.1f",records); printf("\t%.1f\t%.1f\t%d\n",records.index); printf("确定要删除这个学生的信息吗?(y/n)"); gets(str); if(str==’Y’) {numStus--; tmpi=records.index; //将后面的记录前移 for(j=i;j《numStus;j++) { copyRecord(&records); } //将名次排在被删记录后面的记录名次减1 for(j=0;j《numStus;j++) {if(records.index》tmpi) records.index--; }} //去下一个符合条件的记录 i=findRecord(target,type,i+1);}}savedTag = 1;}/********************************************* 将src指向的一条记录复制给dest指向的记录*********************************************/void copyRecord(StuInfo* src, StuInfo* dest){int j;strcpy(dest-》number,src-》number);strcpy(dest-》name,src-》name);strcpy(dest-》gender,src-》gender);for (j=0; j《NUM_SUBJECT; j++){dest-》score;}dest-》sum = src-》sum;dest-》average = src-》average;dest-》index = src-》index;}/********************************** 修改指定学生的信息**********************************/void modifyRecord(void){char str;char target;int type;int i,j;int tmpi;float sum,mark;int count=0; // 总分大于sum的人数if(numStus==0){ printf("没有可供修改的记录!"); return;}while(1) { printf("请输入如何找到欲修改的记录的方式: "); printf(" (直接输入回车则结束移除操作) \n"); printf("1. 按学号\n "); printf("2. 按姓名\n "); printf("3. 按名次\n "); gets(str); if(strlen(str)==0) break; if(str==’1’) { printf("请输入该学生的学号: "); gets(target); type=0; } else if(str==’1’) { printf("请输入该学生的姓名: "); gets(target); type=1; } else { printf("请输入该学生的名次: "); gets(target); type=2; } i=findRecord(target,type,0); if(i==-1) printf("没有符合条件的学生! \n"); while(i != -1) { showTable(); printf("%s\t%s\t%s",records.gender); for(j=0;j《NUM_SUBJECT;j++) printf("\t%.1f",records); printf("\t%.1f\t%.1f\t%d\n",records.index); printf("确定要修改这个学生的信息吗?(y/n)"); gets(str); if (str==’Y’) { tmpi=records.index; printf("下面请输入该学生的信息: \n"); printf("请输入学号: "); gets(records.number); printf("请输入姓名: "); gets(records.name); printf("请输入性别 (0为女,1为男): "); gets(str); if (str==’0’) strcpy(records.gender," 女 "); else strcpy(records.gender," 男 "); sum=0; for(j=0;j《NUM_SUBJECT;j++ ) { printf("请输入%s成绩: ",subject); gets(str); mark=(float)atof(str); records=mark; sum+=mark; } records.sum=sum; records.average=sum/NUM_SUBJECT; // 将原来名次排被修改记录之后,而其sum小于等于 // 修改后记录的sum的记录的名次减1 // 将原来名次排在被修改记录之前或相同,而其sum // 大于修改后记录的sum的记录的名次增1 count = 0; for (j=0;j《numStus;j++) { if(j==i) continue; if(records.sum》sum) records.index--; else if(records.sum《sum) records.index++; if (records.sum》sum) count++; } records.index=count+1; } i=findRecord(target,type,i+1); } } savedTag = 1; }增加学生信息模块:add_disp.c#include "student.h"void showTable(void){int j;printf("学号\t姓名\t性别");for(j=0;j《NUM_SUBJECT;j++)printf("\t%s",subject);printf("\t总分\t平均分\t名次\n");}void display(void){int i,j;if(numStus==0){printf("没有可供显示的记录!");return;}showTable();for(i=0;i《numStus;i++){printf("%s\t%s\t%s",records.gender);for(j=0;j《NUM_SUBJECT;j++) printf("\t%.1f",records);printf("\t%.1f\t%.1f\t%d\n",records.index);if(i%20==0&&i!=0){ printf("输入任一字符后继续...\n"); getch(); printf("\n"); showTable();}}}int getIndex(float sum){int i;int count=0;for(i=0;i《numStus;i++){if(records.sum《sum){ records.index++;}else if(records.sum》sum){ count++;}}return count+1;}void addRecord(void){char str;int i,j;float mark,sum;if(numStus==0)printf("原来没有记录,现在建立新表\n");elseprintf("下面在当前表的末尾增加新的信息\n");while(1){printf("你将要添加一组信息,确定吗?(Y/N)");gets(str);if (str==’N’) break;if(numStus》=arraySize){ records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo)); if(records == NULL) { printf("memory failed!"); exit(-1); } arraySize=arraySize+INCR_SIZE;}printf("请输入学号:");gets(records.number);printf("请输入姓名:");gets(records.name);printf("请输入性别(0为女,1为男):");gets(str);if(str==’0’) strcpy(records.gender,"女"); else strcpy(records.gender,"男"); sum=0; for(j=0;j《NUM_SUBJECT;j++) { printf("请输入%s成绩:",subject); gets(str); mark=(float)atof(str); records=mark; sum+=mark; } records.sum=sum; records.average=sum/NUM_SUBJECT; records.index=getIndex(sum); numStus++;}printf("现在一共有%d条信息\n",numStus);savedTag=1;}void dispaly(void){int i ,j;if(numStus==0){printf("没有可供显示的记录!");return;}showTable();for(i=0;i《numStus;i++){ printf("%s\t%s\t%s",records.gender); for(j=0;j《NUM_SUBJECT;j++) printf("\t%.1f\t%.1f\t%d\n",records.index); if(i%20==0&&i!=0) { printf("输入任一字符后继续...\n"); getch(); printf("\n\n"); showTable(); }}}可能有帮助。
用C语言写一个成绩查询系统
#include《stdlib.h》#include《stdio.h》#include《string.h》#include《conio.h》#define N 10/*****定义结构体*****/typedef struct students /*标记为students*/{ char num; /*学生学号*/ char name; /*学生姓名*/ int age; /*年龄*/ char sex; /*性别*/ float cyy; /*C语言成绩*/ float computer; /*计算机成绩*/ float english; /*英语成绩*/ float pj; /*平均成绩*/}STU;STU temp;void sort(STU students,int n); //排序void save(STU students ,int n);//导出int Locate(STU students,int n);//查询/*--------------显示菜单--------------------*/char displaymenu(){ char k; system("cls"); printf(" 学生成绩管理 \n"); printf("-----------------------------------应用菜单-------------------------------------\n"); printf(" 1 输入学生成绩\n\n"); printf(" 2 输出学生成绩\n\n"); printf(" 3 查询学生成绩\n\n"); printf(" 4 修改学生成绩\n\n"); printf(" 5 查看成绩排序\n\n"); printf(" 6 查看成绩统计\n\n"); printf(" 7 保存数据\n\n"); printf(" 8 读取数据\n\n"); printf(" 9 退出系统\n\n"); printf(" 请选择你想进行的操作:"); k=getchar();return k;}/*****定义输出函数*****/void printheader() /*格式化输出表头*/{ printf("\n\n************************学生成绩管理系统****************************\n\n\n"); printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n"); }void printdata(STU pp) /*格式化输出表中数据*/{ STU* p; p=&pp printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p-》num,p-》name,p-》age,p-》sex,p-》cyy,p-》computer,p-》english,p-》pj);}/*****添加学生信息*****/int add(STU students ,int *n){ int i=0; system("cls"); printf(" \n"); printf(" 请输入学生信息 \n"); printf(" 退出请在学生号处输入:0 \n"); printf("请输入学生学号:\n "); scanf("%s",students.num); while(strcmp(students.num,"0") )//当输入的学号为0时结束输入 { printf("请输入学生姓名:\n "); scanf("%s",students.name); printf("****************\n\n\n"); printf("请输入学生年龄:\n "); scanf("%d",&students.age); printf("****************\n\n\n"); printf("请输入学生性别:\n"); scanf("%s",students.sex); printf("****************\n\n\n"); printf("请输入C语言成绩:\n "); scanf("%f",&students.cyy); printf("****************\n\n\n"); printf("请输入计算机成绩:\n "); scanf("%f",&students.computer); printf("****************\n\n\n"); printf("请输入英语成绩:\n "); scanf("%f",&students.english); printf("****************\n\n\n"); students.english)/3; printf("学生平均成绩: %-8.0f\n",students.pj); i++; printf("****************\n\n\n"); printf("请输入学生学号:\n "); scanf("%s",students.num); } *n=i; save(students ,i); return i; }/*****查询学生信息函数*****/int Locate(STU students,int n) { int k,m=-1; char num; int i=0; system("cls"); printf(" 退出请输入:0 \n"); printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 \n"); scanf("%d",&k); if(k==1) { printf("请输入你要查询的学生学号:\n"); scanf("%s",num); while(i《n) { if(strcmp(students.num,num)==0) /*若找到学号*/ { printf("》》学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n》C语言成绩:%-8.0f\n》计算机成绩:%-8.0f\n》》英语成绩:%-8.0f\n》》平均成绩:%-8.0f\n",students.pj); m=i; getchar(); break; } i++; } if(i》=n) printf("没有所找学生信息\n"); getchar(); } else if(k==2) { printf("请输入你要查询的学生姓名:\n"); scanf("%s",name); while(i《n) { if(strcmp(students.name,name)==0) /*若找到姓名*/ { printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n计算机成绩:%-8.0f\n英语成绩:%-8.0f\n平均成绩:%-8.0f\n",students.pj); m=i; getchar(); break; } i++; } if(i》=n) printf("没有所找学生信息\n"); } return m;/*返回一个根m便于修改学生信息*/ getchar();}/*****显示函数*****/ void input(STU students,int n) { int i; system("cls"); //清屏 if(n==0) /*表示没有学生信息记录*/ { printf("\n没有学生记录!\n"); } printf("\n\n"); printheader(); /*输出表格头部*/ i=0; while(i《n) /*逐条输出数组中存储的学生信息*/ { printdata(students); i++; } getchar(); }/*****修改子程序*****/void Modify(STU students,int n){ int i; if(n《=0) { system("cls"); printf(" \n退出请输入:0 \n"); printf("\n----------not found!----------\n"); getchar(); return ; } system("cls"); printf("修改学生信息"); input(students,n); i=Locate(students,n); /*查询到该数组元素,并返回下标值*/ if(i!=-1) /*若i!=-1,表明已经找到该数组元素*/ { printf("请输入新的学生信息: \n"); printf(" 学号: "); scanf("%s",students.num); printf(" 姓名: "); scanf("%s",students.name); printf(" 年龄: "); scanf("%d",&students.age); printf(" 性别: "); scanf("%s",students.sex); printf(" C语言: "); scanf("%f",&students.cyy); printf(" 英语: "); scanf("%f",&students.english); printf(" 计算机: "); scanf("%f",&students.computer); students.computer)/3; printf("平均成绩: %-9.0f\n",students.pj); save(students ,n); printf("\n-------------修改成功!-------------\n");} else printf("not found!\n"); getchar();}/*****学生成绩排序子程序*****/ void sort(STU students,int n){ int i,j,a,b,c,d,e,f,k; float p; printf(" \n退出请输入:0 \n"); printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 \n "); scanf("%d",&k); if(k==1) /*用选择法对C语言排序*/ { for(i=0; i《n; i++) for(j=0;j《n-1;j++) { if(students.english) { temp=students; students; students=temp; } }} else if(k==2)/*英语用冒泡法*/ { for(a=0; a《n-1; a++) { c=a;//未完待续
C语言 学生成绩管理系统
我找的一个代码!试一下:c语言学生成绩管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /* */ struct student { char num;/* 学号 */ char name; char sex; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime;/* 最近更新时间 */ }; typedef struct node { struct student data; struct node *next; }Node,*Link; void menu() { printf("********************************************************************************"); printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n"); printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n"); printf("\t5保存学生资料\t\t\t\t\t0退出系统\n"); printf("********************************************************************************\n"); } void printstart() { printf("-----------------------------------------------------------------------\n"); } void Wrong() { printf("\n=====》提示:输入错误!\n"); } void Nofind() { printf("\n=====》提示:没有找到该学生!\n"); } void printc() /* 本函数用于输出中文 */ { printf(" 学号\t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分\n"); } void printe(Node *p)/* 本函数用于输出英文 */ { printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p-》data.num,p-》data.name,p-》data.sex,p-》data.egrade,p-》data.mgrade,p-》data.cgrade,p-》data.totle,p-》data.ave); } Node* Locate(Link l,char findmess) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ { Node *r; if(strcmp(nameornum,"num")==0) /* 按学号查询 */ { r=l-》next; while(r!=NULL) { if(strcmp(r-》data.num,findmess)==0) return r; r=r-》next; } } else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */ { r=l-》next; while(r!=NULL) { if(strcmp(r-》data.name,findmess)==0) return r; r=r-》next; } } return 0; } void Add(Link l) /* 增加学生 */ { Node *p,*r,*s; char num; r=l; s=l-》next; while(r-》next!=NULL) r=r-》next; /* 将指针置于最末尾 */ while(1) { printf("请你输入学号(以’0’返回上一级菜单:)"); scanf("%s",num); if(strcmp(num,"0")==0) break; while(s) { if(strcmp(s-》data.num,num)==0) { printf("=====》提示:学号为’%s’的学生已经存在,若要修改请你选择’4 修改’!\n",num); printstart(); printc(); printe(s); printstart(); printf("\n"); return; } s=s-》next; } p=(Node *)malloc(sizeof(Node)); strcpy(p-》data.num,num); printf("请你输入姓名:"); scanf("%s",p-》data.name); getchar(); printf("请你输入性别:"); scanf("%s",p-》data.sex); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p-》data.cgrade); getchar(); printf("请你输入数学成绩:"); scanf("%d",&p-》data.mgrade); getchar(); printf("请你输入英语成绩:"); scanf("%d",&p-》data.egrade); getchar(); p-》data.totle=p-》data.egrade+p-》data.cgrade+p-》data.mgrade; p-》data.ave=p-》data.totle / 3; /* 信息输入已经完成 */ p-》next=NULL; r-》next=p; r=p; shoudsave=1; } } void Qur(Link l) /* 查询学生 */ { int sel; char findmess; Node *p; if(!l-》next) { printf("\n=====》提示:没有资料可以查询!\n"); return; } printf("\n=====》1按学号查找\n=====》2按姓名查找\n"); scanf("%d",&sel); if(sel==1)/* 学号 */ { printf("请你输入要查找的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("\t\t\t\t查找结果\n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else if(sel==2) /* 姓名 */ { printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { printf("\t\t\t\t查找结果\n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else Wrong(); } void Del(Link l) /* 删除 */ { int sel; Node *p,*r; char findmess; if(!l-》next) { printf("\n=====》提示:没有资料可以删除!\n"); return; } printf("\n=====》1按学号删除\n=====》2按姓名删除\n"); scanf("%d",&sel); if(sel==1) { printf("请你输入要删除的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { r=l; while(r-》next!=p) r=r-》next; r-》next=p-》next; free(p); printf("\n=====》提示:该学生已经成功删除!\n"); shoudsave=1; } else Nofind(); } else if(sel==2) { printf("请你输入要删除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l; while(r-》next!=p) r=r-》next; r-》next=p-》next; free(p); printf("\n=====》提示:该学生已经成功删除!\n"); shoudsave=1; } else Nofind(); } else Wrong(); } void Modify(Link l) { Node *p; char findmess; if(!l-》next) { printf("\n=====》提示:没有资料可以修改!\n"); return; } printf("请你输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("请你输入新学号(原来是%s):",p-》data.num); scanf("%s",p-》data.num); printf("请你输入新姓名(原来是%s):",p-》data.name); scanf("%s",p-》data.name); getchar(); printf("请你输入新性别(原来是%s):",p-》data.sex); scanf("%s",p-》data.sex); printf("请你输入新的c语言成绩(原来是%d分):",p-》data.cgrade); scanf("%d",&p-》data.cgrade); getchar(); printf("请你输入新的数学成绩(原来是%d分):",p-》data.mgrade); scanf("%d",&p-》data.mgrade); getchar(); printf("请你输入新的英语成绩(原来是%d分):",p-》data.egrade); scanf("%d",&p-》data.egrade); p-》data.totle=p-》data.egrade+p-》data.cgrade+p-》data.mgrade; p-》data.ave=p-》data.totle/3; printf("\n=====》提示:资料修改成功!\n"); shoudsave=1; } else Nofind(); } void Disp(Link l) { int count=0; Node *p; p=l-》next; if(!p) { printf("\n=====》提示:没有资料可以显示!\n"); return; } printf("\t\t\t\t显示结果\n"); printstart(); printc(); printf("\n"); while(p) { printe(p); p=p-》next; } printstart(); printf("\n"); } void Tongji(Link l) { Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */ Node *r=l-》next; if(!r) { printf("\n=====》提示:没有资料可以统计!\n"); return ; } pm=pe=pc=pt=pa=r; while(r!=NULL) { if(r-》data.cgrade》=pc-》data.cgrade) pc=r; if(r-》data.mgrade》=pm-》data.mgrade) pm=r; if(r-》data.egrade》=pe-》data.egrade) pe=r; if(r-》data.totle》=pt-》data.totle) pt=r; if(r-》data.ave》=pa-》data.ave) pa=r; r=r-》next; } printf("------------------------------统计结果--------------------------------\n"); printf("总分最高者:\t%s %d分\n",pt-》data.name,pt-》data.totle); printf("平均分最高者:\t%s %d分\n",pa-》data.name,pa-》data.ave); printf("英语最高者:\t%s %d分\n",pe-》data.name,pe-》data.egrade); printf("数学最高者:\t%s %d分\n",pm-》data.name,pm-》data.mgrade); printf("c语言最高者:\t%s %d分\n",pc-》data.name,pc-》data.cgrade); printstart(); } void Sort(Link l) { Link ll; Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */ ll-》next=NULL; if(l-》next==NULL) { printf("\n=====》提示:没有资料可以排序!\n"); return ; } p=l-》next; while(p) { s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */ s-》data=p-》data; s-》next=NULL; rr=ll; while(rr-》next!=NULL && rr-》next-》data.totle》=p-》data.totle) rr=rr-》next; if(rr-》next==NULL) rr-》next=s; else { s-》next=rr-》next; rr-》next=s; } p=p-》next; } free(l); l-》next=ll-》next; printf("\n=====》提示:排序已经完成!\n"); } void Save(Link l) { FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:\\student","wb"); if(fp==NULL) { printf("\n=====》提示:重新打开文件时发生错误!\n"); exit(1); } p=l-》next; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p-》next; count++; } else { flag=0; break; } } if(flag) { printf("\n=====》提示:文件保存成功.(有%d条记录已经保存.)\n",count); shoudsave=0; } fclose(fp); } void main() { Link l;/* 连表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char jian; int count=0; Node *p,*r; printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t-------福建农业职业学院计应0501 黄欢(32号)\n"); l=(Node*)malloc(sizeof(Node)); l-》next=NULL; r=l; fp=fopen("C:\\student","rb"); if(fp==NULL) { printf("\n=====》提示:文件还不存在,是否创建?(y/n)\n"); scanf("%c",&jian); if(jian==’y’||jian==’Y’) fp=fopen("C:\\student","wb"); else exit(0); } printf("\n=====》提示:文件已经打开,正在导入记录......\n"); while(!feof(fp)) { p=(Node*)malloc(sizeof(Node)); if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */ { p-》next=NULL; r-》next=p; r=p; /* 将该接点挂入连中 */ count++; } } fclose(fp); /* 关闭文件 */ printf("\n=====》提示:记录导入完毕,共导入%d条记录.\n",count); while(1) { menu(); printf("请你选择操作:"); scanf("%d",&sel); if(sel==0) { if(shoudsave==1) { getchar(); printf("\n=====》提示:资料已经改动,是否将改动保存到文件中(y/n)?\n"); scanf("%c",&ch); if(ch==’y’||ch==’Y’) Save(l); } printf("\n=====》提示:你已经退出系统,再见!\n"); break; } switch(sel) { case 1:Add(l);break; /* 增加学生 */ case 2:Del(l);break;/* 删除学生 */ case 3:Qur(l);break;/* 查询学生 */ case 4:Modify(l);break;/* 修改学生 */ case 5:Save(l);break;/* 保存学生 */ case 9:printf("\t\t\t==========帮助信息==========\n");break; default: Wrong();getchar();break; } } } /* *//* 学生成绩管理程序 编制一个统计学生考试分数的管理程序。 设学生成绩已以一个学生一个记录的形式存储在文件中, 每位学生记录包含的信息有:姓名,学号和各门功课的成绩。 程序具有以下几项功能:求出各门课程的总分,平均分,按姓名, 按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。 */ #include 《stdio.h》 #define SWN 3 /* 课程数 */ #define NAMELEN 20 /* 姓名最大字符数 */ #define CODELEN 10 /* 学号最大字符数 */ #define FNAMELEN 80 /* 文件名最大字符数 */ #define BUFLEN 80 /* 缓冲区最大字符数 */ /* 课程名称表 */ char schoolwork = {"Chinese","Mathematic","English"}; struct record { char name; /* 姓名 */ char code; /* 学号 */ int marks; /* 各课程成绩 */ int total; /* 总分 */ }stu; struct node { char name; /* 姓名 */ char code; /* 学号 */ int marks; /* 各课程成绩 */ int total; /* 总分 */ struct node *next; /* 后续表元指针 */ }*head; /* 链表首指针 */ int total; /* 各课程总分 */ FILE *stfpt; /* 文件指针 */ char stuf; /* 文件名 */ /* 从指定文件读入一个记录 */ int readrecord(FILE *fpt,struct record *rpt) { char buf; int i; if(fscanf(fpt,"%s",buf)!=1) return 0; /* 文件结束 */ strncpy(rpt-》name,buf,NAMELEN); fscanf(fpt,"%s",buf); strncpy(rpt-》code,buf,CODELEN); for(i=0;i《SWN;i++) fscanf(fpt,"%d",&rpt-》marks); for(rpt-》total=0,i=0;i《SWN;i++) rpt-》total+=rpt-》marks; return 1; } /* 对指定文件写入一个记录 */ writerecord(FILE *fpt,struct record *rpt) { int i; fprintf(fpt,"%s\n",rpt-》name); fprintf(fpt,"%s\n",rpt-》code); for(i=0;i《SWN;i++) fprintf(fpt,"%d\n",rpt-》marks); return ; } /* 显示学生记录 */ displaystu(struct record *rpt) { int i; printf("\nName : %s\n",rpt-》name); printf("Code : %s\n",rpt-》code); printf("Marks :\n"); for(i=0;i《SWN;i++) printf(" %-15s : %4d\n",schoolwork); printf("Total : %4d\n",rpt-》total); } /* 计算各单科总分 */ int totalmark(char *fname) { FILE *fp; struct record s; int count,i; if((fp=fopen(fname,"r"))==NULL) { printf("Can’t open file %s.\n",fname); return 0; } for(i=0;i《SWN;i++) total=0; count=0; while(readrecord(fp,&s)!=0) { for(i=0;i《SWN;i++) total; count++; } fclose(fp); return count; /* 返回记录数 */ } /* 列表显示学生信息 */ void liststu(char *fname) { FILE *fp; struct record s; if((fp=fopen(fname,"r"))==NULL) { printf("Can’t open file %s.\n",fname); return ; } while(readrecord(fp,&s)!=0) { displaystu(&s); printf("\n Press ENTER to continue...\n"); while(getchar()!=’\n’); } fclose(fp); return; } /* 构造链表 */ struct node *makelist(char *fname) { FILE *fp; struct record s; struct node *p,*u,*v,*h; int i; if((fp=fopen(fname,"r"))==NULL) { printf("Can’t open file %s.\n",fname); return NULL; } h=NULL; p=(struct node *)malloc(sizeof(struct node)); while(readrecord(fp,(struct record *)p)!=0) { v=h; while(v&&p-》total《=v-》total) { u=v; v=v-》next; } if(v==h) h=p; else u-》next=p; p-》next=v; p=(struct node *)malloc(sizeof(struct node)); } free(p); fclose(fp); return h; } /* 顺序显示链表各表元 */ void displaylist(struct node *h) { while(h!=NULL) { displaystu((struct record *)h); printf("\n Press ENTER to continue...\n"); while(getchar()!=’\n’); h=h-》next; } return; } /* 按学生姓名查找学生记录 */ int retrievebyn(char *fname, char *key) { FILE *fp; int c; struct record s; if((fp=fopen(fname,"r"))==NULL) { printf("Can’t open file %s.\n",fname); return 0; } c=0; while(readrecord(fp,&s)!=0) { if(strcmp(s.name,key)==0) { displaystu(&s); c++; } } fclose(fp); if(c==0) printf("The student %s is not in the file %s.\n",key,fname); return 1; } /* 按学生学号查找学生记录 */ int retrievebyc(char *fname, char *key) { FILE *fp; int c; struct record s; if((fp=fopen(fname,"r"))==NULL) { printf("Can’t open file %s.\n",fname); return 0; } c=0; while(readrecord(fp,&s)!=0) { if(strcmp(s.code,key)==0) { displaystu(&s); c++; break; } } fclose(fp); if(c==0) printf("The student %s is not in the file %s.\n",key,fname); return 1; } main() { int i,j,n; char c; char buf; FILE *fp; struct record s; clrscr(); printf("Please input the students marks record file’s name: "); scanf("%s",stuf); if((fp=fopen(stuf,"r"))==NULL) { printf("The file %s doesn’t exit, do you want to creat it? (Y/N) ",stuf); getchar(); c=getchar(); if(c==’Y’||c==’y’) { fp=fopen(stuf,"w"); printf("Please input the record number you want to write to the file: "); scanf("%d",&n); for(i=0;i《n;i++) { printf("Input the student’s name: "); scanf("%s",&s.name); printf("Input the student’s code: "); scanf("%s",&s.code); for(j=0;j《SWN;j++) { printf("Input the %s mark: ",schoolwork); scanf("%d",&s.marks); } writerecord(fp,&s); } fclose(fp); } } fclose(fp); getchar(); /*clrscr();*/ puts("Now you can input a command to manage the records."); puts("m : mean of the marks."); puts("t : total of the marks."); puts("n : search record by student’s name."); puts("c : search record by student’s code."); puts("l : list all the records."); puts("s : sort and list the records by the total."); puts("q : quit!"); while(1) { puts("Please input command:"); scanf(" %c",&c); /* 输入选择命令 */ if(c==’q’||c==’Q’) { puts("\n Thank you for your using."); break; /* q,结束程序运行 */ } switch(c) { case ’m’: /* 计算平均分 */ case ’M’: if((n=totalmark(stuf))==0) { puts("Error!"); break; } printf("\n"); for(i=0;i《SWN;i++) printf("%-15s’s average is: %.2f.\n",schoolwork/n); break; case ’t’: /* 计算总分 */ case ’T’: if((n=totalmark(stuf))==0) { puts("Error!"); break; } printf("\n"); for(i=0;i《SWN;i++) printf("%-15s’s total mark is: %d.\n",schoolwork); break; case ’n’: /* 按学生的姓名寻找记录 */ case ’N’: printf("Please input the student’s name you want to search: "); scanf("%s",buf); retrievebyn(stuf,buf); break; case ’c’: /* 按学生的学号寻找记录 */ case ’C’: printf("Please input the student’s code you want to search: "); scanf("%s",buf); retrievebyc(stuf,buf); break; case ’l’: /* 列出所有学生记录 */ case ’L’: liststu(stuf); break; case ’s’: /* 按总分从高到低排列显示 */ case ’S’: if((head=makelist(stuf))!=NULL) displaylist(head); break; default: break; } } }
学生成绩录入查询系统C语言程序
#include《iostream》#include《string.h》usingnamespacestd;structstudent{charname;intscore;};voidteacherC(student*stu)//老师录入成绩{inti,n;cout《《"请输入需要录入的学生的个数\n";cin》》n;cout《《"请依次输入学生的姓名和成绩\n";for(i=0;i《n;i++){cin》》stu.score;}stu.score=-1;}voidshow(student*stu){inti=0;for(;i《100;i++){if(stu.score==-1)break;cout《《stu.name《《""《《stu.score《《endl;}}intsearch(student*stu,char*name){inti=0,k=-1;for(;i《100;i++){if(stu.score==-1)break;if(strcmp(stu.name,name)==0){k=i;break;}}returnk;}voidedit(student*stu){inti=0,j=0;charname,an;while(1){cout《《"请输入需要修改的学生名字\n";cin》》name;i=search(stu,name);if(i》=0){cout《《"该学生的信息为:\n";cout《《stu.name《《""《《stu.score《《endl;cout《《"确定要修改该学生的信息是的输入Y不是输入N:\n";cin》》an;if(an==’Y’||an==’y’){cout《《"请输入修改后的姓名成绩:\n";cin》》stu.score;cout《《"修改成功\n";}cout《《"继续修改请输入1退出输入0:\n";cin》》j;if(j==0)break;}elsecout《《"没有该学生的信息\n";}}voiddele(student*stu){inti=0,j=0;charname,an;while(1){cout《《"请输入需要删除的学生名字\n";cin》》name;i=search(stu,name);if(i》0){cout《《"该学生的信息为:\n";cout《《stu.name《《""《《stu.score《《endl;cout《《"确定要删除该学生的信息是的输入Y不是输入N:\n";cin》》an;if(an==’Y’||an==’y’){*stu.name=0;cout《《"删除成功\n";}cout《《"继续删除请输入1退出输入0:\n";cin》》j;if(j==0)break;}elsecout《《"没有该学生的信息\n";}}intmain(){inti,n;charname;studentstu;//学生总数上限为100个while(1){cout《《"请做出以下的选择:"《《endl;cout《《"输入0退出系统\n";cout《《"输入1教书录入成绩\n";cout《《"输入2学生查询成绩\n";cout《《"输入3修改学生成绩\n";cout《《"输入4删除学生成绩\n";cin》》i;switch(i){case1:teacherC(stu);break;case2:cout《《"请输入查询的姓名\n";cin》》name;n=search(stu,name);cout《《"该学生成绩是:"《《stu.score《《endl;break;case3:edit(stu);break;case4:dele(stu);break;default:if(i!=0)cout《《"请输入有效数字\n";}if(i==0)break;}return0;}
更多文章:
欧尚x5官网(长安欧尚X52021款自动挡最低多少钱可以落地长安欧尚X5官方价)
2024年7月12日 00:40
诺基亚1680c上市价格(请介绍几款诺基亚手机,价格500-800谢谢!)
2024年11月12日 16:00
昂达h81c主板接线图解(昂达主板,开机电源键的线连接在哪)
2024年7月14日 00:30
ios14正式版更新推送时间(苹果ios14正式版发布时间)
2024年4月4日 17:30
戴尔vostro5460配置(戴尔vostro5460怎么样)
2024年5月25日 21:50
oppo find x5 天玑9000(天玑9000手机有哪些)
2024年10月4日 12:50