文章目录
-
- 主界面
- 1.添加学生信息
- 2.修改学生信息
- 3.删除学生信息
- 4.查看学生信息
- 5.搜索学生信息
- 6.查看系统学生总人数
- 7.学生信息排序
- 8.保存学生信息(保存在D:/students.txt)
- 9.导入学生信息(导入D:/students.txt文件中的信息)
- 学生信息管理系统代码
拥有基本的学生信息系统的功能, 功能点如下所示:
1.添加学生信息
2.修改学生信息
3.删除学生信息
4.查看学生信息
5.搜索学生信息
6.查看系统学生总人数
7.学生信息排序
8.保存学生信息(保存在D:/students.txt)
9.导入学生信息(导入D:/students.txt文件中的信息)
主界面
1.添加学生信息
2.修改学生信息
3.删除学生信息
4.查看学生信息
5.搜索学生信息
6.查看系统学生总人数
7.学生信息排序
8.保存学生信息(保存在D:/students.txt)
9.导入学生信息(导入D:/students.txt文件中的信息)
学生信息管理系统代码
#include
#include
#include
#include
#include
struct Student {
int id;
char name[20];
int sex;
char specialized[25];
char date[25];
char address[255];
float score;
struct Student *next;
};
int total_count = 0;
typedef struct Student Stu;
void mainMenu()
{
printf(" 0.退出\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(" ******请选择:");
}
void exitProgram()
{
system("cls");
system ("color 04");
int i, j, k, l, m;
char c=3;
for (i=1; i<=5; i++) printf("\n");
for (i=1; i<=3; i++)
{
for (j=1; j<=32-2*i; j++) printf(" ");
for (k=1; k<=4*i+1; k++) printf("%c", c);
for (l=1; l<=13-4*i; l++) printf(" ");
for (m=1; m<=4*i+1; m++) printf("%c", c);
printf("\n");
}
for (i=1; i<=3; i++)
{
for (j=1; j<=24+1; j++) printf(" ");
for (k=1; k<=27; k++)
if (k==8)
printf("谢");
else if (k==10)
printf("谢");
else if (k==12)
printf("使");
else if (k==14)
printf("用");
else
printf("%c", c);
printf("\n");
}
for (i=7; i>=1; i--)
{
for (j=1; j<=40-2*i; j++) printf(" ");
for (k=1; k<=4*i-1; k++) printf("%c", c);
printf("\n");
}
for (i=1; i<=39; i++)printf(" ");
printf("%c\n", c);
for (i=1; i<=5; i++)printf("\n");
}
void addStudent(Stu *head)
{
system("cls");
while(head != NULL && head->next!=NULL)
{
head = head->next;
}
printf("请输入学生个数: ");
int num;
scanf("%d",&num);
int i=1;
for(; i<= num; i++){
printf("请输入第%d个学生信息\n",i);
Stu *stu;
stu=(Stu *)malloc(sizeof(Stu));
printf("学号:");
scanf("%d",&stu->id);
printf("学生姓名: ");
scanf("%s",stu->name);
printf("性别:");
scanf("%d",&stu->sex);
printf("专业:");
scanf("%s",stu->specialized);
printf("出生日期:");
scanf("%s",stu->date);
printf("家庭住址:");
scanf("%s",stu->address);
printf("总成绩:");
scanf("%f",&stu->score);
stu->next=NULL;
head->next=stu;
head=stu;
system("cls");
}
total_count += num;
printf("信息录入成功!!!\n");
system("pause");
system("cls");
}
void printAllStudents(Stu *q)
{
system("cls");
while(q->next!=NULL)
{
q=q->next;
printf("学号:%d\n",q->id);
printf("姓名:%s\n",q->name);
printf("性别:%s\n",q->sex == 0 ? "女" : "男");
printf("专业:%s\n",q->specialized);
printf("出生日期:%s\n",q->date);
printf("家庭地址:%s\n",q->address);
printf("总成绩:%.2f\n",q->score);
printf("\n");
}
system("pause");
system("cls");
return;
}
void deleteStudent(Stu *head)
{
system("cls");
Stu *prev = head;
head = head->next;
printf("请输入删除的人的姓名:");
char name[20];
scanf("%s",name);
int num = 0;
while(head != NULL)
{
if(strcmp(head->name,name)==0){
num = 1;
prev->next=head->next;
free(head);
head = NULL;
break;
}
prev = prev->next;
head = head->next;
}
if(num != 1)
{
printf("删除失败\n");
}
else
{
printf("删除成功\n");
total_count -= 1;
}
}
void searchStudent(Stu *q)
{
system("cls");
printf("请输入查找人姓名:");
char name[20];
scanf("%s",name);
int num = 0;
q=q->next;
while(q!=NULL){
if(strcmp(q->name,name)==0){
num = 1;
system("cls");
printf("\n\n查找完成\n\n");
printf("学号:%d\n",q->id);
printf("姓名:%s\n",q->name);
printf("性别:%s\n",q->sex == 0 ? "女" : "男");
printf("专业:%s\n",q->specialized);
printf("出生日期:%s\n",q->date);
printf("家庭地址:%s\n",q->address);
printf("总成绩:%.2f\n",q->score);
}
q=q->next;
}
if(num == 0)
{
printf("\n\n查无此人\n\n");
}
system("pause");
system("cls");
}
void swapStudent(Stu *prev,Stu *head)
{
int t1;
t1=prev->id;
prev->id=head->id;
head->id=t1;
char t2[20];
strcpy(t2,prev->name);
strcpy(prev->name,head->name);
strcpy(head->name,t2);
int t3;
t3 = prev->sex;
prev->sex = head->sex;
head->sex = t3;
char t4[20];
strcpy(t4,prev->specialized);
strcpy(prev->specialized,head->specialized);
strcpy(head->specialized,t4);
char t5[20];
strcpy(t5,prev->date);
strcpy(prev->date,head->date);
strcpy(head->date,t5);
char t6[20];
strcpy(t6,prev->address);
strcpy(prev->address,head->address);
strcpy(head->address,t6);
float t7;
t7=prev->score;
prev->score = head->score;
head->score=t7;
}
void sortStudents(Stu *head)
{
if(total_count<2)
{
printf("\n\n数据过少,不进行排序!\n\n");
system("pause");
system("cls");
return;
}
system("cls");
printf("请输入成绩排序规则:\n");
printf("输入0按照成绩从小到大排序\n");
printf("输入1按照成绩从大到小排序\n");
int op;
scanf("%d",&op);
head = head->next;
Stu *pFirst = NULL, *pSecond = NULL, *pEnd = NULL;
pFirst = head;
pSecond = head;
while(pFirst != pEnd)
{
while(pFirst->next != pEnd)
{
if(op == 0)
{
if(pFirst->score > pFirst->next->score)
{
swapStudent(pFirst,pFirst->next);
}
}
else
{
if(pFirst->score < pFirst->next->score)
{
swapStudent(pFirst,pFirst->next);
}
}
pFirst = pFirst->next;
}
pEnd = pFirst;
pFirst = head;
}
printf("\n\n排序成功!!!\n\n");
system("pause");
system("cls");
}
void updateStudent(Stu *head)
{
system("cls");
Stu *q=head->next;
printf("请输入修改人姓名:");
char name[20];
scanf("%s",name);
while(q != NULL){
if(strcmp(q->name,name)==0)
{
printf("\n\n存在该学生信息!\n\n");
printf("请输入要修改的学生学号:");
scanf("%d",&q->id);
printf("请输入要修改的学生姓名:");
scanf("%s",q->name);
printf("请输入要修改的学生性别:");
scanf("%d",&q->sex);
printf("请输入要修改的学生专业:");
scanf("%s",q->specialized);
printf("请输入要修改的学生出生日期:");
scanf("%s",q->date);
printf("请输入要修改的学生家庭地址:");
scanf("%s",q->address);
printf("请输入要修改的学生的总成绩:");
scanf("%f",&q->score);
printf("\n\n修改成功!!!\n\n");
break;
}
q=q->next;
}
if(q==NULL)
{
printf("\n\n不存在该学生信息\n\n\n");
}
}
void saveStudents(Stu *q)
{
system("cls");
FILE * fp = fopen("D:\\students.txt", "a");
if(fp == NULL)
{
printf("打开文件失败!!!\n\n");
return;
}
while(q->next!=NULL)
{
q=q->next;
fprintf(fp, "%d %s %d %s %s %s %f\n",q->id,q->name,q->sex,q->specialized,q->date,q->address,q->score);
}
fclose(fp);
printf("\n\n文件保存成功!!!\n\n\n");
}
void importStudents(Stu *head)
{
system("cls");
FILE *fp=fopen("D:\\students.txt","r");
if(fp==NULL)
{
printf("打开文件失败\n");
return;
}
while(head->next!=NULL)
{
head = head->next;
}
int num = 0;
char buf[1024];
while (fgets(buf, sizeof(buf), fp) != NULL)
{
Stu *q=(Stu*)malloc(sizeof(Stu));
q->next=NULL;
printf("%s", buf);
sscanf(buf, "%d %s %d %s %s %s %f\n",&q->id,q->name,&q->sex,q->specialized,q->date,q->address,&q->score);
head->next=q;
head = q;
num++;
}
fclose(fp);
if(num != 1)
{
total_count += num;
printf("导入成功\n");
}
else
{
printf("无数据");
}
}
int main()
{
Stu *head;
head=(Stu *)malloc(sizeof(Stu));
head->next=NULL;
system("cls");
system("color 06");
while(1)
{
mainMenu();
int op;
scanf("%d",&op);
switch(op)
{
case 0:
{
exitProgram();
printf("\n\n\n 谢谢使用【手动微笑】\n\n");
return 0;
}
case 1:
{
addStudent(head);
break;
}
case 2:
{
updateStudent(head);
system("pause");
system("cls");
break;
}
case 3:
{
deleteStudent(head);
system("pause");
system("cls");
break;
}
case 4:
{
printAllStudents(head);
break;
}
case 5:
{
searchStudent(head);
break;
}
case 6:
{
printf("\n\n总人数为:%d\n\n\n",total_count);
system("pause");
system("cls");
break;
}
case 7:
{
sortStudents(head);
break;
}
case 8:
{
saveStudents(head);
system("pause");
system("cls");
break;
}
case 9:
{
importStudents(head);
system("pause");
system("cls");
break;
}
default:
{
printf("\n\n您的输入有误!!!请重新输入\n");
system("pause");
system("cls");
break;
}
}
}
}