C语言程序设计实训(数组实现学生信息管理系统)

C语言程序设计实训(数组实现学生信息管理系统),第1张

  1. 事先存入的数据:

 

  1. 菜单:

 

  1. 系统帮助及说明:

  1. 写入学生信息:

  

该写入仅写入数组并不存入文件。


  1. 读出学生信息

  

  1. 将学生信息存入文件中

此时文件中数据为:

  1. 输出每门课程最高分:

 

  1. 随机读取信息:

 

  1. 专业平均成绩升序(简单选择排序):

 

  1. 班级平均成绩降序(冒泡)::

  1. 班级单科成绩升序(插排):

  1. 综合查找:

  1. 输出所有信息:

  1. 删除学生信息:

 

 源码如下(原创,如用请点赞):

  1. #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define M 1000
    int length;
    int l=5;
    char a[10],b[10],c[10],d[10],e[10],f[10],g[10];//标题 
    struct student
    {
    	char num[10];//学号
    	char name[10];//姓名
    	char spec[10];//专业
    	char stu_class[10];//班级 
    	int score1; 
    	int score2;
    	int score3;
    }stu[30];
    
    int Init()//初始化 
    { 	
    
    	int i = 0;
    	FILE *p = fopen("1.txt", "r");      //打开文件       
    	if(p==NULL)
    		return 0;
    	fscanf(p,"%s%s%s%s%s%s%s",&a,&b,&c,&d,&e,&f,&g);//读取标题		
    	while (!feof(p)) //检测流上的文件结束符,如果文件结束,则返回非0值
    	{	//将文件中数据读取到结构体数组
    		fscanf(p,"%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3);
    		i++;
    	}
    	length = i;
    	fclose(p);
    	return 1;
    } 
    
    void Input()//从键盘输入一个学生信息存入文件和结构体数组。


    { loop1:; printf("请输入学生信息:\n"); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); int i = length; char num_stu[10]; scanf("%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3); int n; for(n=0;n<99;n++) { if(stu[i].num==num_stu) { printf("学号冲突,请重新输入"); goto loop1; } } FILE *p = fopen("1.txt", "c"); //打开文件 fclose(p); l=l+1; printf("写入信息成功!\n"); length++; } void Output1()//输入学号,将对应的学生信息格式化输出。


    { char *num; printf("请输入查询的学号:"); scanf("%d",num); printf("学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(int i=0;i


    { printf("请输入学生信息:\n"); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); int i = length; scanf("%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3); FILE *p = fopen("1.txt", "a"); //打开文件 fprintf(p,"\n%s %s %s %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); printf("%s %s %s %s %d %d %d",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); l=l+1; fclose(p); printf("写入文件成功!\n"); } void del(struct student stu[M])//删除函数 { int j,index=0,k=l; char xh[25]; printf("所要删除的学生学号为:\n"); scanf("%s",xh); do{ for(j=0;j


    { int i; int max[3]={0,0,0}; for(i=0;i


    { int i = time(NULL) % length; printf("第%d名学生\n",i+1); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); printf("%s %s %s %s %d %d %d \n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); } void Sort_select()//按专业总平均成绩由低到高进行简单选择排序。


    { struct student tmp; char str[6]; int i,j,t,n,k; float avg[length],avg_temp; printf("请输入专业:\n"); scanf("%s",str); for(i=0;i


    { struct student tmp; char str[6]; float avg[length],avg_temp; int i,j; printf("请输入班级:\n"); scanf("%s",str); for(i=0;iavg[j] && strcmp(stu[i].stu_class,str)==0 && strcmp(stu[j].stu_class,str)==0) { tmp = stu[i]; avg_temp = avg[i]; stu[i] = stu[j]; avg[i] = avg[j]; stu[j] = tmp; avg[j] = avg_temp; } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3 平均分\n"); for(i=0;i


    { int i,j,len=0; char str[6]; int m; struct student tmp; struct student insert[100]; printf("请输入班级:\n"); scanf("%s",str); printf("请输入科目 :\n"); scanf("%s",m); if(m==1) { for(i=0;i= 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i= 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i= 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i score) { printf("%5s %-6s %3s %s %3d %3d %3d %3d\n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,sum); k++; } printf("%s班总分%d以上的一共有%d人。


    \n",str,score,k); } void Deletedatd()//删除信息 { int i, j, flag = 0; char m; printf("请输入想删除的信息:\n"); scanf("%lld", m); for (i = 0; i < l; i++) { if (stu[i].num==&m) { for (j = i; j < l + 1; j++) { stu[j] = stu[j + 1]; } } } getch(); } int main() { int i,j; if(Init()==0) { printf("文件不存在!"); return 0; } system("color 0f");//变色 int choice; int num; //num为每次输入的人数 static int k; // k为总人数 且会变化 int label_of_save=0;//存盘判据 while(1)//死循环 支持多次不同操作 { printf("\t\t\t ******************************************************\n\n"); printf("\t\t\t * 学生信息管理系统 * \n\n"); printf("\t\t\t ******************************************************\n\n"); printf("\t\t\t*********************系统功能菜单*************************\n"); printf("\t\t\t ---------------------- ---------------------- \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 0.系统帮助及说明 * * 1.写入学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 2.查询学生信息 * * 3.保存学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 4.课程最高分 * * 5.随机读取信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 6.专业平均成绩升序 * * 7.班级平均成绩降序 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 8.班级单科成绩升序 * * 9.综合查找 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 10.输出所有信息 * * 11.删除学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 12.退出系统 * \n"); printf("\t\t\t ********************** \n"); printf("\t\t\t ---------------------- ---------------------- \n"); scanf("%d",&choice);//功能选择 int j;//支持增补的变量保障 if(choice>=0&&choice<=13) { switch(choice) { case 0: help(); break; case 1: Input(); break; case 2: Output(stu); break; case 3: Save(); break; case 4: Max(); break; case 5: Fetch(); break; case 6: Sort_select(); break; case 7: Sort_buble(); break; case 8: Sort_insert(); //my_Sort_insert(); break; case 9: Search(); break; case 11: del(stu);//删除 break; case 10: all(); break; case 12: printf("\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); //退出提示 printf(" Goodbye! \n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); exit(0);//将程序退出 } } else //没有按规范选择功能,要进行错误提示 //错误提示 { printf("\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf(" error input! \n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); } } return 0; } void write() { int i = length; FILE *p = fopen("1.txt", "w"); //打开文件 fprintf(p,"%s %s %s %s %s %s %s\n",a,b,c,d,e,f,g); for(i=0;i

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)