#include

#include

#include

#include

#define N 100 /*存储100个学生的学籍信息*/

int flag; /*标记是否登录*/

struct date /*出生日期*/

{

int year;

int month;

int day;

};

struct student

{

char num[20];/*学号*/

char name[25];/*姓名*/

char sex[10];/*性别*/

struct date birthday;/*出生年月*/

int age;/*年龄*/

char addr[50];/*籍贯*/

char dept[50]; /*系别*/

char major[30]; /*专业*/

char classs[30]; /*班级*/

char phone[20];/*电话*/

}stu[N];

void login() /*登录*/

{

void menu();

system("cls");

if(flag)

{

printf(" 已经登录!\n");

printf("Press any key to continue…\n");

getchar();

getchar();

system("cls");

menu();

}

int load();

int n,i,m,w;

FILE *fp;

if((fp=fopen("D:\\file.txt","rb"))!=NULL) /*不是空文件*/

n=load(); /*打开文件*/

else

n=0;

struct student s;

char password[20];

int d,q;

printf("\n\t请选择登录身份:1.管理员 2.用户 [ ]\b\b");

scanf("%d",&d);

if(d==1)

{

printf("\n\t\t\t请输入密码:");

getchar();

int j=0;

while(1)

{

password[j]=getch();

if(password[j]=='\r')

break;

printf("*");

j++;

}

password[j]='\0';

if(!strcmp(password,"930322")) /*判断密码是否正确*/

{

flag=1;

printf("\n\t登录成功!\n");

printf("\tPress [ Enter ] key to continue…");

getchar();

system("cls");

menu();

}

if(!flag)

{

printf("\t\n密码错误!\n");

printf("What do you want to do next? 1.继续登录 2.返回菜单 [ ]\b\b");

scanf("%d",&q);

if(q==1) /*继续登录*/

{

system("cls");

login();

}

else if(q==2) /*返回主菜单*/

{

system("cls");

menu();

}

}

}

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

if(!strcmp(s.name,stu[i].name)&&!strcmp(s.name,password))

{

flag=1; /*登录成功flag=1*/

break;

}

if(flag)

{

printf("\n\t登录成功!\n");

printf("\tPress any key to continue…\n");

getchar(); getchar();

system("cls");

menu(); /*登录成功后返回主菜单*/

}

else

{

m=0; /*设置m是为了避免陷入 登录失败时 跳不出登录界面*/

w=1; /*设置w是为了避免输出多次 “用户不存在”*/

int q; /*q为选项*/

do

{

if(w>0)

printf("用户名不存在或密码错误!\n"); /*第一次登录时输入不存在的用户时显示*/

printf("What do you want to do next? 1.继续登录 2.返回菜单 [ ]\b\b");

scanf("%d",&q);

if(q==1) /*继续登录*/

{

login();

m=1;

}

else if(q==2) /*返回主菜单*/

{

system("cls");

menu();

m=1;

}

else

{

printf("选择错误!请重新选择:\n");

w=0;

}

}while(m==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].sex);

printf("出生年月:%d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day);

printf("年龄:%d\n",stu[k].age);

printf("籍贯:%s\n",stu[k].addr);

printf("系别:%s\n",stu[k].dept);

printf("专业:%s\n",stu[k].major);

printf("班级:%s\n",stu[k].classs);

printf("电话:%s\n",stu[k].phone);

}

void printf_n(int n) /*浏览时输出所有学生的信息*/

{

system("color 2e");

int j,i=1;

for(j=0;j

{

printf("第%d个学生:\n",i++);

printf_one(j);

printf("\n");

}

getchar();

}

int load() /*打开文件,读取里面的数据*/

{

FILE *fp;

int i;

if((fp=fopen("D:\\file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/

{

printf("\n文件不存在!请输入:\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 input(int k) /*输入学生信息*/

{

getchar();

printf("学号:"); gets(stu[k].num);

printf("姓名:"); gets(stu[k].name);

printf("性别:"); gets(stu[k].sex);

printf("出生年月:"); scanf("%d/%d/%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day);

printf("年龄:"); scanf("%d",&stu[k].age); getchar();

printf("籍贯:"); gets(stu[k].addr);

printf("系别:"); gets(stu[k].dept);

printf("专业:"); gets(stu[k].major);

printf("班级:"); gets(stu[k].classs);

printf("电话:"); gets(stu[k].phone);

}

void save(int n) /*保存学生信息*/

{

void exit();

FILE *fp;

int i;

if((fp=fopen("D:\\file.txt","wb"))==NULL) /*只打开或建立一个二进制文件,只允许写数据*/

{

printf("\nCan not open file!\n");

exit();

}

for(i=0;i

if(stu[i].name[0]!='\0')

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) /*将一批数据作为一个整体一次性写入磁盘文件*/

printf("文件写入错误!\n");

fclose(fp);

}

void printf_back()/*添加学生信息后显示的“是浏览还是返回”*/

{

int w,k=0;

void browse();

void menu();

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)

{

system("cls");

browse();

}

else if(w==2)

{

system("cls");

menu();

}

else

printf(" 选择错误!请重新选择!\n");

}while(k==0);

}

void insert() /*添加学生信息*/

{

int i,n,k,t;

FILE *fp;

if((fp=fopen("D:\\file.txt","rb"))==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

{

printf("\n输入第 %d 个学生学籍信息.\n",i-n+1);

input(i);

}

save(k); /*保存所有学生的信息*/

printf_back();

}

void deleter() /*删除*/

{

void menu();

if(!flag)

{

printf("\n\n\t请先登录!\n");

printf("\n\t请按 Enter 键进入登录界面!");

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

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;

menu();

}

}

}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);

system("cls");

menu(); /*不再删除时返回主菜单,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

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");

menu();

}

}

}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");

menu(); /*不再查找时返回主菜单*/

}

else /*按学号查找*/

{

do

{

k=-1;

do

{

printf("\n请输入您想要查找的学生的学号!\nNum:");

scanf("%s",s.num);

for(i=0;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)

{

system("cls");

search(); /*继续查找*/

}

else

{

system("cls");

menu();

}

}

}while(k==-1);

system("cls");

printf_one(k); /*找到以后输出这个学生的学籍信息*/

printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b");

scanf("%d",&w0);

}while(w0==1);

system("cls");

menu();/*不再查找时返回主菜单*/

}

}

int modify_data(int i) /*修改信息函数*/

{

int c,w1;

void menu();

do

{

puts("\n请选择要修改的选项:\n\n1.学号 2.姓名 3.性别 4.出生日期 5.年龄 6.籍贯 7.系别 8.专业 9.班级 10.电话 11.所有信息 12.取消并返回");

printf("请选择?: [ ]\b\b\b");

scanf("%d",&c);

if(c>12||c<1)

{

puts("\n选择错误!请重新选择!");

getchar();

}

}while(c>12||c<1);

do

{

switch(c)

{

case 1: printf("学号:"); scanf("%s",stu[i].num); break;

case 2: printf("姓名:"); scanf("%s",stu[i].name); break;

case 3: printf("性别:"); scanf("%s",stu[i].sex); break;

case 4: printf("出生年月:"); scanf("%d/%d/%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day); break;

case 5: printf("年龄:"); scanf("%d",&stu[i].age);break;

case 6: printf("籍贯:"); scanf("%s",stu[i].addr);break;

case 7: printf("系别:"); scanf("%s",stu[i].dept);break;

case 8: printf("专业:"); scanf("%s",stu[i].major);break;

case 9: printf("班级:"); scanf("%s",stu[i].classs);break;

case 10: printf("电话:"); scanf("%s",stu[i].phone);break;

case 11: input(i); break; /*修改这个学生的所有信息*/

case 12: menu(); /*返回主菜单*/

}

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() /*修改*/

{

void menu();

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

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");

modify(); /*继续修改*/

}

else

{

system("cls");

menu();

}

}

}while(k==-1);

system("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");

menu();/*不再修改返回主菜单*/

}

}

void browse()/*浏览*/

{

system("color 5f");

void menu();

int n;

n=load();

printf_n(n);

printf(" 共有 %d 个学生的记录.\n",n);

printf("\nPress [ ENTER ] key to back...");

getchar();

system("cls");

menu(); /*返回主函数*/

}

void exit() /*退出*/

{

exit(0);

}

void face() /*访问页面*/

{

system("color 4e");

printf("\n\t ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");

puts("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※");

puts("\t ※※ ※※");

puts("\t ※※ ※※");

puts("\t ※※ 欢迎访问学生学籍管理系统! ※※");

puts("\t ※※ ※※");

puts("\t ※※ ※※");

puts("\t ※※ ※※");

puts("\t ※※ ※※");

puts("\t ※※ 制作人:李远航 ※※");

puts("\t ※※ 2013.6.20 ※※");

puts("\t ※※ ※※");

puts("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※");

printf("\n\tPress [ Enter ] key to continue……\n");

getchar();

system("cls");

}

void menu() /*主菜单*/

{

system("color 2e");

printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");

printf("\n");

int n,w1;

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("请选择服务种类(1-7) : [ ]\b\b");

scanf("%d",&n);

if(n<1||n>7)

{

system("cls");

printf("选择错误! 请重新选择!\n");

w1=1;

}

else

w1=0;

}while(w1==1);

switch(n)

{

case 1: login(); break; /*登录*/

case 2: system("cls"); insert(); break; /*插入*/

case 3: system("cls"); deleter(); break; /*删除*/

case 4: system("cls"); search(); break; /*查找*/

case 5: system("cls"); modify(); break; /*修改*/

case 6: system("cls"); browse(); break; /*浏览*/

case 7: exit(); break; /*退出*/

}

}

int main()

{

face();

menu();

return 0;

}

学生签到系统c代码_C语言实现简单学生学籍管理系统相关推荐

  1. 学生签到系统c代码_C语言学生管理系统源码分享

    1 大家好2 我就是如假包换的...陈玲3 自从运营了C语言程序设计微信公众号4 很多粉丝都给我备注5 ...奇葩6 实在是不敢当7 也被人开始叫玲玲姐8 我知道9 很多人都想看我出境10 我本人也有 ...

  2. 学生签到系统c代码_C++实现学生考勤信息管理系统

    学生考勤信息管理系统记录了学生的缺课情况,它包括: 缺课日期.第几节课.课程名称.学生姓名.学生学号.缺课类型(迟到.请假及旷课).系统具有以下功能: 1).录入学生的缺课记录: 2).修改某个学生的 ...

  3. 学生签到系统c代码_学生考勤系统源代码

    - 1 - 学生考勤系统源代码 void lace(int n)  /* 花边函数 */ { int i; for(i=0;i { putchar('*');   /* 输出 n 个 **/ } } ...

  4. python计算长方体体积最简单代码_C语言编程简单的小程序,计算长方体体积!...

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  5. php与MYSQL制作学生成绩系统,基于PHP和mysql的简单学生成绩管理系统

    本系统主要架构图如上图所示.PS:register_check.php的自动注册代码写在check.php里了. 使用数据库的两张表,user_info用户信息表和stu_info学生成绩信息表. 提 ...

  6. 用HTML写一个学生签到系统

    好的. 这是一个简单的学生签到系统的 HTML 代码: <html><head><title>学生签到系统</title></head>&l ...

  7. C语言学生成绩简单,C语言实现简单学生成绩管理系统.pdf

    C语言实现简单学生成绩管理系统 这篇文章主要为大家详细介绍了C语言实现简单学生成绩管理系统,具有 定的参考价值,感兴趣的小伙伴们可以 参考 下 本文实例为大家分享了C语言实现学生成绩管理系统的具体代码 ...

  8. C语言实现简单的航班管理系统

    /*C语言实现简单的航班管理系统(单个文件)*/ #include <stdio.h> #include <string.h> #include<stdlib.h> ...

  9. java用链表做学生系统_C语言链表实现学生管理系统

    本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...

最新文章

  1. 【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统
  2. 《科学》封面特别报道:人类登月50年
  3. XILINX资源获取
  4. Windows上创建文件夹链接
  5. P1965 夜夜的数据加强 题解
  6. 分布式事务中的CAP理论
  7. abstract类中可以有private的成员_C++|static成员与单例模式
  8. 《分拣机械臂测试》- 端拾器最大吸力测试
  9. 【Zookeeper】源码分析之Watcher机制(一)
  10. matlab怎么进行积分,如何利用MATLAB求解积分与微分?
  11. 获取requests http报文
  12. 使用dos删除隐藏的.git文件
  13. ad网络标号设置经验_ad放置网络标号
  14. 如何在线免费将caj转换Word格式
  15. speedoffice表格中如何换行
  16. 拼多多618手机品牌官旗销量同比增长124%,4000+高价位手机同比增长156%
  17. IT讲师韩顺平:创业不易,尚硅谷延续教育初心
  18. 自动化测试之:python+unittest+selenium
  19. 16进制、Cstring、char*类型转换
  20. 关于机器人操作系统(ROS)学习前须知二三

热门文章

  1. 用 Gearman 分发 PHP 应用程序的工作负载
  2. C++封装、继承、多态
  3. 用idea编写代码作为生产者,Kafka接收其【持续】发来的广告日志信息【小案例】(二)
  4. 大剑无锋之你了解HTTPS吗?那么它为什么安全?【面试推荐】
  5. 【CSS实现Loading遮罩】点击按钮,弹出一个DIV层窗口
  6. 【Java】不需要正则表达式,提取字符串中的所有汉字、数字、字母
  7. 密码学系列之:碰撞抵御和碰撞攻击collision attack
  8. Spring Cloud OpenFeign使用教程
  9. 疯狂的机器学习实战-银行营销预测
  10. webservice和socket服务的区别