C语言学生信息系统,求帮忙做个删除信息部分,在线等,急~
发布网友
发布时间:2024-10-17 03:11
我来回答
共5个回答
热心网友
时间:2024-10-31 18:19
void sDelete(double* Score,char (*Name)[17],int* studentCount)
{
int deletedName;
int leftCount;
system("CLS");
printOnCenter("删除学生信息功能");
showByTable(Score,Name,studentCount);
deletedName = getDeletedName(Score,Name,studentCount);
while(deletedName != -1)
{
leftCount = sDeleteing(Score,Name,studentCount,deletedName);
if(leftCount)
{
system("CLS");
printOnCenter("删除学生信息功能");
printf("\n\n删除完成!\n\n");
showByTable(Score,Name,studentCount);
deletedName = getDeletedName(Score,Name,studentCount);
}
else
break;
}
printf("\n\n删除学生信息功能结束!");
printf("\n\n按任意键返回主菜单... ...");
getch();
}
热心网友
时间:2024-10-31 18:21
我给你加入了删除和储存,程序如下
#include<conio.h>
#include "stdio.h"
#include<string.h>
#include<stdlib.h>
typedef struct
{
char num[10];
char name[10];
char sex[2];
int score[4];
int sum;
int ave;
} student;
int save(student man[], int n)
{
FILE *fp;
int i;
if ((fp = fopen("e:\\szj\\man_dat", "wb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i = 0; i < n; i++)
if (fwrite(&man[i], sizeof(student), 1, fp) != 1)
printf("file write error\n");
fclose(fp);
}
// 7.数据删除//
int fnPrint()
{
student man[60];
FILE *fp;
char number[10];
int i, n, j;
if ((fp = fopen("e:\\szj\\man_dat", "rb")) == NULL)
{
printf("cannot open file\n");
return 0;
}
for (i = 0; (!feof(fp)); i++)
fread(&man[i], sizeof(student), 1, fp);
n = i - 1;
fclose(fp);
printf("请输入要删除的学号:");
scanf("%s", number); /* 输入要删除的学号 */
for (i = 0; i < n; i++) /* 结构体里的个数0-n循环 */
{
if (strcmp(man[i].num, number) == 0) /* 结构体i里的学号和输入的学号进行比较如果相等进入IF语句 */
{
for (j = i; j < n - 1; j++)
man[j] = man[j + 1]; /* 进入for循环将被删除数之后的数向前移一位,覆盖结构体数组man[j] */
save(man, n - 1); /* 将实参结构体数组man和n-1,传递到保存函数save中进行文件保存 */
printf("\n删除成功");
getche();
break; /* 删除成功后跳出循环 */
}
}
if (i == n) /* 如果i等价于n则说明无该学号 */
{
printf("\n系统没有写入该学号,请重新输入!"); /* 输出没有该学号的提示 */
getche();
}
}
void main()
{
system("graftabl 936");
clrscr();
fnPrint();
}
int fnPrint();
int fnPrint()
{
int i,j;
printf("\n\n\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t| 学生信息管理系统 |\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t| [1]----录入学生信息 |\n");
printf("\t\t\t| [2]----删除学生信息 |\n");
printf("\t\t\t| [3]----查询学生信息 |\n");
printf("\t\t\t| [0]----退出系统 |\n");
printf("\t\t\t|------------------------------|\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t请输入您的选择:");
scanf("%d",&i);
switch(i)
{
case 1:
clrscr();
printf("你输入的是1,回到主菜单按0\n");
scanf("%d",&j);
clrscr();
if(j==0)
fnPrint();
break;
case 2:
clrscr();
printf("你输入的是2,回到主菜单按0\n");
scanf("%d",&j);
clrscr();
if(j==0)
fnPrint();
break;
case 3:
clrscr();
printf("你输入的是3,回到主菜单按0\n");
scanf("%d",&j);
clrscr();
if(j==0)
fnPrint();
break;
case 0:
break;
}
}
可以就采纳哈,也欢迎追问!祝你愉快!
热心网友
时间:2024-10-31 18:19
fnPrint();里面最好不要嵌套fnPrint();
至于删除信息,你的数据结构没出来没法做
热心网友
时间:2024-10-31 18:18
我正在做一个mini的信息管理系统(存储什么随意啦~),目前支持的功能有:增加/删除条目,列出所有条目,按学号搜索对应条目,修改条目的信息,对所有条目按照指定标准排序(如:按照数学成绩排序)。
已经做了大部分了,界面还没写,排序代码个人不太满意重写中。。。。。
有兴趣的话给我邮箱地址。我把源码发给你
热心网友
时间:2024-10-31 18:15
楼上说的没错,fnPrint()里面最好不要嵌套fnPrint()。
而且你的数据结构没有,确实没法做的,你先把关于学生信息的结构体写出来,才能做添删改查的操作