学生成绩管理系统
来源:互联网 发布:汇川plc编程软件下载 编辑:程序博客网 时间:2024/05/01 21:56
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define CLS system("cls")#define N 12#define MAX 100int flag=0;struct X{ int x;};struct student{ char name[N]; char num[N]; char major[N]; struct X A; struct X B; struct X C; struct X D;} stu[MAX];void face();void menue();void login();int load();void input();void save();void exit();void insert();void printf_back();void browse();void printf_n();void printf_one();void browse();void deleter();void search();void modify();int modify_data();int main(){ face(); menue();}void face(){ system("color 4e"); printf("\n\t ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n"); puts(" ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"); puts(" ※※ ※※"); puts(" ※※ ※※"); puts(" ※※ Welcome to visit the student management system! ※※"); puts(" ※※ ※※"); puts(" ※※ ※※"); puts(" ※※ ※※"); puts(" ※※ ※※"); puts(" ※※ Author:zhangpeng ※※"); puts(" ※※ Date:2014.06.19 ※※"); puts(" ※※ ※※"); puts(" ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"); printf("\n\tPress [ Enter ] key to continue……\n"); getchar(); CLS;}void menue() //主菜单{ int n,w1; system("color 2e"); printf("\n\t Welcome to use the student management system!!\n"); printf("\n"); do { puts("\t\t★★★★★★★★★ 菜单 ★★★★★★★★★"); puts("\t\t★ 1.登 录 ★"); puts("\t\t★ 2.插 入 ★"); puts("\t\t★ 3.删 除 ★"); puts("\t\t★ 4.查 找 ★"); puts("\t\t★ 5.修 改 ★"); puts("\t\t★ 6.浏 览 ★"); puts("\t\t★ 7.退 出 ★"); puts("\t\t★★★★★★★★★★★★★★★★★★★★★★"); printf("\n\n Please select the type of service (1-7) : [ ]\b\b"); scanf("%d",&n); if(n<1||n>7) { CLS; printf("\nSelect error! Please try again\n\n\n\n"); w1=1; } else w1=0; } while(w1); switch(n) { case 1: login(); break; //登录 case 2: CLS; insert(); break; //插入 case 3: CLS; deleter(); break; //删除 case 4: CLS; search(); break; //查找 case 5: CLS; modify(); break; //修改 case 6: CLS; browse(); break; //浏览 case 7: exit(); break; //退出 }}int load() //打开文件,读取里面的数据{ FILE *fp; int i; if((fp=fopen("D:\\file.txt","r"))==NULL) ///读入空文件,rb表示打开一个二进制文件,只允许读数据 { printf("\nThere is no such file!:\n"); return 0; } for(i=0; !feof(fp); i++) //处理到文件结尾 fread(&stu[i],sizeof(struct student),1,fp); //fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来 //buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件 fclose(fp); return(i-1);}void login(){ int n,i,m,w,d,q,w2,w3; char password[20]; struct student s; CLS; if(flag) { printf(" .--.\n"); printf("/.-. '----------.\n"); printf("\'-' .--\"--\"\"-\"-'\n"); printf(" '--'\n"); printf(" Logged successful!\n"); printf("Press any key to continue. . .\n"); getchar(); CLS; menue(); } FILE *fp; if((fp=fopen("D:\\file.txt","r"))!=NULL) ///不是空文件 n=load(); //打开文件 else n=0; do { printf("\n\t请选择登录身份:\n\n\t\t\t1.管理员 2.用户 [ ]\b\b"); scanf("%d",&d); if (d!=1&&d!=2) { CLS; printf("\nSelect error! Please try again\n\n\n\n"); w2=1; } else w2=0; } while(w2); if(d==1) { printf("\n\t\t\tPlease enter the password:"); getchar(); int j=0; while(1) { password[j]=getch(); if(password[j]=='\r') break; printf("*"); j++; } password[j]='\0'; if(!strcmp(password,"123")) /*判断密码是否正确*/ { flag=1; printf("\n"); printf(" .--.\n"); printf(" /.-. '----------.\n"); printf(" \\'-' .--\"--\"\"-\"-'\n"); printf(" '--'\n"); printf(" Logged successful!\n"); printf(" Press any key to continue. . .\n"); getchar(); CLS; menue(); } if(!flag) { CLS; printf("\t\nPassword is error!\n\n"); do { printf("\n\tWhat do you want to do next? 1.继续登录 2.返回菜单 [ ]\b\b"); scanf("%d",&q); if (q!=1&&q!=2) { CLS; printf("\nSelect error! Please try again\n\n\n"); w3=1; } else w3=0; } while (w3); if(q==1) /*继续登录*/ { CLS; login(); } else if(q==2) /*返回主菜单*/ { CLS; menue(); } } } else { printf("\n\t\t\t用户名:"); scanf("%s",s.name); printf("\t\t\t密 码:"); int j=0; while(1) { password[j]=getch(); if(password[j]=='\r') break; printf("*"); j++; } password[j]='\0'; flag=0; /*未登录时flag=0*/ for(i=0; i<n; i++) { if(strcmp(s.name,stu[i].name)==0&&strcmp(password,"321")==0) { flag=1; //登录成功flag=1 break; } } if(flag) { printf("\n"); printf(" .--.\n"); printf(" /.-. '----------.\n"); printf(" \\'-' .--\"--\"\"-\"-'\n"); printf(" '--'\n"); printf(" Logged successful!\n"); printf(" Press any key to continue. . .\n"); getchar(); CLS; menue(); /*登录成功后返回主菜单*/ } else { int m=0; //设置m是为了避免陷入 登录失败时 跳不出登录界面 int w=1; //设置w是为了避免输出多次 “用户不存在” int q; //q为选项 CLS; printf("\n\tThe user name does not exist or password is wrong!\n"); //第一次登录时输入不存在的用户时显示 do { printf("\n\t\tWhat do you want to do next?\n\n\t\t 1.继续登录 2.返回菜单 [ ]\b\b"); scanf("%d",&q); if (q!=1&&q!=2) { w=1; CLS; printf("\n\tSelect error! Please try again\n\n"); } else w=0; } while(w); if(q==1) //继续登录 { CLS; login(); } else if(q==2) //返回主菜单 { CLS; menue(); } } }}void input(int k) //输入学生信息{ getchar(); printf("学号:"); gets(stu[k].num); printf("姓名:"); gets(stu[k].name); printf("专业:"); gets(stu[k].major); printf("科目A:"); scanf("%d",&stu[k].A.x); printf("科目B:"); scanf("%d",&stu[k].B.x); printf("科目C:"); scanf("%d",&stu[k].C.x); printf("科目D:"); scanf("%d",&stu[k].D.x);}void save(int n) //保存学生信息{ FILE *fp; int i; if((fp=fopen("D:\\file.txt","w+"))==NULL) ///只打开或建立一个二进制文件,只允许写数据 { printf("\nCan not open file!\n"); exit(); } for(i=0; i<n; i++) if(stu[i].name[0]!='\0') if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) //将一批数据作为一个整体一次性写入磁盘文件 printf("文件写入错误!\n"); fclose(fp);}void exit() //退出{ exit(0);}void insert() //添加学生信息{ if(!flag) { printf("\n\n\tPlease login first!\n"); printf("\n\tPlease press Enter to login interface!"); getchar(); getchar(); login(); } else { int i,n,k,t; FILE *fp; if((fp=fopen("D:\\file.txt","r"))==NULL) ///读入空文件,rb表示打开一个二进制文件,只允许读数据 { printf("How many people do you want to add(1-%d)?:",N-1); n=0; } else { n=load(); printf("How many student do you want to insert (1-%d)?:",N-n-1); } scanf("%d",&t); k=n+t; for(i=n; i<k; i++) { printf("\n输入第 %d 个学生成绩信息.\n",i-n+1); input(i); } save(k); //保存所有学生的信息 printf_back();//添加学生信息后显示的“是浏览还是返回” }}void printf_back()//添加学生信息后显示的“是浏览还是返回”{ int w,k=0; printf("\n\n\t^_^.插入成功. ^_^\n\n"); do { printf("What do you want to do next?\n\n\t1).浏览所有\t2).返回: [ ]\b\b"); scanf("%d",&w); if(w==1) { CLS; browse(); } else if(w==2) { system("cls"); menue(); } else printf(" 选择错误!请重新选择!\n"); } while(k==0);}void printf_one(int k) //输出一个学生的信息{ system("color 4e"); printf("学号:%s\n",stu[k].num); printf("姓名:%s\n",stu[k].name); printf("专业:%s\n",stu[k].major); printf("科目A的成绩:%d\n",stu[k].A.x); printf("科目B的成绩:%d\n",stu[k].B.x); printf("科目C的成绩:%d\n",stu[k].C.x); printf("科目D的成绩:%d\n",stu[k].D.x);}void printf_n(int n) //浏览时输出所有学生的信息{ system("color 2e"); int j,i=1; for(j=0; j<n; j++) { printf("第%d个学生:\n",i++); printf_one(j); printf("\n"); } getchar();}void browse()//浏览{ if(!flag) { printf("\n\n\tPlease login first!\n"); printf("\n\tPlease press Enter to login interface!"); getchar(); getchar(); login(); } else { system("color 5f"); int n; n=load(); printf_n(n); printf(" 共有 %d 个学生的记录.\n",n); printf("\nPress [ ENTER ] key to back..."); getchar(); CLS; menue(); //返回主函数 }}void deleter() //删除{ if(!flag) { printf("\n\n\tPlease login first!\n"); printf("\n\tPlease press Enter to login interface!"); getchar(); getchar(); login(); } else { struct student s; int i,n,k,w0,w1; n=load(); do { k=-1; //printf_n(n); /*删除之前先显示所有学生的信息*/ do { printf("\n\n请输入您想要删除的学生的姓名!\nName:"); scanf("%s",s.name); for(i=0; i<n; i++) if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1) { int m; printf("\n\n没有这个学生的信息!\n"); printf("What do you want to do next? 1.继续输入 2.返回主菜单 [ ]\b\b"); scanf("%d",&m); if(m==1) deleter(); else { k=0; menue(); } } } while(k==-1); printf_one(k); printf("\n\t确定删除?\n\t1).是 2).返回 [ ]\b\b");/*再次询问是否删除*/ scanf("%d",&w0); if(w0==1) { stu[k].name[0]='\0'; save(n); } else break; printf("\n\t^_^.成功删除^_^.\n"); printf("What do you want to do?\n\t1).继续 2).返回 [ ]\b\b"); scanf("%d",&w1); } while(w1==1); CLS; menue(); //不再删除时返回主菜单,w1!=1 }}void search() /*查找*/{ void menu(); int w0,k,i,n,w1,w2; struct student s; FILE *fp; if((fp=fopen("D:\\file.txt","rb"))!=NULL) /*不是空文件*/ n=load(); do { printf("请选择查找类别: 1.姓名 2.学号 [ ]\b\b"); scanf("%d",&w1); if(w1<1||w1>2) { printf("输入错误!请重新输入!\n"); w2=1; } else w2=0; /*这里要注意:不加这句话会陷入死循环,跳不出来*/ } while(w2==1); if(w1==1) /*按姓名查找*/ { do { k=-1; do { printf("\n请输入您想要查找的学生的姓名!\nName:"); scanf("%s",s.name); for(i=0; i<n; i++) if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1) /*没有找到*/ { int o; printf("\n\n没有这个学生的信息!\n!"); printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b"); scanf("%d",&o); if(o==1) { system("cls"); search(); /*继续查找*/ } else { system("cls"); menue(); } } } while(k==-1); system("cls"); printf_one(k); /*找到以后输出这个学生的信息*/ printf("\nWhat do you want to do next?\n\t1).继续 2).返回菜单 [ ]\b\b"); scanf("%d",&w0); } while(w0==1); system("cls"); menue(); /*不再查找时返回主菜单*/ } else /*按学号查找*/ { do { k=-1; do { printf("\n请输入您想要查找的学生的学号!\nNum:"); scanf("%s",s.num); for(i=0; i<n; i++) if(strcmp(s.num,stu[i].num)==0) /*找到了*/ { k=i; s=stu[i]; } if(k==-1) /*没有找到*/ { int o; printf("\n\n没有这个学生的信息!\n!"); printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b"); scanf("%d",&o); if(o==1) { CLS; search(); /*继续查找*/ } else { CLS; menue(); } } } while(k==-1); CLS; printf_one(k); /*找到以后输出这个学生的学籍信息*/ printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b"); scanf("%d",&w0); } while(w0==1); CLS; menue();//不再查找时返回主菜单 }}int modify_data(int i) //修改信息函数{ int c,w1; do { puts("\n请选择要修改的选项:\n\n1.学号 2.姓名 3.专业 4.科目A 5.科目B 6.科目C 7.科目D 8.所有信息 9.取消并返回"); printf("请选择?: [ ]\b\b\b"); scanf("%d",&c); if(c>9||c<1) { puts("\n选择错误!请重新选择!"); getchar(); } } while(c>9||c<1); do { switch(c) { case 1: printf("学号:"); gets(stu[i].num); break; case 2: printf("姓名:"); gets(stu[i].name); break; case 3: printf("专业:"); gets(stu[i].major); break; case 4: printf("科目A:"); scanf("%d",&stu[i].A.x); break; case 5: printf("科目B:"); scanf("%d",&stu[i].B.x); break; case 6: printf("科目C:"); scanf("%d",&stu[i].C.x); break; case 7: printf("科目D:"); scanf("%d",&stu[i].D.x); break; case 8: input(i); break; /*修改这个学生的所有信息*/ case 9: menue(); /*返回主菜单*/ } puts("\nNow:\n"); printf_one(i); /*输出 修改后 的这个学生的信息*/ printf("\n确定?\n\n\t1).是 2).不,重新修改 3).返回不保存 [ ]\b\b"); scanf("%d",&w1); } while(w1==2); return(w1); /*修改成功并选择1后返回1*/}void modify() /*修改*/{ if(!flag) { printf("\n\n\t请先登录!\n"); printf("\n\t请按 Enter 键进入登录界面!"); getchar(); getchar(); login(); } else { struct student s; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; //printf_n(n); /*删除之前先显示所有学生的信息*/ do { printf("\n请输入您想要修改的学生的姓名!\nName:"); scanf("%s",s.name); for(i=0; i<n; i++) if(strcmp(s.name,stu[i].name)==0) /*与其中一个学生匹配*/ { k=i; s=stu[i]; } if(k==-1) /*没有找到输入的学生*/ { int o; printf("\n\n没有这个学生的信息!\n"); printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b"); scanf("%d",&o); if(o==1) { CLS; modify(); /*继续修改*/ } else { CLS; menue(); } } } while(k==-1); CLS; printf_one(k); /*输出这个学生的信息*/ w1=modify_data(k); if(w1==1) /*判断是否修改成功修改*/ { printf("\n\t^_^.修改成功 ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b"); scanf("%d",&w0); w2=1; } else { w0=0; if(w2==0) stu[k]=s; } if((w0!=1)&&(w2==1)) /*修改成功保存*/ save(n); } while(w0==1); system("cls"); menue();/*不再修改返回主菜单*/ }}
2 1
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- select语句执行顺序
- 拙勇姓频适再胖茁鬃短颖琅抖瘸悦
- Lua杂记
- Linux文件日志
- Android SharePreference学习
- 学生成绩管理系统
- 挚谘肚硕烦队空迂姓照谥挝偻怂姓
- 绦考缕匆剐壤圃逗睬滦巳有喜赏赏
- Python 实现摄像头功能
- 大话设计模式--4.开放-封闭原则
- setsockopt中参数之SO_REUSEADDR的意义
- Microsoft Expression Blend 4 激活码
- 国外常见16款著名的实时网站统计系统
- 纯CSS制作的二级导航菜单栏(通过变化菜单栏的样式实现)