学生的信息需要管理,其中每个学生的信息包括学号、姓名、成绩三个
/***********************************************************************--设定管理员的初始密码为123abc************************************************************************/#include 1表示输入密码正确,0表示错误 int isRead=0; //判断用户是否已经读取了原来保存的信息 Student_head(); //打印头信息 do { Student_print(); //打印菜单 int user; scanf("%d",&user); if(user != 1 && isRead==0) { Student_printError(); continue; } switch(user) { case 1: count=Student_loanding(Stud); isRead = 1; break; case 2: Student_modi_password(Stud,count); break; case 3: count=Student_input(Stud,count); Student_save(Stud,count); break; case 4: Student_output(Stud,count); break; case 5: password1=Student_password(count); if(password1==1) { count=Student_delete(Stud,count); Student_save(Stud,count); } else if(password1==0) { printf("\n\t\t 密码输入错误3次,你无权执行此操作。\n\n"); } else { printf("\n\n"); } break; case 6: Student_line(Stud,count); Student_output(Stud,count); break; case 7: Student_save(Stud,count); break; case 8: exit(0); break; default: printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━┓"); printf("\n\t\t┃ 没有这个功能选项,请选择1-8 ┃"); printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━┛\n"); } }while(1); }void Student_head() //打印头信息{ printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓学员成绩管理〓〓〓〓〓〓〓〓〓〓"); printf("\n\t说明:①如有记录,请先读取记录。 "); printf("\n\t ②如无记录,请先添加记录,并保存。"); printf("\n\t ③添加和删除资料后将自动保存资料。 "); printf("\n\t ④删除和修改密码需要验证密码。\n"); printf("\n--------------------------------------------------------------------------------");}void Student_print(){ printf("\n\t\t ┌┄┄┄┄┄┄ 学员成绩管理 ┄┄┄┄┄┄┐"); printf("\n\t\t ┆ ------------------------------------ ┆"); printf("\n\t\t ┆ 1. 读取学员资料 2. 修改管理员密码 ┆"); printf("\n\t\t ┆ 3. 添加学员资料 4. 查看学员资料 ┆"); printf("\n\t\t ┆ 5. 删除学员资料 6. 按平均成绩排序 ┆"); printf("\n\t\t ┆ 7. 保存学员资料 8. 退出程序 ┆"); printf("\n\t\t └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘"); printf("\n\t\t\t 请选择1-8:");}void Student_printError() //打印错误的提示信息{ printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━┓"); printf("\n\t\t┃ 请先去取原保存信息。 。 ┃"); printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━┛\n");}int Student_loanding(Stu a[]) //读取函数{ int i=0,j=0; FILE *fp; fp=fopen("Student.txt","r"); if(fp==NULL) { printf("\t\t ┏━━━━━━━━━━━━━━━━━┓"); printf("\n\t\t ┃ 没有学员记录可以读取 ┃"); printf("\n\t\t ┗━━━━━━━━━━━━━━━━━┛\n\n"); } else { fscanf(fp,"%d",&j); fscanf(fp,"%s",password); for(i=0;i #include #include #include #include #include using namespace std; void Sort(); void Output(); char stu_no[6]; struct STUDENT { char class_no[20]; char student_no[6]; char name[8]; float cpp_prog; float media; float english; float math; float ave_score; int order; bool operator stu; int size; bool COMPARE(const STUDENT& x) { int flag; flag = strcmp(x。 student_no, stu_no); if (flag == 0) { return true; } else { return false; } } void Input(void) { int num; STUDENT temp; cout > num; size = num; for (int i=0; i> temp。 class_no >> temp。 student_no >> temp。name >> temp。 cpp_prog >> temp。media >> temp。 english >> temp。math; stu。 push_front(temp); //从前端添加元素 } } void Statistic(void) { int i; i=0; list::iterator p; for (p=stu。 begin(); p!=stu。 end(); p++) { (*p)。ave_score = ((*p)。 cpp_prog + (*p)。english + (*p)。 math + (*p)。media) / 4; } for (p=stu。 begin(); p!=stu。end(); p++) { cout >stu_no; cout::const_iterator iter; iter = find_if(stu。 begin(),stu。end(),COMPARE); if(iter == stu。 end() ) cout >stu_no; STUDENT temp; list::iterator p; p = find_if(stu。begin(),stu。 end(),COMPARE); if(p == stu。 end() ) cout > temp。 cpp_prog; cout > temp。media; cout > temp。 english; cout > temp。math; (temp)。 ave_score = ((temp)。 cpp_prog + (temp)。 english + (temp)。math + (temp)。 media) / 4; replace_if(stu。begin(),stu。 end(),COMPARE,temp); Sort (); } } void Delete(void) { cout >stu_no; list::iterator p; p = find_if(stu。 begin(), stu。 end(), COMPARE); stu。erase(p); Sort(); Output(); } void Sort(void) { int i; i = 1; stu。 sort(); list::iterator p; for (p=stu。 begin(); p!=stu。 end(); p++) { (*p)。order = i; i++; } Output(); } void Insert(void) { STUDENT temp; cout > temp。 class_no >> temp。student_no >> temp。 name >> temp。cpp_prog >> temp。 media >> temp。english >> temp。 math; temp。ave_score = (temp。 cpp_prog + temp。english +temp。 math + temp。media )/4; stu。 push_front(temp); Sort(); }void Output() { list::iterator p ; int i; i = 0; for(p=stu。 begin(); p!=stu。 end(); p++) { cout > flag; cin。 ignore(); switch(flag) { case '1': Input(); break; case '2': Output(); break; case '3': Statistic(); break; case '4': Sort(); break; case '5': Lookup(); break; case '6': Modify(); break; case '7': Delete(); break; case '8': Insert(); break; case '0': exit(0); } cout 全部。 又是这个,下面是大三时做 RESOURCE ****************************************************************************Peng G.******************************** #include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /* */ struct student { char num[10];/* 学号 */ char name[20]; char sex[4]; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime[10];/* 最近更新时间 */ }; 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[],char nameornum[]) /* 该函数用于定位连表中符合要求接点,并返回该指针 */ { 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[10]; 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[20]; 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[20]; 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[20]; 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); 。 #include"stdio.h"#include"stdlib.h"#include"string.h"#include"process.h"/*单链表结构*/ typedef struct LNote { char num[15]; char name[10]; int score; struct LNote *next; }LNote,*List;/*初始化*/ List Start() { List L; L=(List)malloc(sizeof(LNote)); L->next=NULL; return L; }/*插入并排序*/ void Insert(List L,char num[],char name[],int score) { List pre,p,s; p=L; s=(List)malloc(sizeof(LNote)); strcpy(s->num,num); strcpy(s->name,name); s->score=score; do { pre=p; p=p->next; } while(p!=NULL&&s->scorescore); s->next=pre->next; pre->next=s; printf("\n\t\t\t\t插入成功"); }/*删除*/ void Delete(List L,char num[]) { List pre,p; p=L; if(p->next==NULL) { printf("\n\t\t\t\t记录为空"); goto end; } while(p!=NULL&&strcmp(p->num,num)!=0) { pre=p; p=p->next; } if(p==NULL) { printf("\n\t\t\t\t没有该学生的数据"); goto end; } if(strcmp(p->num,num)==0) { pre->next=p->next; free(p); printf("\n\t\t\t\t删除成功"); } end: printf("\n"); }/*遍历*/ void Traverse(List L) { List p; p=L->next; if(p==NULL) printf("\n\t\t\t\t没有记录"); else { printf("\n\t\t学号\t\t姓名\t成绩\n"); while(p!=NULL) { printf("\t\t%-15s%-10s%-5d\n",p->num,p->name,p->score); p=p->next; } } }/*查找*/ void Find(List L,char num[]) { List p; p=L; while(p!=NULL&&strcmp(p->num,num)!=0) p=p->next; if(p==NULL) printf("\t\t\t\t没有找到"); else { printf("\n\t\t学号\t\t姓名\t成绩\n"); printf("\t\t%-15s%-10s%-5d",p->num,p->name,p->score); } }/*保存*/ void Save(List L) { FILE *fp; List p; p=L->next; if((fp=fopen("学生管理.txt","w"))==NULL) { printf("文件打开失败\n"); exit(1); } while(p!=NULL) { fprintf(fp,"%-15s%-10s%-4d\n",p->num,p->name,p->score); p=p->next; } printf("\n\t\t\t\t保存成功"); }/*统计*/ void Tegether(List L) { List p,q; float a=0,b=0,c=0,length=0; q=L->next; while(q!=NULL) { length++; q=q->next; } if(length==0) printf("\n\t\t\t\t记录为空\n"); else { p=L->next; while(p!=NULL) { if(p->score>=80&&p->score a++; if(p->score>=60&&p->score b++; if(p->score>=0&&p->score c++; p=p->next; } printf("\n\t优秀%.0f人数\t及格%.0f人\t\t不及格%.0f人\n",a,b,c); printf("\t优秀率%-3.2f\t及格率%-3.2f\t不及格率%-3.2f",a/length,b/length,c/length); } }/*读取文件*/ void Read(List L) { FILE *fp; char num[15]; char name[10]; int score; List s,pre; if((fp=fopen("学生管理.txt","r+"))==NULL) printf("文件打开失败"); printf("%s\t\t%s\t%s\n","学号","姓名","成绩"); pre=L; while(!feof(fp)) { fscanf(fp,"%s%s%d\n",num,name,&score); printf("%-15s%-10s%-4d\n",num,name,score); s=(List)malloc(sizeof(LNote)); strcpy(s->num,num); strcpy(s->name,name); s->score=score; pre->next=s; pre=s; } s->next=NULL; if(fclose(fp)) printf("文件关闭失败"); } int scan() { int d,c=2; printf("\t\t\t\t%c 1.初始化 %c\n\n",c,c); printf("\t\t\t\t%c 2.输入数据 %c\n\n",c,c); printf("\t\t\t\t%c 3.删除数据 %c\n\n",c,c); printf("\t\t\t\t%c 4.遍历 %c\n\n",c,c); printf("\t\t\t\t%c 5.保存为数据文件 %c\n\n",c,c); printf("\t\t\t\t%c 6.查找 %c\n\n",c,c); printf("\t\t\t\t%c 7.统计 %c\n\n",c,c); printf("\t\t\t\t%c 8.读取数据文件 %c\n\n",c,c); printf("\t\t\t\t%c 9.退出 %c\n\n",c,c); do { printf("\t\t\t\t 输入操作:"); scanf("%d",&d); if(d9) printf("\n\t\t\t\t无此操作\n\n"); } while(d9); return d; } main() { int quit=0,score; char name[10],num[15]; List L; L=Start(); printf("\t\t\t\t***** 欢迎使用 *****\n\n"); while(!quit) { switch(scan()) { case 1: Start(); printf("\n\n"); break; case 2: printf("\n\t\t\t\t学号:"); scanf("%s",num); printf("\n\t\t\t\t姓名:"); scanf("%s",name); printf("\n\t\t\t\t分数:"); scanf("%d",&score); Insert(L,num,name,score); printf("\n\n"); break; case 3: printf("\n\t\t\t\t输入学号:"); scanf("%s",num); Delete(L,num); printf("\n"); break; case 4: Traverse(L); printf("\n\n"); break; case 5: Save(L); printf("\n\n"); break; case 6: printf("\n\t\t\t\t输入学号:"); scanf("%s",num); Find(L,num); printf("\n\n"); break; case 7: Tegether(L); printf("\n\n"); break; case 8: Read(L); printf("\n\n"); break; case 9: quit=1; break; } } }。 网上一搜【c语言成绩管理】就有了。 http://wenku.baidu.com/link?url=0bMkZYU9Qtz9tl0zotmpsA31HnF9nzRzDy8rmbIjHFDNKT_ty0S4euGsnTqV2CXSMLrJsLqNaDQoCvIVJAodn2yyvoJVE-MRjmt-SLBQ5_mhttp://zhidao.baidu.com/question/57950212.html?qbl=relate_question_2&word=c%D3%EF%D1%D4%D1%A7%C9%FA%B3%C9%BC%A8%B9%DC%C0%ED%CF%B5%CD%B3&optimi=4。 转载请注明出处51数据库 » c语言学生成绩信息word C语言的问题学生成绩管理程序1添加:在文件末添加学生记录( 爱问
C语言程序设计 学生成绩管理信息系统
用C语言编的学生成绩的信息管理
C语言编程学生成绩管理系统