前几年做的,整理了一下,需要的私我。
系统介绍:
随机点名系统,包含以下功能模块:学生名单管理、点名流程管理、点名统计管理、点名清零。各个模块包含的功能如下:
- 学生名单管理:新增、删除、修改、查询学生信息;
- 点名流程管理:随机抽取需要点名的部分学生清单,到与未到的学生做出标记。
- 点名完成后,可以查看统计情况。
- 点名清零,点名统计清零,点名重新开始,一般在新学期开始等情况下使用。
部分截图:
部分代码:
int choice=0;
char arr[48] = {0};
P_NODE_T p_find=NULL;
FILE *fp11=fopen("2.txt","a+");
FILE *fp22=fopen("3.txt","a+");
while (1)
{
printf("\n功能选择:\n1.显示所有名字\n2.查看已到学生\n3.查看未到学生\n4.查找学生\n5.删除学生\n6.添加学生\n7.修改学生姓名\n0.退出\n");
scanf("%d",&choice);
switch(choice){
case 1:
klist_print_all_node(p_head);//打印链表中的所有名字
continue;
case 2:
printf("已到学生:");
for (int i = 0; i < yes; i++)
{
fread(arr, sizeof(arr), 1, fp11);//从2.txt中读取名字
printf("%s-",arr);
}
printf("\n");
continue;
case 3:
printf("未到学生:");
for (int i = 0; i < no; i++)
{
fread(arr, sizeof(arr), 1, fp22);//从3.txt中读取名字
printf("%s-",arr);
}
printf("\n");
continue;
case 4:
bzero(name,sizeof(name));
printf("请输入要查找的名字:");
scanf("%s",name);
p_find = klist_search(p_head,name);//查找学生信息
if(p_find==NULL)
{
printf("没有找到%s\n",name);
}continue;
case 5:
bzero(name,sizeof(name));
printf("请输入需要删除的名字:");
scanf("%s",name);
klist_del(p_head,name);//检索名字 并将链表内的名字删除
printf("已删除\n");
continue;
case 6:
insert_name(p_head);//生成一个名字
fread(name, sizeof(name), 1, fp);
klist_add_tail(NULL, p_head, name);//插入链表中
printf("已将%s加入名单\n",name);
continue;
case 7:
bzero(name,sizeof(name));
printf("请输入要修改的姓名:");
scanf("%s",name);
klist_revise(p_head,name);//修改学生姓名
continue;
default:
break;
}
break;
}
fclose(fp);
fclose(fp11);
fclose(fp22);
return 0;
}