• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

基于C语言的图书信息系统设计,急需高分解决方案

发布于 2025-05-06 03:50:07

include#include#include#include#define MAX 200struct student{char no[10]; // 学号char name[50]; // 姓名int sum; // 次数float score; // 分数};struct data{int count; // 当前学生数组中学生的个数struct student stu[MAX]; // 学生数组} dd;// 显示主菜单void menu(){system("cls");//清屏printf("");printf(" *****");printf(" * ");printf(" * 健身跑学分管理系统 ");printf(" * ");printf(" * [0] 退出 ");printf(" * [1] 查看所有学生信息 ");printf(" * [2] 输入学生记录 ");printf(" * [3] 删除学生记录 ");printf(" * [4] 编辑学生记录 ");printf(" * [5] 查询(学号) ");printf(" * [6] 查询(姓名) ");printf(" * [7] 排序(学号) ");printf(" * [8] 跑步签到 ");printf(" * ");printf(" ****");}// 等待用户按回车后回到主菜单void to_menu(){char c1,c2;printf("按回车键返回主菜单...");scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键menu();}// 查看所有学生信息void view_data(){int i;printf("学号 姓名 次数 学分");printf("-------------------------------------------------------------------");for(i=0;iprintf("%s %s %d %-7.1f",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);}// 将数据从结构体数组保存到文件中void save_data(){FILE fp;//文件指针int i,k;k=dd.count;fp=fopen("dada.txt","w");//文件存储位置:当前文件夹fwrite(&k,sizeof(int),1,fp);for(i=0;ifwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}// 输入学生记录void add_data(){struct student st;int b;int k;while(1){printf("请输入学生信息:");printf("学号 姓名");printf("---------------------------------------------------------------");scanf("%s%s",st.no,st.name);k = dd.count;strcpy(dd.stu[k].no,st.no);strcpy(dd.stu[k].name,st.name);dd.stu[k].sum=0;dd.stu[k].score=0;dd.count++;printf("继续添加学生信息[1-yes 0-no]:");scanf("%d",&b);if(b==0) break;}save_data();}// 将数据从文件读到结构体数组中void read_data(){FILE fp;int i,k;struct student st;k=0;if(access("dada.txt",0)==-1) // 如果文件不存在{fp=fopen("dada.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("dada.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i{fread(&st,sizeof(struct student),1,fp);strcpy(dd.stu[i].no,st.no);strcpy(dd.stu[i].name,st.name);dd.stu[i].sum=st.sum;dd.stu[i].score=st.score;}fclose(fp);}// 删除学生记录void delete_data(){int i,k;char no[10];printf("请输入要删除学生的学号:");scanf("%s",no);k=-1;for(i=0;i{if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("没有找到该学生(学号-%s)!",no);}else{dd.stu[k].sum=0;dd.stu[k].score=0;save_data();printf("删除学生(学号-%s)记录成功!",no);}}// 编辑学生记录void edit_data(){int i,k;char no[10],name[50];printf("请输入要编辑学生的学号:");scanf("%s",no);k=-1;for(i=0;i{if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("没有找到该学生(学号-%s)!",no);}else{printf("请输入学生数据:");printf("姓名");printf("--------------------------------------------------------------------");scanf("%s",name);strcpy(dd.stu[k].name,name);save_data();printf("编辑学生记录(学号-%s)成功!",no);}}// 查询(学号)void query_data_no(){int i,k;char no[10];printf("请输入要查询学生的学号:");scanf("%s",no);k=-1;for(i=0;i{if(strcmp(dd.stu[i].no,no)==0){if(k==-1){printf("学号 姓名 次数 学分");printf("-----------------------------------------------------------------");}k=i;printf("%s %s %d %-7.1f",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);}}if(k==-1){printf("没有找到该学生(学号-%s)!",no);}}// 查询(姓名)void query_data_name(){int i,k;char name[10];printf("请输入要查询学生的姓名:");scanf("%s",name);k=-1;for(i=0;i{if(strcmp(dd.stu[i].name,name)==0){if(k==-1){printf("学号 姓名 次数 学分");printf("-----------------------------------------------------------------");}k=i;printf("%s %s %d %-7.1f",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);}}if(k==-1){printf("没有找到该学生(姓名-%s)!",name);}}// 排序(学号)void sort_data_no(){int i,k;struct student tmp;k=dd.count-1;while(k>0){for(i=0;i{if(strcmp(dd.stu[i].no,dd.stu[i+1].no)>0)//最大的放末尾{strcpy(tmp.no,dd.stu[i].no);strcpy(tmp.name,dd.stu[i].name);tmp.sum=dd.stu[i].sum;tmp.score=dd.stu[i].score;strcpy(dd.stu[i].no,dd.stu[i+1].no);strcpy(dd.stu[i].name,dd.stu[i+1].name);dd.stu[i].sum=dd.stu[i+1].sum;dd.stu[i].score=dd.stu[i+1].score;strcpy(dd.stu[i+1].no,tmp.no);strcpy(dd.stu[i+1].name,tmp.name);dd.stu[i+1].sum=tmp.sum;dd.stu[i+1].score=tmp.score;}}k--;}save_data();printf("排序成功!");}// 跑步签到void sign(){int i,k;char no[10];float tmp;printf("请输入要签到学生的学号:");scanf("%s",no);k=-1;for(i=0;i{if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("没有找到该学生(学号-%s)!",no);}else{dd.stu[k].sum++;tmp=(float)(dd.stu[k].sum/20*0.5);if(tmp>2) tmp=2;dd.stu[k].score=tmp;save_data();printf("签到(学号-%s)成功!",no);}}// 主函数main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-8]:",&fun);scanf("%d",&fun);switch(fun){case 0: break; // 退出case 1: view_data();break; // 查看所有学生信息case 2: add_data(); break; // 输入学生记录case 3: delete_data();break; // 删除学生记录case 4:edit_data();break; // 编辑学生记录case 5: query_data_no();break; // 查询(学号)case 6:query_data_name();break; // 查询(姓名)case 7:sort_data_no(); break; // 排序(学号)case 8:sign();break; // 跑步签到}if(fun==0) break;to_menu();}}

0 条评论

发布
问题

在线
客服