#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {/*定义学生结构体*/
int no; /*学号*/
char name[20];/*姓名*/
float score; /*成绩*/
};
void inputinformation ( struct student stu[],int n){/*1输入学生信息*/
int m;
for (int i=1;i<=n;i++)
{
stu[i].no=0;
stu[i].score=0;
printf ("请输入第%d名学生信息\n",i);
printf ("学号\n");
scanf ("%d",&stu[i].no);
printf ("姓名\n");
scanf ("%s",&stu[i].name);
printf ("成绩\n");
scanf ("%f",&stu[i].score);
printf ("\n");
if (stu[i].no==0||stu[i].score==0)
{
printf ("输入错误,请重新输入\n");
i-=1;
}
}
}
void addstu ( struct student stu[],int *num){/*2增加学生信息*/
int n;
printf ("需要增加多少名学生信息:");
scanf ("%d",&n);
putchar ('\n');
for(int i=*num+1;i<=*num+n;i++){
stu[i].no=0;
stu[i].score=0;
printf ("请输入第%d名学生信息\n",i);
printf ("学号\n");
scanf ("%d",&stu[i].no);
printf ("姓名\n");
scanf ("%s",&stu[i].name);
printf ("成绩\n");
scanf ("%f",&stu[i].score);
printf ("\n");
if (stu[i].no==0||stu[i].score==0)
{
printf ("输入错误,请重新输入\n");
i-=1;
}
}
*num+=n;
}
void delstu ( struct student stu[],int *num){/*3删除学生信息*/
int m;
do {
int n;
printf ("请输入想要删除的学生学号\n");
scanf ("%d",&n);
for (int i=1;i<=*num;i++){
if (n==stu[i].no){
for(int j=i;j<*num;j++){
stu[j].no=stu[j+1].no;
strcpy (stu[j].name,stu[j+1].name);
stu[j].score=stu[j+1].score;
}
printf ("已删除该学生信息\n");
}
break;
}
*num-=1;
printf ("是否继续删除学生信息,是请输入1,否请输入2\n");
scanf ("%d",&m);
printf ("\n");
}while (m==1);
}
void lookup (struct student stu[],int *num){/*4查询学生信息*/
int m;
do {
int n;
printf ("请输入学生的学号:");
scanf ("%d",&n);
for (int i=1;i<=*num;i++){
if (i<*num){
if (n==stu[i].no){
printf ("学号%d\n",stu[i].no);
printf ("姓名%s\n",stu[i].name);
printf ("成绩%f\n",stu[i].score);
break;
}
else;
}
else if (n==stu[i].no){
printf ("学号%d\n",stu[i].no);
printf ("姓名%s\n",stu[i].name);
printf ("成绩%f\n",stu[i].score);
break;
}
else {
printf ("查询不到该同学\n");
}
}
printf ("是否继续查询学生信息,是请输入1,否请输入2\n");
scanf ("%d",&m);
}while (m==1);
}
void modify (struct student stu[],int *num){/*5修改学生信息*/
int m;
do {
int n,k;
printf ("请输入想要修改的学生学号\n");
scanf ("%d",&n);
for (int i=1;i<=*num;i++){
if (n==stu[i].no){
printf ("你想要修改的学生信息为:1姓名,2成绩,3成绩和姓名(请输入数字)\n");
scanf ("%d",&k);
switch (k){
case 1 :printf ("请输入新的名字:");scanf ("%s",&stu[i].name);break;
case 2 :printf ("请输入新的成绩:");scanf ("%f",&stu[i].score);break;
case 3 :printf ("请输入新的成绩,新的名字:");scanf ("%f,%s",&stu[i].score,&stu[i].name);break;
}
printf ("\n");
printf ("修改成功\n") ;
}
break;
}
printf ("是否继续修改学生信息,是请输入1,否请输入2\n");
scanf ("%d",&m);
printf ("\n");
}while (m==1);
}
void save (struct student stu[],int *num){/*保存学生信息*/
int i = 1;
FILE *file;
file = fopen("student.txt","ab");
fprintf (file,"学号\t姓名\t成绩\t");
fprintf (file,"\n");
while (i<=*num) {
fprintf (file,"%d\t", stu[i].no);
fprintf (file,"%s\t", stu[i].name);
fprintf (file,"%f\t", stu[i].score);
i++;
fprintf (file,"\n");
}
fclose (file);
}
void concludingremarks (int n,int k){/*操作结束语*/
switch (n){
case 1: printf ("%d名学生信息录入结束。\n\n",k);break;
case 2: printf ("学生信息录入结束。\n\n");break;
case 3: printf ("删除学生信息已结束。\n\n");break;
case 4: printf ("查询学生信息已结束。\n\n");break;
case 5: printf ("修改学生信息已结束。\n\n");break;
case 6: printf ("保存学生信息已完成。\n\n");break;
}
}
int main (void) {
int num,key=0;
int *p=#
struct student stu[100]; /*学生结构体数组,至多100人*/
printf ("请输入学生人数:");
scanf ("%d",&num);
putchar ('\n');
while (key!=7) {
concludingremarks (key,num);
puts ("=====================================================================");
printf ("序号\t功能详情\n");
puts ("---------------------------------------------------------------------");
printf ("1\t录入学生信息\n");
printf ("2\t增加学生信息\n");
printf ("3\t删除学生信息\n");
printf ("4\t查找学生信息\n");
printf ("5\t修改学生信息\n");
printf ("6\t保存学生信息\n");
printf ("7\t结束程序\n");
puts ("=====================================================================");
printf ("请输入功能序号以开启操作:");
scanf ("%d",&key);
switch (key){
case 1:inputinformation (stu,num);break;
case 2:addstu (stu,p);break;
case 3:delstu (stu,p);break;
case 4:lookup (stu,p);break;
case 5:modify (stu,p);break;
case 6:save (stu,p);break;
case 7:break;
}
system("cls");/*清屏*/
if (key==7) printf ("程序已结束。");
}
return 0;
}
用c实现1个小型的学生管理系统,具有增删查改等功能。
最新推荐文章于 2022-04-26 16:21:28 发布