×

c语言程序设计学生信息管理系统

c语言程序设计学生信息管理系统(c语言 学生管理系统设计)

admin admin 发表于2024-07-23 17:16:02 浏览7 评论0

抢沙发发表评论

本篇文章给大家谈谈c语言程序设计学生信息管理系统,以及c语言 学生管理系统设计对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

c语言 学生管理系统设计

#include 《stdio.h》#include 《string.h》#include 《stdlib.h》#define MAX 1000/*定义学生成绩信息结构*/struct stu{char id;char name;double Chinese;double Math;double English;double average;double total;};/*学生结构数组,用于存储学生成绩信息*/struct stu students;/*当前学生人数*/int current;void input(){int i; printf("请输入学生人数:");scanf("%d", & current);for (i = 0; i 《 current; i++){printf("\n请输入学生学号,最多为7位数: ");scanf("%s", students.id);printf("请输入学生姓名:");scanf("%s", students.name);printf("请输入语文成绩:");scanf("%lf", &students.Chinese);printf("请输入数学成绩:");scanf("%lf", &students.Math);printf("请输入英语成绩:");scanf("%lf", &students.English);students.English;students.total / 3;}}/*排名次,即对学生结构数组排序*/void sort(struct stu array, int n){int i, j;struct stu temp; for (i = 0; i 《 n; i++){for (j = i+1; j 《 n; j++){if (array.average 《 1e-16){temp = array;array;array = temp;}}}}/*统计平均成绩,并输出各分数段的人数*/void print_score(struct stu array, int n){int i;double ave = 0;int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0; for (i = 0; i 《 n; i++){ave += array.average;switch ((int)(array.average / 10)){case 10:case 9: sum1++; break;case 8: sum2++; break;case 7:case 6: sum3++; break;default: sum4++;}}printf("全班的平均分为:%.1f\n", ave/n);printf("平均分在90分以上的人数为:%d\n", sum1);printf("平均分在80~89的人数为:%d\n", sum2);printf("平均分在60~79的人数为:%d\n", sum3);printf("平均分在60分以下的人数为:%d\n", sum4);}/*输出不及格科目及学生名单*/void print_unreach(struct stu array, int n){int i; printf("科目\t学号\t名字\n");for (i = 0; i 《 n; i++){if (array.Chinese 《 60){printf("语文\t%s\t%s\n", array.name);}if (array.Math 《 60){printf("数学\t%s\t%s\n", array.name);}if (array.English 《 60){printf("英语\t%s\t%s\n", array.name);}}}/*打印优等生名单*/void print_good(struct stu array, int n){int i;char mark = 0; if (n 》 3){n = 3;}printf("学号\t姓名\t语文\t数学\t英语\t平均分\t名次\n");for (i = 0; i 《 n; i++){if ((array.English 》 60)){if (array.average 》 90) mark = 1;else if (array.average 》 85){if (array.Chinese == 100) mark = 1;if (array.Math == 100) mark = 1;if (array.English == 100) mark = 1;if (array.English 》 95) mark = 1;if (array.Math 》 95) mark = 1;if (array.English 》 95) mark = 1;}if (mark == 1){printf("%s\t%s\t", array.name);printf("%.f\t%.f\t%.f\t%.1f\t", array.average);printf("%d\n", i+1);}}}}/*按学生姓名查询成绩*/void search_name(struct stu array, int n, char* name){int i;char mark = 1; for (i = 0; i 《 n; i++){if (strcmp(name, array.name) == 0){printf("学生姓名:%s\n", name);printf("学生学号:%s\n", array.id);printf("语文:%.f\n", array.Chinese);printf("数学:%.f\n", array.Math);printf("英语:%.f\n", array.English);printf("平均分:%.1f\n", array.average);mark = 0;}} if (mark == 1) puts("不存在该学生记录");}/*按学生学号查询成绩*/void search_id(struct stu array, int n, char* id){int i;char mark = 1; for (i = 0; i 《 n; i++){if (strcmp(id, array.id) == 0){printf("学生姓名:%s\n", array.name);printf("学生学号:%s\n", array.id);printf("语文:%.f\n", array.Chinese);printf("数学:%.f\n", array.Math);printf("英语:%.f\n", array.English);printf("平均分:%.1f\n", array.average);mark = 0;break;}}if (mark == 1) puts("不存在该学生记录");}void print_menu(){system("cls");printf("1.输入学生信息\n");puts("2.统计全班学生成绩");puts("3.按学号查询学生成绩");puts("4.按姓名查询学生成绩");puts("5.输出不及格情况");puts("6.输出优等生名单");puts("0.退出本程序");printf("\n\n 请输入你的选择:");}int main(int argc, char **argv){char ch = 0;char id; while (ch != ’0’){print_menu();ch = getchar();switch (ch){case ’1’: {system("cls");input();sort(students, current);break;}case ’2’: {system("cls");print_score(students, current);break;} case ’3’:{system("cls");printf("请输入学号:");scanf("%s", id);search_id(students, current, id);break;}case ’4’:{system("cls");printf("请输入姓名:");scanf("%s", name);search_name(students, current, name);break;}case ’5’:{system("cls");print_unreach(students, current);break;}case ’6’: {system("cls");print_good(students, current);break;}case ’0’: exit(0);}printf("\n\n按任意键返回主菜单……");getchar();getchar();}return 0;}

C语言程序设计 学生信息管理系统

给你一个看看#include《stdio.h》#include 《time.h》#include《conio.h》 /*清屏*/#include 《stdlib.h》 /*显示目录*/#include《string.h》 #define MAX 80 void input(); /*输入数据函数*/void sort();/*排序数据函数*/void sort1(); void sort2(); void sort3(); void display();/*显示数据函数*/ void display1();void insert(); /*插入数据函数*/void del(); /*删除数据函数*/void average(); /*平均值函数*/void find();/*查找数据函数*/void find1();void find2(); void save(); /*保存数据函数*/void read(); /*读出数据函数*/void del_file(); /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0; struct student { int no; char name; char sex; float score1; float score2; float score3; float sort; float ave; float sum; }; struct student stu,*p; main()/*主函数*/ { int as; char ch; do{ start: printf("\n\n\n\t\t\t欢迎使用学生成绩管理系统\n"); printf("\n\n\n\n\n\n\t\t******************按任意键继续********************"); ch=getch(); } while(!ch); system("cls"); /*一下为功能选择模块*/ do { printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员总成绩信息\n\t\t\t\t3.对总成绩排序\n\t\t\t\t4.显示学员单科成绩排序\n\t\t\t\t5.添加学员信息\n\t\t\t\t6.删除学员信息\n\t\t\t\t7.修改学员信息\n\t\t\t\t8.查询学员信息\n\t\t\t\t9.从文件读入学员信息\n\t\t\t\t10.删除文件中学员信息\n\t\t\t\t11.保存学员信息\n\t\t\t\t12.退出\n"); printf("\t\t\t\t选择功能选项(输入所选功能前的数字):"); fflush(stdin); /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf("%d",&as); switch(as) { case 1:system("cls"); input(); break; case 2:system("cls"); display(); break; case 3:system("cls"); sort(); break; case 4:system("cls"); display1(); break; case 5:system("cls"); insert(); break; case 6:system("cls"); del(); break; case 7:system("cls"); modify(); break; case 8:system("cls"); find(); break; case 9:system("cls"); read(); break; case 10:system("cls"); del_file(); break; case 11:system("cls"); save(); break; case 12:system("exit"); exit(0); default:system("cls"); goto start; } }while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环*/ /*至此功能选择结束*/ } void input()/*原始数据录入模块*/ { int i=0; char ch; do { printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1); printf("\n输入学生编号:"); scanf("%d",&stu.no); fflush(stdin); printf("\n输入学员姓名:"); fflush(stdin); gets(stu.name); printf("\n输入学员性别:"); fflush(stdin); gets(stu.sex); printf("\n输入学员成绩1:"); scanf("%f",&stu.score1); printf("\n输入学员成绩2:"); fflush(stdin); scanf("%f",&stu.score2); printf("\n输入学员成绩3:"); fflush(stdin); scanf("%f",&stu.score3); printf("\n\n"); i++; now_no=i; printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!=’n’&&ch!=’N’); system("cls"); } void sort()/*排序数据函数*/ { struct student temp; int i,j; average(); for(i=1;i《now_no;i++) { for(j=1;j《=now_no-i;j++) { if(stu.ave) { temp=stu; stu; stu=temp; } } } printf("排序以完成进入功能2可进行显示\n"); system("pause"); system("cls");} void sort1()/*排序数据函数*/ { struct student temp; int i,j; for(i=1;i《now_no;i++) { for(j=1;j《=now_no-i;j++) { if(stu.score1) { temp=stu; stu; stu=temp; } } } } void sort2()/*排序数据函数*/ { struct student temp; int i,j; for(i=1;i《now_no;i++) { for(j=1;j《=now_no-i;j++) { if(stu.score2) { temp=stu; stu; stu=temp; } } } } void sort3()/*排序数据函数*/ { struct student temp; int i,j; for(i=1;i《now_no;i++) { for(j=1;j《=now_no-i;j++) { if(stu.score3) { temp=stu; stu; stu=temp; } } } }void display()/*显示数据函数*/ { int i; char as; average(); do { printf("\t\t\t班级学员信息列表\n"); printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n"); for(i=0;i《now_no&&stu;i++) printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.ave); printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); }void display1()/*显示数据函数*/{ int i; char as; do { printf("\t\t\t班级学员score1成绩排序\n"); printf("\t编号\t姓名\t性别\t成绩1\n"); sort1(); for(i=0;i《now_no&&stu;i++) printf("\t%d\t%s\t%s\t%.2f\t\n",stu.score1); printf("\t\t\t班级学员score2成绩排序\n"); printf("\t编号\t姓名\t性别\t成绩2\n"); sort2(); for(i=0;i《now_no&&stu;i++) printf("\t%d\t%s\t%s\t%.2f\t\n",stu.score2); printf("\t\t\t班级学员score3成绩排序\n"); printf("\t编号\t姓名\t性别\t成绩3\n"); sort3(); for(i=0;i《now_no&&stu;i++) printf("\t%d\t%s\t%s\t%.2f\t\n",stu.score3); printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); }void insert()/*插入数据函数*/ { char ch; do { printf("\n\t\t输入新插入学员队信息\n"); printf("\n输入学生编号:"); scanf("%d",&stu.no); fflush(stdin); printf("\n输入学员姓名:"); fflush(stdin); gets(stu.name); printf("\n输入学员性别:"); fflush(stdin); gets(stu.sex); printf("\n输入学员成绩1:"); fflush(stdin); scanf("%f",&stu.score1); printf("\n输入学员成绩2:"); fflush(stdin); scanf("%f",&stu.score2); printf("\n输入学员成绩3:"); fflush(stdin); scanf("%f",&stu.score3); printf("\n\n"); now_no=now_no+1; sort(); printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!=’n’&&ch!=’N’); } void del()/*删除数据函数*/ { int inum,i; printf("输入要删除学员的编号:"); fflush(stdin); scanf("%d",&inum); for(i=0;i《now_no;i++) { if(stu.no==inum) { if(i==now_no)now_no-=1; else { stu; now_no-=1; } sort(); break; } } system("cls"); } void save()/*保存数据函数*/ { FILE *fp; int i; char filepath; printf("输入要保存的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"w"))==NULL) { printf("\n保存失败!"); exit(0); } for(i=0;i《now_no;i++) { stu.score3; stu.sum/3; fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.ave); } fclose(fp); printf("学生信息已保存在%s中!\n",filepath); system("pause"); system("cls"); } void find()/*查询函数*/ { int i; char str,as; do { printf("输入要查询的学生姓名:"); fflush(stdin); gets(str); for(i=0;i《now_no;i++) if(!strcmp(stu.name,str)) { printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n"); printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.ave); } printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); } void average()/*求平均数*/ { int i; for(i=0;i《now_no;i++) { stu.score3; stu.sum/3; } } void modify()/*修改数据函数*/ { int i; char str; printf("输入要修改的学生姓名:"); fflush(stdin); gets(str); for(i=0;i《now_no;i++) { if(!strcmp(stu.name,str)) { system("cls"); printf("\n\t\t输入新插入学员队信息\n"); printf("\n输入学生编号:"); fflush(stdin); scanf("%d",&stu.no); printf("\n输入学员性别:"); fflush(stdin); gets(stu.sex); printf("\n输入学员成绩1:"); fflush(stdin); scanf("%f",&stu.score1); printf("\n输入学员成绩2:"); fflush(stdin); scanf("%f",&stu.score2); printf("\n输入学员成绩3:"); fflush(stdin); scanf("%f",&stu.score3); printf("\n\n"); sort(); break; } } system("cls"); } void read() { FILE *fp; int i; char filepath; printf("输入要读入的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"r"))==NULL) { printf("找不到%s文件!\n",filepath); system("pause"); exit(0); } now_no=0; for(i=0;i《MAX&&!feof(fp);i++) { fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu.ave); now_no++; } fclose(fp); printf("保存的在文件%s中的所有信息已经读入!\n",filepath); system("pause"); /*按任意键继续*/ system("cls"); } void del_file() { FILE *fp; char filepath; printf("输入要删除的文件路径:"); fflush(stdin); gets(filepath); fp=fopen(filepath,"w"); fclose(fp); printf("保存的在文件%s中的所有信息已经删除!\n",filepath); system("pause"); system("cls"); }

C++ C语言程序设计 题目:学生信息管理系统 (概述操作全程,最好要详细点的)会额外加分!

我以前做的....要按你这个做不是一下两下弄得完的吧........你看看能改着用就改这用吧vc,tc,win-tc编译通过33.学生成绩管理程序设计(1)选项菜单集成各功能函数模块(2)录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)(3)按总分排名次(4)按姓名查找某学生成绩(5)统计各课程的平均分、及格率、最高分、最低分 #include "stdio.h"#include "windows.h"int sum=0,x,data=0;struct STU{ char name; char num; int chinese_great; int math_great; int all;}stu;/*定义学生结构体以及学生结构体数组*/struct STU *temp;struct STU *p;void in();/*自定义学生信息输入函数*/void all_swap();/*总分排名*/void menu();/*菜单*/void name_swap();/*姓名查找*/void tongji();/*统计*/int ssame(char a);/*字符串比对函数*/void over();/*退出*/void main(){menu(); switch (x) { case 1 : data=1;system("cls");in();break; case 2 : system("cls");all_swap();break; case 3 : system("cls");name_swap();break; case 4 : system("cls");tongji();break; } }/*菜单*/void menu(){ system("cls"); printf("******************************学生成绩管理系统****************************\n"); printf("请选择你需要的操作:\n"); printf("1.录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)\n"); printf("2.按总分排名次\n"); printf("3.按姓名查找某学生成绩\n"); printf("4.统计各课程的平均分、及格率、最高分、最低分\n"); printf("5.打印成绩表\n"); scanf("%d",&x); } /*学生信息输入函数*/void in(){ int i; int end=1; for(i=0;i《200;i++) { sum++; printf("请输入第%d个学生的姓名: ",i+1); scanf("%s",&stu.name); printf("请输入第%d个学生的学号: ",i+1); scanf("%s",&stu.num); printf("请输入第%d个学生的语文成绩: ",i+1); scanf("%d",&stu.chinese_great); printf("请输入第%d个学生的数学成绩: ",i+1); scanf("%d",&stu.math_great); stu.all=stu.chinese_great+stu.math_great; printf("\n\n\n\n\n \n 1:继续录入\n 2:结束录入\n 请选择:"); scanf("%d",&end); if(end==2) break; else if (end==1) system("cls"); else over(); }/*FOR结束*/system("cls");main();}/*学生信息输入函数结束*//*按总分排名*/void all_swap(){ int i,j,q=0; for(i=0;i《=sum;i++)p=&stu for(i=0;i《=sum-1;i++) for (j=i+1;j《=sum;j++) { if(stu.all《stu.all) { temp=p; p=p; p=temp; } } printf(" 名次 姓名 学号 总成绩 \n"); for(i=0;i《sum;i++) printf(" %d %s %s %d \n",i+1,p-》name,p-》num,p-》all); printf("输入 1 返回主菜单,输入其他退出"); scanf("%d",&q); if(q==1) { system("cls"); main(); } else over(); }/*总分查询结束*//*名字查询*/void name_swap(){int i,q;char temp;for(i=0;i《=sum;i++)p=&stu printf("\n\n\n\n\n\n\n\n\n\ 请输入您要查询的学生姓名\n");scanf("%s",&temp); for (i=0;i《=sum;i++) { if(ssame(temp,p-》name)==0) { system("cls"); printf("你所查找的学生已找到\n 姓名:%s \n 学号: %s \n 数学成绩:%d \n 语文成绩:%d \n 总成绩:%d ",p-》name,p-》num,p-》chinese_great,p-》math_great,p-》all); printf("\n\n\n\n\n\n 输入 1 返回主菜单,输入其他退出"); scanf("%d",&q); if(q==1) { system("cls"); main(); } else over(); } else { system("cls"); printf("\n\n\n\n\n\n 未找到与%s有关的记录",temp); printf("\n\n\n\n\n\n 输入 1 返回主菜单,输入其他退出"); scanf("%d",&q); if(q==1) { system("cls"); main(); } else over(); } } } /*名字查询结束*//*统计*/void tongji(){int i,q,chinese_max=0,chinese_min=9999,math_max=0,math_min=9999;long sum_chinese=0,sum_math=0;float chinese_v,math_v,chinese_p,math_p,p_c=0,p_m=0;if(data==1){ for(i=0;i《=sum;i++) { p=&stu sum_chinese=p-》chinese_great+sum_chinese; sum_math=p-》math_great+sum_math; if(p-》chinese_great》=60) p_c++; if(p-》math_great》=60) p_m++;} chinese_v=sum_chinese/sum;/*语文平均分*/ math_v=sum_math/sum;/*数学平均分*/ chinese_p=(p_c/sum)*100;/*语文及格率*/ math_p=(p_m/sum)*100;/*数学及格率*/ for(i=0;i《sum;i++) { chinese_max=max(chinese_max,p-》chinese_great); chinese_min=min(chinese_min,p-》chinese_great); math_max=max(math_max,p-》math_great); math_min=min(math_min,p-》math_great); } printf(" 科目 平均分 及格率 最高分 最低分\n"); printf(" 语文 %f 百分之%f %d %d \n",chinese_v,chinese_p,chinese_max,chinese_min); printf(" 数学 %f 百分之%f %d %d \n",math_v,math_p,math_max,math_min); printf("\n\n\n\n\n\n 输入 1 返回主菜单,输入其他退出"); scanf("%d",&q); if(q==1) { system("cls"); main(); } else over(); }else main();} /*字符串比对*/int ssame(char a){ int p=0,flag=0; while (a!=’\0’) { if((a)) { flag=1;break; } p++; } if(flag==0) { if((a!=’\0’)) flag=1; } return flag;}/*字符串比对结束*//*退出*/void over(){int q; system("cls");printf("\n\n\n\n\n\n\n\n\n 此操作将导致你退出本程序。\n1:确认退出 \n2:返回主菜单"); scanf("%d",&q);if(q==1) exit(1);else if (q==2) main();else over();}

C语言程序设计学生信息管理系统

/**********************************************************创建日期:2011-04-27 *程序名称:链表综合操作*程序作者:子夜星空 *备注信息:以前写的。**********************************************************/#include 《stdio.h》#include 《string.h》#include 《stdlib.h》#define SN 2 //科目数typedef struct student{char num, name;float score, sum, avg;struct student *next; }STU;/**********输入链表单元内容************/void input(STU *p){int i;printf("please input number:\n");scanf("%s",p-》num);printf("please input name:\n");scanf("%s",p-》name); printf("please input %d scores:\n",SN); p-》sum=0;for(i=0;i《SN;i++){scanf("%f",&p-》score);p-》sum+=p-》score;}p-》avg=p-》sum/SN;}/**********创建一个链表单元**********/STU *creat_node(){STU *p;p=(STU *)malloc(sizeof(STU));if(p == NULL) {printf("No enough memory !");exit(0);}input(p);p-》next=NULL;return p;}/**********创建一个链表**********/STU *creat_list(){STU *head=NULL,*tail=NULL,*p;char str;printf("List creating...\n");do{printf("Do you want to continue (yes/no) :");scanf("%s",str);if(strcmp(str,"yes")==0){p=creat_node();if(head==NULL){head=tail=p;continue;}tail-》next=p;tail=p;}if(strcmp(str,"yes")!=0&&strcmp(str,"no")!=0){printf("You must input ’yes’ or ’no’.\n");//getchar();continue;} if(strcmp(str,"no")==0)break;//getchar();}while(1);printf("List create end...\n\n");return head;}/************输出一个链表单元**********/void print_a_node(STU *fin){int i;printf("%s;\t%s;\t%0.2f;\t%0.2f\t",fin-》num,fin-》name,fin-》avg,fin-》sum);for(i=0;i《SN;i++)printf("%0.2f\t",fin-》score);putchar(10);}/************输出一个链表头部**********/void print_a_head(){int i;printf("number\tname\tavg\tsum\t");for(i=0;i《SN;i++)printf("score%d\t",i+1);putchar(10);}/************输出操作菜单**********/void print_menu_list(){printf("======the operation menu list======\n");printf("--》select by name\n");printf("--》print the operation menu list\n");printf("======the operation menu list======\n");putchar(10);}/************输出链表**********/int print_list(STU *stu){STU *p=stu;if(stu==NULL){printf("no records!!!\n");return (0);}print_a_head();while(p!=NULL){print_a_node(p);p=p-》next;}putchar(10);return (0);}/************插入链表单元************/void insert(STU *stu){STU *tail=stu,*p;printf("now insert a list node...\n");while(tail-》next!=NULL){tail=tail-》next;}p=creat_node();tail-》next=p;printf("Insert end...\n\n");}/**********查找链表num**********/STU *find_num(STU *stu,char num){STU *p=stu,*pr=NULL;while(p!=NULL){if(strcmp(p-》num,num)==0){pr=p;break;}p=p-》next;}return pr;}/**********查找链表name**********/STU *find_name(STU *stu,char name){STU *p=stu,*pr=NULL;while(p!=NULL){if(strcmp(p-》name,name)==0){pr=p;break;}p=p-》next;}return pr;}/************删除链表单元************/STU * delet(STU *stu,char name){STU *p=stu,*front=stu;if((p=find_name(stu,name))!=NULL){printf("the delete record:\n");print_a_head();print_a_node(p);}else {printf("can not find the student!\n");return stu;}p=stu;while(p!=NULL&&strcmp(p-》name,name)!=0){front=p;p=p-》next;}if(p==stu&&front==stu)stu=NULL;else front-》next=p-》next;if(p!=NULL)p-》next=NULL;free(p);printf("delete end...\n\n");return stu;}/**********更新链表单元**********/void update(STU *stu,char name){STU *fin;if((fin=find_name(stu,name))!=NULL){printf("before update:\n");print_a_head();print_a_node(fin);}else {printf("can not find the student!\n");exit(0);}printf("please input the new records now...\n");input(fin);printf("update end...\n\n");}/**********链表单元排序**********/void order(STU *stu){STU *pi,*pj,*max,temp;int i;if(stu!=NULL&&stu-》next!=NULL){for(pi=stu;pi!=NULL;pi=pi-》next){max=pi;for(pj=pi-》next;pj!=NULL;pj=pj-》next){if(max-》sum《pj-》sum)max=pj;}if(max!=pi){strcpy(temp.num,max-》num);strcpy(max-》num,pi-》num);strcpy(pi-》num,temp.num);strcpy(temp.name,max-》name);strcpy(max-》name,pi-》name);strcpy(pi-》name,temp.name);temp.sum=pi-》sum;pi-》sum=max-》sum;max-》sum=temp.sum;temp.avg=max-》avg;max-》avg=pi-》avg;pi-》avg=temp.avg;for(i=0;i《SN;i++){temp.score;max-》score;pi-》score;}}}printf("order end...\n\n");}elseprintf("do not need to order...\n\n");}/************释放链表**********/void fre(STU *stu){STU *p=stu,*pf;if(stu==NULL){printf("the list is NULL!\n");exit(0);}while(p!=NULL){pf=p-》next;free(p);p=pf;}if(stu==NULL)printf("free the list.\n");}STU * menu(STU *stu,int cas){STU *fin=NULL;char a;switch(cas){//创建链表case 1:if(stu!=NULL)fre(stu);stu=creat_list();break;//输出链表case 2:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}print_list(stu);break;//插入链表单元case 3:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}insert(stu);break;//查找输出numbercase 4:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}printf("please input the ’number’ you want to find:\n");scanf("%s",a);if((fin=find_num(stu,a))!=NULL){print_a_head();print_a_node(fin);}else printf("no found!\n");break; //查找输出namecase 5:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}printf("please input the ’name’ you want to find:\n");scanf("%s",a);if((fin=find_name(stu,a))!=NULL){print_a_head();print_a_node(fin);putchar(10);}else printf("no found!\n");break;//删除链表单元case 6:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}printf("please input the ’name’ you want to delete:\n");scanf("%s",a);stu=delet(stu,a);break;//更新链表单元case 7:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}printf("please input the ’name’ you want to update:\n");scanf("%s",a);update(stu,a);break;//链表单元排序case 8:if(stu==NULL){printf("can not do this operation!\n");putchar(10);break;}printf("order by score\n");order(stu);break;//打印链表操作菜单case 9:print_menu_list();break;default:printf("can not do this operation!\n");putchar(10);break;}return stu;}void main(){STU *stu=NULL;int cas;//打印操作提示print_menu_list();//用户操作do{printf("press 0~9 to choose operation!\n");scanf("%d",&cas);if(cas《0||cas》9){printf("you must press 0 to 9 !\n");continue;}if(cas!=0)stu=menu(stu,cas);if(cas==0){printf("operation end !\n\n");fre(stu);}}while(cas!=0);//释放链表fre(stu); }

用C语言设计一个简单的学生信息管理程序

#include 《iostream》#include 《stdio.h》#include 《string.h》#include 《conio.h》#include 《iostream》#include 《ctime》using namespace std;#define max 100//////////////////////////////////////////////////////////////////////////strcut stustruct stu //学生资料结构体{char name;float x,y,z,score;int number;};//////////////////////////////////////////////////////////////////////////////student.cppint count=0;int temp=0;int Exchang=0; //定义数据修改标志,若修改则为1,否则为0class student //学生类{private:stu data.num)) //判断是否相同break;if(m》count)return 0;elsereturn 1;}void taxis(); //总分排序void show(); void save(); //保存学生资料void read(); //从文件"student"读取学生资料};void student::input(char *ch1,char *num,char *ch3,float x,float y,float z){strcpy(data.num))break;if(m》count){cout 《《 "很抱歉,没有该学号的学生" 《《 endl;start_del=’n’;getch(); }else{temp=count; count=m; start_del=’y’;cout 《《 "该学生的资料为" 《《endl《《 "序号\t姓名\t学号\t\t地址\t\t\t高数\t英语\t计算机" 《《 endl;show();count=temp; getch();}}void student::del(char *num){char chose;find(num);if(start_del==’y’){cout 《《 "确实要删除该学生资料? Y/N" 《《 endl;cin 》》 chose;if(chose==’y’){int m=0;while(m《count)if(strcmp(num,data.z;count++;}printf("1");count=temp-1; cout 《《 "该学生资料已删除" 《《 endl;Exchang=1; //设置已修改数据标志}}elsecout 《《 "学生资料未删除" 《《 endl;getch();}}void student::taxis(){int x,y,array.z 《《 endl;}getch();Exchang=1; //设置已修改数据标志}void student::show(){cout 《《 count 《《 "\t" 《《 data.z 《《 endl;}//////////////////////////////////////////////////////////////////////main.cppvoid main(){student st;char *ch1,*ch3,chose;char flag;char ch;float x,y,z;time_t t;time(&t);while(1){system("cls");cout 《《 "------------------------学生管理系统------------------------" 《《endl 《《 " 1.输入/添加学生资料 "《《endl《《 " 2.输出学生资料" 《《endl《《 " 3.查找 " 《《endl《《 " 4.删除" 《《endl 《《 " 5.总分排序" 《《endl 《《 " 6.退出" 《《 endl 《《 endl《《 " 请选择你要的服务(1-6)"《《 endl;cin 》》 chose;if(chose==’6’) {break;}switch(chose){case ’1’: // 输入学生信息 {do{cout 《《 "请输入学生姓名:" 《《 endl;ch1=new char; cin 》》 ch1 ;cout 《《 "请输入学号:" 《《 endl;cin 》》 num ;while(st.check_num(num)){cout 《《 "学号重复,请重新输入" 《《 endl;cin 》》 num;}cout 《《 "请输入地址:"《《endl;cin 》》 ch3 ;cout 《《 "请输入高数成绩:"《《endl;cin 》》 x;cout 《《 "请输入英语成绩:" 《《endl;cin 》》 y;cout 《《 "请输入计算机成绩:" 《《endl;cin 》》 z;st.input(ch1,num,ch3,x,y,z); printf("\n是否继续输入学生信息?(\"y\"继续)");scanf("%s", flag);}while(strcmp(flag, "y") == 0);}break;case ’2’:// 输出学生资料 {temp=count; count=1;cout 《《 "序号\t姓名\t学号\t\t地址\t\t\t高数\t英语\t计算机" 《《 endl;while(count《=temp){st.show(); count++;}count--; getch(); }break;case ’3’:{cout 《《 "请输入你要查找学生的学号" 《《 endl;cin 》》 find;st.find(find);}break;case ’4’:{cout 《《 "请输入你要删除的学生学号" 《《 endl;cin 》》 del;st.del(del);}break;case ’5’:{st.taxis(); }break;default: {cout 《《 "输入错误!!!,请重新输入" 《《 endl;getch();}}}cout 《《 "感谢你的使用!\n" 《《endl;getch();}

学生信息管理系统设计(C语言)

写了半天,看看吧。#include《stdio.h》 #include《stdlib.h》 #include《conio.h》 #include《string.h》 struct student{ int id; char name; int age; char sex;char birthady; int tel;char nativeplace;}st; int i=0; void shuru() { char a; do{ printf("\n请输入学号:"); scanf("%d",&st.id); fflush(stdin); printf("\n请输入姓名:"); gets(st.name); printf("\n") ; printf("请输入年龄:"); scanf("%d",&st.age); fflush(stdin); printf("\n请输入姓别:"); gets(st.sex); fflush(stdin); printf("\n请输入生日:"); gets(st.birthady);printf("\n请输入电话:"); scanf("%d",&st.tel); fflush(stdin); printf("\n请输入籍贯:"); gets(st.nativeplace);printf("\n是否继续输入另外一个学生信息?(y/n)"); fflush(stdin); a=getchar(); i++; }while(a==’y’ && i《=50); } void xianshi() { int j; printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n"); for(j=0;j《i;j++) printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n", st.nativeplace); } void paixu() //按年龄从大到小排序函数 { int j,k; int temp; for(j=0;j《i;j++) { for(k=0;k《i-1-j;k++) { if(st.age) { temp=st.age; st.age; st.age=temp; } } } xianshi(); //排序后输出 } void chazhao() { int m; char name,b; do { printf("\n请输入想查找的学生姓名:"); fflush(stdin); gets(name); for(m=0;m《i;m++) { if(strcmp(name,st.name)==0) { printf("\n\t您查找的学生在第%d个位置找到了!!!\n",m+1); break; } } if(m》=20) printf("\n\t没有找到这个学生!!!\n"); else { printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n"); printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n", st.nativeplace); } printf("\n是否查找另一个学生的信息?(y/n)"); fflush(stdin); b=getchar(); }while(b==’y’); } void shanchu() { char name,c; int a,b; do { printf("\n请输入要删除的学生姓名:\n"); fflush(stdin); gets(name); for(a=0;a《i;a++) { if(strcmp(name,st.name)==0) break; } for(b=a;b《i;b++) st; if(a》i) printf("\t没有找到这个学生!!!\n"); else { i--; xianshi(); } printf("\n是否继续删除另一个学生信息?(y/n) "); fflush(stdin); c=getchar(); }while(c==’y’); } void charu() { shuru(); paixu(); } void main() //主函数 { int change; do{ system("cls"); printf("============================学生信息管理系统===================================\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"); fflush(stdin); printf("\t\t请输入功能选项:"); scanf("%d",&change); switch(change) { case 1: shuru(); break; case 2: xianshi(); break; case 3: chazhao(); break; case 4: shanchu(); break; case 5: charu(); break; case 6: break; } getch(); }while(change!=6); }

C语言 学生信息管理系统设计

呵呵~~我也找了很久哦~~第一种:#include《stdio.h》 #include《stdlib.h》 #include《conio.h》 #include《string.h》 struct student{ int id; char name; int age; char sex; char birthady; int tel; char nativeplace; }st; int i=0; void shuru() { char a; do{ printf("\n请输入学号:"); scanf("%d",&st.id); fflush(stdin); printf("\n请输入姓名:"); gets(st.name); printf("\n") ; printf("请输入年龄:"); scanf("%d",&st.age); fflush(stdin); printf("\n请输入姓别:"); gets(st.sex); fflush(stdin); printf("\n请输入生日:"); gets(st.birthady); printf("\n请输入电话:"); scanf("%d",&st.tel); fflush(stdin); printf("\n请输入籍贯:"); gets(st.nativeplace); printf("\n是否继续输入另外一个学生信息?(y/n)"); fflush(stdin); a=getchar(); i++; }while(a==’y’ && i《=50); } void xianshi() { int j; printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n"); for(j=0;j《i;j++) printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n", st.nativeplace); } void paixu() //按年龄从大到小排序函数 { int j,k; int temp; for(j=0;j《i;j++) { for(k=0;k《i-1-j;k++) { if(st.age) { temp=st.age; st.age; st.age=temp; } } } xianshi(); //排序后输出 } void chazhao() { int m; char name,b; do { printf("\n请输入想查找的学生姓名:"); fflush(stdin); gets(name); for(m=0;m《i;m++) { if(strcmp(name,st.name)==0) { printf("\n\t您查找的学生在第%d个位置找到了!!!\n",m+1); break; } } if(m》=20) printf("\n\t没有找到这个学生!!!\n"); else { printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n"); printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n", st.nativeplace); } printf("\n是否查找另一个学生的信息?(y/n)"); fflush(stdin); b=getchar(); }while(b==’y’); } void shanchu() { char name,c; int a,b; do { printf("\n请输入要删除的学生姓名:\n"); fflush(stdin); gets(name); for(a=0;a《i;a++) { if(strcmp(name,st.name)==0) break; } for(b=a;b《i;b++) st; if(a》i) printf("\t没有找到这个学生!!!\n"); else { i--; xianshi(); } printf("\n是否继续删除另一个学生信息?(y/n) "); fflush(stdin); c=getchar(); }while(c==’y’); } void charu() { shuru(); paixu(); } void main() //主函数 { int change; do{ system("cls"); printf("============================学生信息管理系统===================================\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"); fflush(stdin); printf("\t\t请输入功能选项:"); scanf("%d",&change); switch(change) { case 1: shuru(); break; case 2: xianshi(); break; case 3: chazhao(); break; case 4: shanchu(); break; case 5: charu(); break; case 6: break; } getch(); }while(change!=6); }第二种#include《stdio.h》 #include《conio.h》 #include《string.h》 typedef struct STUDENT { char studentNumber;/*学生学号*/ char studentName;/*学生姓名*/ char studentSEX;/*学生性别*/ char className;/*班级名称*/ float mark1;/*第1门成绩*/ float mark2;/*第2门成绩*/ float mark3;/*第3门成绩*/ float mark4;/*第4门成绩*/ float mark5;/*第5门成绩*/ struct STUDENT *next; }STUDENT; STUDENT *headLink;/*链表表头指针*/ /*以下是函数声明*/ void ReadInfoFormFile(void); void DesplayMenu(void); void CreateHeadLink(void); STUDENT *MallocNode(void); void GetInformation(STUDENT *t); void OutputInformation(void); void DesplayInfoBystudentName(void); void DesplayInfoBystudentNumber(void); void DesplayOneNode(STUDENT *t); void InsertOneNode(STUDENT *t); void DeleteNodeBystudentNumber(void); void ChangeMarkByName(void); void ChangeMarkByNumber(void); void SaveLinkToFile(void); void DesplayMarkSegment(void); void CompositorByTotalMark(void); int choose;/*用于接受用户的选择*/ /*主函数*/ void main() { CreateHeadLink(); ReadInfoFormFile(); DesplayMenu(); } /************************************ 函数功能:从文件中读学生信息到链表中 ************************************/ void ReadInfoFormFile(void) { FILE *fp; STUDENT *p; fp=fopen("student.txt","r"); if(!fp) { printf("文件不存在\n"); return; } p=MallocNode(); while(fscanf(fp,"%s%s%s%s%f%f%f",p-》studentNumber,p-》studentSEX,p-》studentName,p-》className,&(p-》mark1),&(p-》mark2),&(p-》mark3),&(p-》mark4),&(p-》mark5))》0) { InsertOneNode(p); p=MallocNode(); } fclose(fp); } /************************************ 函数功能:显示菜单,根据用户的输入 完成相应的功能 ************************************/ void DesplayMenu(void) { STUDENT *p; 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"); printf("| 9 显示优秀和不及格学生成绩 |\n"); printf("| 10 排序结果并输出成绩 |\n"); printf("| 11 退出 |\n\n"); scanf("%d",&choose);/*取得用户的选择*/ switch(choose) { case 1: OutputInformation();/*显示所有学生的信息*/ break; case 2: DesplayInfoBystudentName(); break; case 3: DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/ break; case 4: p=MallocNode();/*先申请一个新结点*/ GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/ break; case 5: DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/ break; case 6: ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/ break; case 7: ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/ break; case 8: SaveLinkToFile();/*保存数据*/ break; case 9: DesplayMarkSegment();/*显示各分数段的学生成绩*/ break; case 10: CompositorByTotalMark(); break; case 11: SaveLinkToFile();/*保存数据后再退出*/ free(headLink); exit(1); break; default: break; } DesplayMenu();/*递归调用*/ } /************************************ 函数功能:建立链表表头 ************************************/ void CreateHeadLink(void) { STUDENT *p; p=(STUDENT*)malloc(sizeof(STUDENT)); headLink=p; p-》next=NULL; } /************************************ 函数功能:申请一个新结点,并将其初始化 ************************************/ STUDENT *MallocNode(void) { STUDENT *p; int i; p=(STUDENT*)malloc(sizeof(STUDENT)); if(p==NULL) return NULL; for(i=0;i《10;i++) p-》studentNumber=’\0’; for(i=0;i《20;i++) p-》studentName=’\0’; for(i=0;i《10;i++) p-》studentSEX=’\0’; for(i=0;i《20;i++) p-》className=’\0’; p-》mark1=0.0; p-》mark2=0.0; p-》mark3=0.0; p-》mark4=0.0;p-》mark5=0.0;p-》next=NULL; return p; } /************************************ 函数功能:取得用户输入的学生信息 ************************************/ void GetInformation(STUDENT *t) { printf("请输入学生学号:\n"); scanf("%s",t-》studentNumber); printf("请输入学生姓名:\n"); scanf("%s",t-》studentName); printf("请输入学生性别:\n"); scanf("%s",t-》studentSEX); printf("请输入该生所在班级:\n"); scanf("%s",t-》className); printf("请输入第1门成绩:\n"); scanf("%f",&(t-》mark1)); printf("请输入第2门成绩:\n"); scanf("%f",&(t-》mark2)); printf("请输入第3门成绩:\n"); scanf("%f",&(t-》mark3)); printf("请输入第4门成绩:\n"); scanf("%f",&(t-》mark4)); printf("请输入第5门成绩:\n"); scanf("%f",&(t-》mark5)); } /************************************ 函数功能:在链表的结尾处增加一个结点 ************************************/ void InsertOneNode(STUDENT *t) { STUDENT *p; p=headLink; while(p-》next) { p=p-》next; } p-》next=t; } /************************************ 函数功能:根据用户输入的学生姓名显示该学生的信息 ************************************/ void DesplayInfoBystudentName(void) { STUDENT *p; char studentName; char flag=0; p=headLink-》next; printf("请输入学生姓名:\n"); scanf("%s",studentName); while(p) { if(strcmp(p-》studentName,studentName)==0) { printf("学号\t姓名\t性别\t班级\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t总成绩\t平均成绩\n\n"); DesplayOneNode(p); flag=1; break; } p=p-》next; } if(!flag) printf("对不起,不存在姓名为 %s 的学生\n",studentName); } /************************************ 函数功能:根据用户输入的学号显示该学生的信息 ************************************/ void DesplayInfoBystudentNumber(void) { STUDENT *p; char studentNumber; char flag=0; p=headLink-》next; printf("请输入学生学号:\n"); scanf("%s",studentNumber); while(p) { if(strcmp(p-》studentNumber,studentNumber)==0) { printf("学号\t姓名\t性别\t班级\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t总成绩\t平均成绩\n\n"); DesplayOneNode(p); flag=1; break; } p=p-》next; } if(!flag) printf("对不起,不存在学号为 %s 的学生\n",studentNumber); } /************************************ 函数功能:输出一个结点的信息 ************************************/ void DesplayOneNode(STUDENT *t) { printf("%s\t",t-》studentNumber); printf("%s\t",t-》studentName); printf("%s\t",t-》studentSEX);printf("%s\t",t-》className); printf("%.2f\t",t-》mark1); printf("%.2f\t",t-》mark2); printf("%.2f\t",t-》mark3); printf("%.2f\t",t-》mark4); printf("%.2f\t",t-》mark5); printf("%.2f\t",t-》mark1+t-》mark2+t-》mark3+t-》mark4+t-》mark5); printf("%.2f\t\n",(t-》mark1+t-》mark2+t-》mark3+t-》mark4+t-》mark5)/5); } /************************************ 函数功能:根据用户输入的学号删除该学生 ************************************/ void DeleteNodeBystudentNumber(void) { char studentNumber; STUDENT *p,*q; char flag=0; printf("请输入要删除的学生学号:"); scanf("%s",studentNumber); p=headLink; q=headLink-》next; while(q) { if(strcmp(q-》studentNumber,studentNumber)==0) { p-》next=q-》next; free(q); flag=1; break; } p=p-》next; q=q-》next; } if(!flag) { printf("不存在该学号的学生\n"); return; } printf("成功删除\n"); } /************************************ 函数功能:显示所有学生的信息 ************************************/ void OutputInformation(void) { STUDENT *p; p=headLink-》next; if(p==NULL) { printf("现在没有学生信息,请先输入学生信息\n\n"); return; } printf("学号\t姓名\t性别\t班级\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t总成绩\t平均成绩\n\n"); while(p) { DesplayOneNode(p); p=p-》next; } } /************************************ 函数功能:根据输入的姓名修改成绩 ************************************/ void ChangeMarkByName(void) { STUDENT *p; char studentName; char flag=0; float mark1,mark2,mark3,mark4,mark5;p=headLink-》next; printf("请输入学生姓名:\n"); scanf("%s",studentName); while(p) { if(strcmp(p-》studentName,studentName)==0) { printf("请输入新的第1门成绩:\n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:\n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:\n"); scanf("%f",&mark3); printf("请输入新的第4门成绩:\n"); scanf("%f",&mark4); printf("请输入新的第5门成绩:\n"); scanf("%f",&mark5); p-》mark1=mark1; p-》mark2=mark2; p-》mark3=mark3;p-》mark4=mark4; p-》mark5=mark5; flag=1; printf("修改成功\n"); break; } p=p-》next; } if(!flag) printf("对不起,不存在姓名为 %s 的学生\n",studentName); } /************************************ 函数功能:根据输入的学号修改成绩 ************************************/ void ChangeMarkByNumber(void) { STUDENT *p; char studentNumber; char flag=0; float mark1,mark2,mark3,mark4,mark5;p=headLink-》next; printf("请输入学生学号:\n"); scanf("%s",studentNumber); while(p) { if(strcmp(p-》studentNumber,studentNumber)==0) { printf("请输入新的第1门成绩:\n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:\n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:\n"); scanf("%f",&mark3); printf("请输入新的第4门成绩:\n"); scanf("%f",&mark4); printf("请输入新的第5门成绩:\n"); scanf("%f",&mark5); p-》mark1=mark1; p-》mark2=mark2; p-》mark3=mark3; p-》mark4=mark4; p-》mark5=mark5; flag=1; printf("修改成功\n"); break; } p=p-》next; } if(!flag) printf("对不起,不存在学号为 %s 的学生\n",studentNumber); } /************************************ 函数功能:保存链表数据到文件中 ************************************/ void SaveLinkToFile(void) { STUDENT *p; FILE *fp; p=headLink-》next; if(p==NULL) { printf("现在没有学生信息,请先输入学生信息\n\n"); return; } fp=fopen("student.txt","w+"); if(!fp) { printf("文件不存在\n"); return; } while(p) { fprintf(fp,"%s %s %s %s %f %f %f %f %f\n",p-》studentNumber,p-》studentName,p-》studentSEX,p-》className,p-》mark1,p-》mark2,p-》mark3,p-》mark4,p-》mark5); p=p-》next; } fclose(fp); } /************************************ 函数功能:显示优秀和不及格学生成绩 ************************************/ void DesplayMarkSegment(void) { STUDENT *p; int count=0; p=headLink-》next; printf("60分以下(不及格)的学生成绩如下:\n"); printf("学号\t姓名\t性别\t班级\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t总成绩\t平均成绩\n\n"); while(p) { if((6》((int)(p-》mark1/10)))||(6》((int)(p-》mark2/10)))||(6》((int)(p-》mark3/10)))||(6》((int)(p-》mark4/10)))||(6》((int)(p-》mark5/10))))/*只要有一科不及格就认为该生不及格*/ { count++; DesplayOneNode(p); } p=p-》next; } printf("不及格的学生一共有%d人\n",count); p=headLink-》next; printf("成绩优秀的学生成绩如下:\n"); printf("学号\t姓名\t性别\t班级\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\t总成绩\t平均成绩\n\n"); count=0; while(p) { if((8《=((int)(p-》mark1/10)))&&(8《=((int)(p-》mark2/10)))&&(8《=((int)(p-》mark3/10)))&&(8《=((int)(p-》mark4/10)))&&(8《=((int)(p-》mark5/10)))) { count++; DesplayOneNode(p); } p=p-》next; } printf("成绩优秀的学生一共有%d人\n",count); } /************************************ 函数功能:按总成绩排序 ************************************/ void CompositorByTotalMark(void) { STUDENT exchange,*r,*p,*q; r=headLink-》next; if(r==NULL) { printf("现在还没学生信息,请先输入学生信息\n"); return; } while(r)/*两层while循环实现排序*/ { p=r; q=r-》next; while(q) { if((q-》mark1+q-》mark2+q-》mark3+q-》mark4+q-》mark5)》(p-》mark1+p-》mark2+p-》mark3+p-》mark4+p-》mark5)) { strcpy(exchange.studentNumber,q-》studentNumber);/*先复制q结点信息到exchange*/ strcpy(exchange.studentName,q-》studentName); strcpy(exchange.className,q-》className); exchange.mark1=q-》mark1; exchange.mark2=q-》mark2; exchange.mark3=q-》mark3; exchange.mark4=q-》mark4; exchange.mark5=q-》mark5; strcpy(q-》studentNumber,p-》studentNumber);/*再复制p结点信息到q*/ strcpy(q-》studentName,p-》studentName); strcpy(q-》studentSEX,p-》studentSEX); strcpy(q-》className,p-》className); q-》mark1=p-》mark1; q-》mark2=p-》mark2;q-》mark3=p-》mark3; q-》mark4=p-》mark4; q-》mark5=p-》mark5; strcpy(p-》studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/ strcpy(p-》studentName,exchange.studentName); strcpy(p-》className,exchange.className); p-》mark1=exchange.mark1; p-》mark2=exchange.mark2; p-》mark3=exchange.mark3; p-》mark4=exchange.mark4; p-》mark5=exchange.mark5; } q=q-》next; } r=r-》next; } OutputInformation(); }我比较倾向于第二种,因为是自己调试的,呵呵~~你只要把"成绩"改成你需要的其他信息就OK了~~

C语言程序设计题目:学生信息管理系统设计

已经按你的要求改写并调试通过了。调试环境win-tc和Dev-c++. 这是我在以前帮别人写的学生成绩管理系统的基础上改写的,学生信息用文件保存,从文件读入。同时为了简化起见,没有使用链表,容易理解。程序还具有很强的判断验错功能。对本题算法很简单,就是一个函数strcmp().其中student.dat内容如下,你可以自己用记事本修改并保存文件名为student.dat即可: 100001 周云发 19 男 1985.10 香港秀水街 19944569659 123@163.com 100009 程龙 18 男 1986.11 香港秀水街 19744569659 133@126.com 100003 章自已 18 女 1986.12 香港古装城 19844569659 143@163.com 100004 周讯 17 女 1987.06 香港秀水街 19644569659 153@126.com 100008 李丽珍 19 女 1985.08 香港古装城 19544569659 163@163.com 100007 蔡灼燕 17 女 1987.10 香港靓仔街 19444569659 173@126.com 100012 刘得花 20 男 1984.06 香港古装城 19344569659 183@126.com 100010 李嘉欣 20 女 1984.03 香港秀水街 19244569659 193@163.com 100011 周星星 19 男 1985.07 香港靓仔街 19144569659 223@163.com 100002 梁超伟 20 男 1984.01 香港秀水街 19044569659 233@163.com 本题的一个完整的c程序如下,程序在win-tc和Dev-c++下都调试通过。 /* 简易学生信息管理系统 win-tc和Dev-c++下运行良好,注意不是vc++下*/ #include《stdio.h》 #include《stdlib.h》#include《string.h》 #define BUFLEN 80 /* 缓冲区最大字符数 */ #define LEN 20 /* 学号和姓名最大字符数,实际请更改 */ #define N 200 /* 最大学生人数,实际请更改*/ struct record { char code; /* 学号 */ char name; /* 姓名 */ int age; /* 年龄 */char sex; /* 性别 */char time; /* 出生年月 */ char add; /* 家庭地址 */char tel; /* 电话号码 */char mail; /* 电子邮件地址 */}stu; int k=1,n,m; /* 定义全局变量 */void readfile();/* 函数声明 */ void seek(); void modify(); void insert(); void del(); void display(); void save(); void menu(); int main() { while(k) menu(); system("pause"); return 0; } void readfile()/* 建立信息 */ { char buf,*p="student.dat"; FILE *fp; int i=0; if ((fp=fopen("student.dat","r"))==NULL) { printf("Open file %s error! Strike any key to exit!",p); system("pause"); exit(0); } while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu.age, stu.mail)==8) { i++; i=i; } fclose(fp); n=i; printf("录入完毕!\n"); } void seek() {int i,j,item,flag; char s1; /* 以姓名和学号最长长度+1为准 */ printf("------------------\n"); printf("1.按学号查询\n"); printf("2.按姓名查询\n"); printf("3.退出本菜单\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); flag=0; switch(item) { case 1: printf("请输入要查询的学生的学号:\n"); scanf("%s",s1); for(i=0;i《n;i++) if(strcmp(stu.code,s1)==0) { flag=1; printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n"); printf("%s %s %d %s %s %s %s %s\n",stu.age, stu.mail); } if(flag==0) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n"); scanf("%s",s1); for(i=0;i《n;i++) if(strcmp(stu.name,s1)==0) { flag=1; printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n"); printf("%s %s %d %s %s %s %s %s\n",stu.age, stu.mail); } if(flag==0) printf("该姓名不存在!\n"); break; case 3:return; default:printf("请在1-3之间选择\n"); } } } void modify() /*修改信息*/ {int i,j,item,num; char sex1; /* 以姓名和学号最长长度+1为准 */ printf("请输入要要修改的学生的学号:\n"); scanf("%s",s1); for(i=0;i《n;i++) if(strcmp(stu.code,s1)==0) num=i; printf("------------------\n"); printf("1.修改姓名\n"); printf("2.修改年龄\n"); printf("3.修改性别\n"); printf("4.修改出生年月\n"); printf("5.修改地址\n"); printf("6.修改电话号码\n"); printf("7.修改E-mail地址\n"); printf("8.退出本菜单\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); switch(item) { case 1: printf("请输入新的姓名:\n"); scanf("%s",s2); strcpy(stu.name,s2); break; case 2: printf("请输入新的年龄:\n"); scanf("%d",&stu.age);break; case 3: printf("请输入新的性别:\n"); scanf("%s",sex1); strcpy(stu.sex,sex1); break; case 4: printf("请输入新的出生年月:\n"); scanf("%s",s2); strcpy(stu.time,s2); break; case 5: printf("请输入新的地址:\n"); scanf("%s",s2); strcpy(stu.add,s2); break; case 6: printf("请输入新的电话号码:\n"); scanf("%s",s2); strcpy(stu.tel,s2); break; case 7: printf("请输入新的E-mail地址:\n"); scanf("%s",s2); strcpy(stu.mail,s2); break; case 8:return; default:printf("请在1-8之间选择\n"); } } } void insert() { int i=n,j,flag; printf("请输入待增加的学生数:\n"); scanf("%d",&m); do { flag=1; while(flag) { flag=0; printf("请输入第 %d 个学生的学号:\n",i+1); scanf("%s",stu.code); for(j=0;j《i;j++) if(strcmp(stu.code)==0) { printf("已有该学号,请检查后重新录入!\n"); flag=1; break; /*如有重复立即退出该层循环,提高判断速度*/ } } printf("请输入第 %d 个学生的姓名:\n",i+1); scanf("%s",stu.name); printf("请输入第 %d 个学生的年龄:\n",i+1); scanf("%d",&stu.age); printf("请输入第 %d 个学生的性别:\n",i+1); scanf("%s",stu.sex); printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu.time); printf("请输入第 %d 个学生的地址:\n",i+1); scanf("%s",stu.add); printf("请输入第 %d 个学生的电话:\n",i+1); scanf("%s",stu.tel); printf("请输入第 %d 个学生的E-mail:\n",i+1); scanf("%s",stu.mail); if(flag==0) { i=i; i++; } }while(i《n+m); n+=m; printf("录入完毕!\n\n"); } void del() { int i,j,flag=0; char s1; printf("请输入要删除学生的学号:\n"); scanf("%s",s1); for(i=0;i《n;i++) if(strcmp(stu.code,s1)==0) { flag=1; for(j=i;j《n-1;j++) stu; } if(flag==0) printf("该学号不存在!\n"); if(flag==1) { printf("删除成功,显示结果请选择菜单6\n"); n--; } } void display() { int i,j; printf("所有学生的信息为:\n"); for(i=0;i《n;i++) { printf("%s %s %d %s %s %s %s %s\n",stu.age, stu.mail); } } void save() { int i,j,k,flag=0; FILE *fp; fp=fopen("student.dat","w"); for(i=0;i《n;i++) { fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu.age, stu.mail); } fclose(fp); } void menu()/* 界面 */ { int num; printf(" \n\n简易学生信息管理系统\n\n"); printf("*****系统功能菜单*****\n"); printf("----------------------\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"); printf("----------------------\n"); printf("请选择菜单编号:"); scanf("%d",#); switch(num) { case 1:readfile();break; case 2:seek();break; case 3:modify();break; case 4:insert();break; case 5:del();break; case 6:display();break; case 7:save();break; case 8:k=0;break; default:printf("请在1-8之间选择\n"); } }

用C语言设计一个学生信息查询系统程序

1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。

2、编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。

3、在源文件中创建main源文件和Stu源文件。再main文件中写入int mian()代码。

4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。

5、在Stu源文件的Init函数用printf语句,将学生管理系统输出。再创建链表的头节点head。

6、然后用switch函数对操作进行判断。再执行数据结构的增删改查功能。这样一个学生管理系统的基本框架就完成了。

如果你还想了解更多这方面的信息,记得收藏关注本站。