c语言版学生信息管理系统(文件处理)
学生信息管理系统系统功能0.系统帮助及说明1.刷新学生信息2.查询学生信息4.增加学生信息5.按学号删除信息6.显示当前信息7.保存当前学生信息8.退出系统源代码#include<stdio.h>#include<stdlib.h>/*其它说明*/#include<string.h>/...
·
学生信息管理系统
系统功能
0.系统帮助及说明
1.刷新学生信息
2.查询学生信息
4.增加学生信息
5.按学号删除信息
6.显示当前信息
7.保存当前学生信息
8.退出系统
源代码
#include<stdio.h>
#include<stdlib.h> /*其它说明*/
#include<string.h> /*字符串函数*/
#define max 100
#define LEN 15 /* 学号和姓名最大字符数,实际请更改*/
#define N 50 /* 最大学生人数,实际请更改*/
int k=1,n=0, m=0;/* n代表当前记录的学生人数*/
//学生信息结构体
typedef struct student {
char no[13];//学号
char name[10];//姓名
char sex[4];//性别
int age;//年龄
int scorec;//c成绩
int scoremath;//数学成绩
int scoreEnglish;//英语成绩
} student,stu[max];
void fileWrite(int n,stu s);
//帮助
void help()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存;\n");
printf("\n4.谢谢您的使用!\n");
}
//刷新学生信息
int update()
{
int j=0;
FILE * fp,*fp1;
if((fp=fopen("D:\\a.txt","r"))==NULL) return 0;
stu s;
//从文件读取信息
while(fscanf(fp,"%s %s %s %d %d %d %d ",&s[j].no,&s[j].name,&s[j].sex[j],&s[j].age,&s[j].scorec,&s[j].scoremath,&s[j].scoreEnglish)==7) {
j++;
}
n=j;
printf("刷新成功!!!");
return n;
}
//查询学生信息
void seek() {
int j=0;
FILE * fp;
if((fp=fopen("D:\\a.txt","r"))==NULL) return ;
stu s;
while(fscanf(fp,"%s %s %s %d %d %d %d ",&s[j].no,&s[j].name,&s[j].sex[j],&s[j].age,&s[j].scorec,&s[j].scoremath,&s[j].scoreEnglish)==7) {
j++;
}
n=j;
int i=0,item,flag;
char s1[13]; /* 以姓名和学号最长长度+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(s1,s[i].no)==0) { //比较输入的学号和文件中存放的学号是否一致
flag=1;
printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n");
printf("--------------------------------------------------------------------\n");
printf("%4s %8s %9s %6d %9d %9d %9d \n",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].scorec,s[i].scoremath,s[i].scoreEnglish);
}
if(0==flag)
printf("该学号不存在!\n");
break;
case 2:
printf("请输入要查询的学生的姓名:\n");
scanf("%s",&s1);
for(i=0; i<n; i++)
if(strcmp(s[i].name,s1)==0) { //比较输入的姓名和文件中存放的姓名是否一致
flag=1;
printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n");
printf("--------------------------------------------------------------------\n");
printf("%4s %8s %9s %6d %9d %9d %9d \n",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].scorec,s[i].scoremath,s[i].scoreEnglish);
}
if(0==flag)
printf("该姓名不存在!\n");
break;
case 3:
return;
default:
printf("请在1-3之间选择\n");
}
}
}
//修改学生信息
void modify() {
int j=0;
FILE * fp;
if((fp=fopen("D:\\a.txt","r"))==NULL) return ;
stu s;
while(fscanf(fp,"%s %s %s %d %d %d %d ",&s[j].no,&s[j].name,&s[j].sex[j],&s[j].age,&s[j].scorec,&s[j].scoremath,&s[j].scoreEnglish)==7) {
j++;
}
n=j;
int i,item,num;
int age;
char sex1[4],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/
float score1;
printf("请输入要修改的学生的学号:\n");
scanf("%s",s1);
for(i=0; i<n; i++) {
if(strcmp(s[i].no,s1)==0) { /*比较字符串是否相等*/
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改C语言成绩\n");
printf("5.修改高等数学成绩\n");
printf("6.修改大学英语成绩\n");
printf("7.退出本菜单\n");
printf("------------------\n");
while(1) {
printf("请选择子菜单编号:");
scanf("%d",&item);
switch(item) {
case 1:
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(s[num].name,s2);
fileWrite(n,s);
break;
case 2:
printf("请输入新的年龄:\n");
scanf("%d",&age);
s[num].age=age;
fileWrite(n,s);
break;
case 3:
printf("请输入新的性别:\n");
scanf("%s",&sex1);
strcpy(s[num].sex,sex1);
fileWrite(n,s);
break;
case 4:
printf("请输入新的C语言成绩:\n");
scanf("%d",&score1);
s[num].scorec=score1;
fileWrite(n,s);
break;
case 5:
printf("请输入新的高等数学成绩:\n");
scanf("%d",&score1);
s[num].scoremath=score1;
fileWrite(n,s);
break;
case 6:
printf("请输入新的大学英语成绩:\n");
scanf("%d",&score1);
s[num].scoreEnglish=score1;
fileWrite(n,s);
break;
case 7:
return;
default:
printf("请在1-7之间选择\n");
}
}
} else {
printf("没有该学生学号!!!");
}
}
}
//添加学生信息
void insert() {
int i,a,b;
printf("请输入待增加的学生数:\n");
scanf("%d",&n);
FILE * fp;
if((fp=fopen("D:\\a.txt","at"))==NULL) return ;
stu s;
for(i=0; i<n; i++) {
printf("\n请输入第%d个学生的学号:",i+1);
scanf("\n%s",&s[i].no);
printf("\n请输入第%d个学生的姓名:",i+1);
scanf("%s",&s[i].name);
printf("\n请输入第%d 个学生的性别:",i+1);
scanf("%s",&s[i].sex);
printf("\n请输入第%d 个学生的年龄:",i+1);
scanf("%d",&s[i].age);
printf("\n请输入第%d 个学生的C语言成绩:",i+1);
scanf("%d",&s[i].scorec);
printf("\n请输入第%d 个学生的高等数学成绩:",i+1);
scanf("%d",&s[i].scoremath);
printf("\n请输入第%d 个学生的大学英语成绩:",i+1);
scanf("%d",&s[i].scoreEnglish);
//写入文件
fprintf(fp,"%s %s %s %d %d %d %d \n",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].scorec,s[i].scoremath,s[i].scoreEnglish);
}
printf("添加成功!!!");
fclose(fp);
}
//按学号删除信息
void del() {
int j=0;
FILE * fp,*fp1;
if((fp=fopen("D:\\a.txt","r"))==NULL) return ;
stu s;
while(fscanf(fp,"%s %s %s %d %d %d %d ",&s[j].no,&s[j].name,&s[j].sex[j],&s[j].age,&s[j].scorec,&s[j].scoremath,&s[j].scoreEnglish)==7) {
j++;
}
n=j;
int i,flag=0;
char s1[LEN+1];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0; i<n; i++) {
if(strcmp(s[i].no,s1)==0) {
flag=1;
for(j=i; j<n-1; j++) {
strcpy(s[j].no,s[j+1].no);
strcpy(s[j].name,s[j+1].name);
s[j].age=s[j+1].age;
strcpy(s[j].sex,s[j+1].sex);
s[j].scorec=s[j+1].scorec;
s[j].scoremath=s[j+1].scoremath;
s[j].scoreEnglish=s[j+1].scoreEnglish;
}
}
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1) {
n--;
fileWrite(n,s);
fclose(fp);
printf("删除成功,显示结果请选择菜单\n");
}
}
//显示当前信息
void display() {
int i=0;
FILE * fp;
if((fp=fopen("D:\\a.txt","r"))==NULL) return ;
stu s;
while(fscanf(fp,"%s %s %s %d %d %d %d ",&s[i].no,&s[i].name,&s[i].sex[i],&s[i].age,&s[i].scorec,&s[i].scoremath,&s[i].scoreEnglish)==7) {
i++;
}
//记录文件中数据的行数
int n=i;
printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n");
printf("--------------------------------------------------------------------\n");
for(i=0; i<n; i++) {
printf("%4s %8s %9s %6d %9d %9d %9d \n",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].scorec,s[i].scoremath,s[i].scoreEnglish);
}
}
//保存当前学生信息(清除文件信息写入函数)
void fileWrite(int n,stu s){
FILE *fp1;
int i;
if((fp1=fopen("D:\\a.txt","w"))==NULL) return ;
for(i=0; i<n; i++) {
fprintf(fp1,"%s %s %s %d %d %d %d ",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].scorec,s[i].scoremath,s[i].scoreEnglish);
}
fclose(fp1);
printf("保存成功!!!");
}
/* 界面*/
void menu() {
int num;
printf(" \n\n \n\n");
printf(" ******************************************************\n\n");
printf(" * 学生信息管理系统 *\n \n");
printf(" ******************************************************\n\n");
printf("*********************系统功能菜单************************* \n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 0.系统帮助及说明 * * 1.刷新学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 2.查询学生信息 * * 3.修改学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 4.增加学生信息 * * 5.按学号删除信息 * \n");
printf(" ********************************************* \n");
printf(" * 6.显示当前信息 * * 7.保存当前学生信息* \n");
printf(" ********************** ********************** \n");
printf(" * 8.退出系统 * \n");
printf(" ********************** \n");
printf(" ---------------------- ---------------------- \n");
printf("请选择菜单编号:");
scanf("%d",&num);
switch(num) {
case 0:
help();
break;
case 1:
update();
break;
case 2:
seek();
break;
case 3:
modify();
break;
case 4:
insert();
break;
case 5:
del();
break;
case 6:
display();
break;
case 7:
n=update();
stu s;
fileWrite(n,s);
break;
case 8:
k=0;
break;
default:
printf("请在0-8之间选择\n");
}
}
//主函数
int main() {
while(k) {
menu();
}
system("pause");
return 0;
}
更多推荐
已为社区贡献1条内容
所有评论(0)