您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页课程设计:学生学籍管理系统源代码

课程设计:学生学籍管理系统源代码

来源:步遥情感网
#include\"stdio.h\" #include\"conio.h\" #include\"stdlib.h\" #include\"string.h\" #define N 1000 //N为可输入的学生总人数,可根据需要更改

#define M 2 //M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改 struct student //定义学生信息结构体数组 { char num[9]; //学号 char name[20]; //姓名 char depar[15]; //院系 char zhuanye[15]; //专业 char classes[5]; //班级 char age[3]; //年龄 char sex[4]; //性别 char nation[5]; //民族 char birth[9]; //出生日期 char add[10]; //籍贯 };

struct code //定义密码结构体数组 { char name[20]; char code[7]; }co[M],s0;

//确认是否新创建密码文件模块 int code() { FILE *fp; if((fp=fopen(\"学生学籍管理系统__code.txt\ { printf(\"密码文件不存在,请输入新的用户名及密码:\\n\"); //若不存在此密码文件,则提示用户创建密码 printf(\"请输入任意键继续!\"); getch(); system(\"cls\"); return 1; } else return 0; }

//新创建初始密码 void code_input()

//无密码文件返回1 //已有密码文件返回0 { FILE *fp; int i; if((fp=fopen(\"学生学籍管理系统__code.txt\//当建立密码文件成功时,进入for循环 for(i=0;iint enter(char name1[20],char code1[6]) { FILE *fp; int flog=0; int i; fp=fopen(\"学生学籍管理系统__code.txt\打开存放密码的文件 for(i=0;i=M) //当比较完成后,都没有符合条件的用户名与密码,则直接跳出程序 printf(\"******您无权进入此管理系统*****\"); fclose(fp); getch(); exit(1);

}

//从文件读入数据

int read_file(struct student stu[]) { FILE *sp; int i=0; system(\"cls\"); if((sp=fopen(\"学生学籍管理系统__学生信息.txt\读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成) { printf(\"\\n学生学籍管理系统__学生信息文件不存在,请创建!\\n\"); getch(); system(\"cls\"); return 0; } while((fread(&stu[i],sizeof(struct student),1,sp))==1)//判断文件是否处在结束位置 { if(stu[i].num==0) //若文件内容为空,则跳出循环 break; else //若文件内容不为空,i自加1。 i++; //i为文件内结构体数组的数量 } fclose(sp); return i; //返回i值,代表文件中学生的人数 }

//保存学生信息(保存在文件中)

void save_file(struct student stu[],int sum) { FILE *sp; int i; if((sp=fopen(\"学生学籍管理系统__学生信息.txt\若不存在此TXT文档,则创建; { printf(\"读文件错误!\\n\"); //创建不成功,返回menu函数; return; } for(i=0;ifclose(sp); return; }

//创建并录入信息

int found(struct student stu[]) { int i=0,x; system(\"cls\"); printf(\"请输入要录入的学生的个数:\\n\"); scanf(\"%d\ if(x==0) return 0; do //输入信息 { printf(\"\\n请录入第%d个学生的信息:\\n\ printf(\"请录入学号:\"); scanf(\"%s\ printf(\"\\n请录入姓名:\"); scanf(\"%s\ printf(\"\\n请录入院系:\"); scanf(\"%s\ printf(\"\\n请录入专业:\"); scanf(\"%s\ printf(\"\\n请录入班级:\"); scanf(\"%s\ printf(\"\\n请录入性别:\"); scanf(\"%s\ printf(\"\\n请录入年龄:\"); scanf(\"%s\ printf(\"\\n请录入出生日期(yyyymmdd):\"); scanf(\"%s\ printf(\"\\n请录入民族:\"); scanf(\"%s\ printf(\"\\n请录入籍贯:\"); scanf(\"%s\ i++; system(\"cls\"); }while(i=x(用户要求创建学生的人数)时,跳出输入信息的for循环; save_file(stu,x); //保存学生信息致文件 printf(\"录入完毕,请按任意键返回\"); getch(); return i; //返回创建学生的人数

}

//修改学生信息

void modify(struct student stu[],int sum) { int i,item,a=1; //i控制数组下标,item控制子菜单的选择 char s1[8]; FILE *sp; system(\"cls\"); read_file(stu,sum); //读函数 do { printf(\"\\n\\n\\n请输入你要修改的学号:\\n\"); scanf(\"%s\ //要修改的学生学号 for(i=0;iprintf(\"\5.*修改籍贯\\n\"); printf(\"\6.*修改院系名称\\n\"); printf(\"\7.*修改专业名称\\n\"); printf(\"\8.*修改班级\\n\"); printf(\"\9.*修改民族\\n\"); printf(\"\0.*退出菜单\\n\"); printf(\"\****************\\n\"); while(1) { printf(\"\\n\请选择你要进行的操作:\"); scanf(\"%d\ ///item控制子菜单的选择 switch(item) {

case 1: //修改姓名 printf(\"\请输入新的姓名:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 2: //修改年龄 printf(\"\请输入新的年龄:\"); scanf(\"%s\

printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 3: //修改性别 printf(\"\请输入新的性别:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 4: //修改出生日期 printf(\"\请输入新的出生年月(yyyy.mm):\"); scanf(\"%s\

printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 5: //修改籍贯 printf(\"\请输入新的籍贯:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 6: //修改院系

printf(\"\请输入新的院系:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 7: //修改专业 printf(\"\请输入新的专业名称:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 8: //修改班级 printf(\"\请输入新的班级:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 9: //修改民族 printf(\"\请输入新的民族名称:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 0: return; //不修改,退出 default:printf(\"\请在0到9之间选择:\"); //若输入的值不在0~9,则提示 } } }

//查询学生信息

void seek(struct student stu[],int sum) {

int i,item,flag; //i控制数组下标,item控制子菜单的选择,flag为判断条件

char s1[11]; system(\"cls\"); while(1) { system(\"cls\");

printf(\"\\n\\n\\------------------\\n\"); printf(\"\\ 1.按学号查询\\n\"); printf(\"\\ 2.按姓名查询\\n\"); printf(\"\\ 3.退出本菜单\\n\");

printf(\"\\------------------\\n\");

printf(\"\\ 请选择子菜单编号:\"); scanf(\"%d\ //选择子菜单 flag=0;

switch(item) {

case 1: //按学号进行查找 printf(\"\\请输入要查询的学生的学号:\"); scanf(\"%s\ for(i=0;iif(strcmp(stu[i].num,s1)==0) //判断学号是否存在 { //输出 flag=1; printf(\"该学生学号:%s\\n\ printf(\"该学生姓名:%s\\n\ printf(\"该学生院系:%s\\n\ printf(\"该学生专业:%s\\n\ printf(\"该学生班级:%s\\n\ printf(\"该学生性别:%s\\n\ printf(\"该学生年龄:%s\\n\ printf(\"该学生出生日期:%s\\n\ printf(\"该学生民族:%s\\n\ printf(\"该学生籍贯:%s\\n\ getch(); }

if(flag==0) //当上一个if条件不成立,flag=0,学生学号不存在,输出提示;

printf(\"\\n\\n\\n\\该学号不存在!\\n\"); getch(); break; case 2: //按姓名进行查找

printf(\"\\n\\n\\请输入要查询的学生的姓名:\"); scanf(\"%s\ for(i=0;iif(strcmp(stu[i].name,s1)==0) //判断姓名是否存在 { //输出 flag=1; printf(\"该学生学号:%s\\n\ printf(\"该学生姓名:%s\\n\ printf(\"该学生院系:%s\\n\ printf(\"该学生专业:%s\\n\ printf(\"该学生班级:%s\\n\ printf(\"该学生性别:%s\\n\ printf(\"该学生年龄:%s\\n\ printf(\"该学生出生日期:%s\\n\

printf(\"该学生民族:%s\\n\ printf(\"该学生籍贯:%s\\n\ getch(); }

if(flag==0) //当上一个if条件不成立,flag=0,学生姓名不存在,输出提示;

printf(\"\\n\\n\\n\\该姓名不存在!\\n\"); getch(); break;

case 3: system(\"cls\"); return;

default:printf(\"\\n\\n\\n\\请在1-3之间选择\\n\"); //若输入的值不在1~3,则提示 getch(); } } }

//删除某学生信息

int del(struct student stu[],int sum) {

int i,j,flag=0; char s1[9]; system(\"cls\");

printf(\"\\n\\n\\请输入要删除学生的学号:\"); scanf(\"%s\

for(i=0;iif(strcmp(stu[i].num,s1)==0) //判断学号是否存在 {

flag=1; //该学号存在,用后一个数组覆盖此数组,循环,即可删除

for(j=i;jif(flag==0) //该学号不存在 printf(\"\\n\\n\\该学号不存在!\\n\"); getch(); if(flag==1) //删除成功,输出提示 {

printf(\"\\n\\n\\n\\删除成功\\n\"); getch(); sum--; //删除成功,sum自-1; } save_file(stu,sum); //保存 return sum; //返回删除后存在的学生人数 }

//显示打印已有学生信息

void show(struct student stu[],int sum) { int i;

system(\"cls\");

printf(\"\\n\\n\\ 所有学生的信息为:\\n\"); for(i=0;i//添加学生信息

int insert(struct student stu[],int sum) { int i,j,flag,m; FILE *sp; system(\"cls\"); printf(\"\请输入要添加的学生的个数:\"); scanf(\"%d\ read_file(stu); //在添加前读文件 do { flag=1; i=sum; //此时i表示数组下标,添加学生,保存到当前已有数组的下一个,sum为总数,stu[i]表示第sum+1个人

while(flag) { flag=0; printf(\"\\n\\n 请输入第 %d 个学生的学号:\ scanf(\"%s\ for(j=0;jif(strcmp(stu[i].num,stu[j].num)==0) { printf(\"\\n\\n\\n该学号已有,请重新输入!\\n\"); flag=1; break; /*如果该学号已有则立刻对出该层for循环*/ } } printf(\"\\n 请输入第 %d 个学生的姓名:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的院系:\ scanf(\"%s\

printf(\"\\n 请输入第 %d 个学生的专业:\ scanf(\"%s\

printf(\"\\n 请输入第 %d 个学生的班级:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的性别:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的年龄:\ scanf(\"%s\

printf(\"\\n 请输入第 %d 个学生的出生日期:\ scanf(\"%s\

printf(\"\\n 请输入第 %d 个学生的民族:\ scanf(\"%s\

printf(\"\\n 请输入第 %d 个学生的籍贯:\ scanf(\"%s\

if(flag==0) {

i=i; i++; }

}while(isum+=m; //添加完毕后,学生总人数变为sum+m; printf(\"\\n\\n\\n\\n\\n\\n\\n\\n\\\\ 录入完毕!\"); save_file(stu,sum); //保存 getch(); system(\"cls\"); return sum; //返回添加完成后现有的学生人数 }

//对学生信息排序

void rank(struct student stu[],int sum)

{

int i,j; FILE *sp; struct student s1; system(\"cls\");

for(i=0;ifor(j=i+1;jif(strcmp(stu[i].num,stu[j].num)>0) //小者换到stu[i] { s1=stu[i]; stu[i]=stu[j]; stu[j]=s1; } printf(\"\\n\\n\\ 所有学生的信息为:\\n\"); for(i=0;i//对班级的学生人数进行统计

void count(struct student stu[],int sum) { int i,count=0; char s1[5],s2[5],s3[5]; system(\"cls\");

printf(\"\\请输入你要统计学生人数的学院:\"); scanf(\"%s\ printf(\"\\请输入你要统计学生人数的专业:\"); scanf(\"%s\ printf(\"\\请输入你要统计学生人数的班级:\");

scanf(\"%s\ for(i=0;icount++; //count为符合条件的学生人数 printf(\"%s学院%s专业%s班级的学生人数为:%d人\ getch(); }

//菜单函数

void menu() { int choice,sum; struct student stu[N]; sum=read_file(stu); //sum为现已存入文件中学生的人数 do { system(\"cls\"); printf(\"\\n\\n\\n\"); printf(\"\\ **********欢迎进入**********\\n\"); printf(\"\\********学生学籍管理系统********\\n\\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(\"\\\ 0.退出程序\\n\"); printf(\"\\\ 请选择您要执行的操作(0~9):\"); scanf(\"%d\ switch(choice) { case 1:sum=found(stu); break; //sum=创建后所存储的学生人数

case 2:modify(stu,sum); break; //修改 case 3:seek(stu,sum); break; //查询 case 4:sum=del(stu,sum); break; //sum=删除学生后所存储的学生人数

case 5:sum=insert(stu,sum); break; //sum=添加学生后所存储的学生人数

case 6:save_file(stu,sum); break; //保存文件 case 7:show(stu,sum); break; //显示 case 8:rank(stu,sum); break; //排序 case 9:count(stu,sum); break; //统计某班级学生人数 case 0: break; } }while(choice!=0); }

void main() { int flag=0; flag=code(); //确认是否新创建密码文件。若没有存放密码的文件,则flag=1,若有,flag=0;

if(flag) //判断if条件是否成立 code_input(); //当flag=1,即没有存放密码的文件时,进入code_input()函数,创建用户名及密码;当flag=0,则不用新建密码;

printf(\"*******请输入你的用户名及密码*******:\\n\"); //登陆该管理系统前需身份验证

scanf(\"%s %s\ //输入用户的用户名及密码 enter(s0.name,s0.code); //登陆管理系统前,进入enter()函数验证模块

system(\"cls\"); menu(); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务