C语言 基于数组的"学生信息管理系统"
发布网友
发布时间:2022-05-25 15:58
我来回答
共4个回答
热心网友
时间:2023-11-14 08:51
我以前看到别人答疑的时候给发过一个类似的,你参考,自己改改吧,真心不难,就是复杂.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
FILE *fp;
int fd;
int n,i,j,k;
char s[100];
char buff[100],buff_data[100][200],c;
char id[30],name[20],age[10];
while(1)
{
printf("欢迎使用学生管理系统\n1.添加学生信息\n2.查看学生信息\n3.删除学生信息\n4.插入学生信息\n5.清空所有信息\n6.退出系统\n\n输入序号:");
scanf("%d",&n);
switch(n)
{
case 1:{
if((fd = open("stud.txt", O_APPEND|O_WRONLY, 0666)) == -1)
{
printf("open error\n");
exit(1);
}
printf("输入ID:");
scanf("%s",id);
printf("输入名字:");
scanf("%s",name);
printf("输入年龄:");
scanf("%s",age);
sprintf(buff, "%s\t\t%s\t\t%s\n", id, name, age);
write(fd, buff, strlen(buff));
close(fd);
i++;
break;
}
case 2:{
printf("\nID\t\tname\t\tage\n");
fp = fopen("stud.txt", "rt");
c = fgetc(fp);
while(c != EOF)
{
putchar(c);
c = fgetc(fp);
}
printf("\n");
fclose(fp);
break;
}
case 3:{
printf("输入要删除的学号:");
scanf("%s",&s);
i = 0;
j = 0;
fp = fopen("stud.txt", "rt");
c = fgetc(fp);
while(c != EOF)
{
buff_data[i][j++]=c;
if(c=='\n')
{
i++;
j=0;
}
c = fgetc(fp);
}
fclose(fp);
for(k = i;k>0;k--)
{
if(strncmp(buff_data[k],s,strlen(s)-1)==0)
{
n = k;
break;
}
}
for(j=n-1;j<i-1;j++)
{
strcpy(buff_data[j],buff_data[j+1]);
}
if((fd = open("stud.txt", O_TRUNC|O_WRONLY, 0666)) == -1)
{
printf("open error\n");
exit(1);
}
for(j=0;j<i-1;j++)
write(fd, buff_data[j], strlen(buff_data[j]));
close(fd);
break;
}
case 4:{
printf("输入要插入的位置:");
scanf("%d",&n);
i = 0;
j = 0;
fp = fopen("stud.txt", "rt");
c = fgetc(fp);
while(c != EOF)
{
if(n==i)
i++;
buff_data[i][j++]=c;
if(c=='\n')
{
i++;
j=0;
}
c = fgetc(fp);
}
fclose(fp);
if((fd = open("stud.txt", O_APPEND|O_WRONLY|O_CREAT, 0666)) == -1)
{
printf("open error\n");
exit(1);
}
printf("输入ID:");
scanf("%s",id);
printf("输入名字:");
scanf("%s",name);
printf("输入年龄:");
scanf("%s",age);
sprintf(buff, "%s\t\t%s\t\t%s\n", id, name, age);
strcpy(buff_data[n], buff);
if((fd = open("stud.txt", O_TRUNC|O_WRONLY|O_CREAT, 0666)) == -1)
{
printf("open error\n");
exit(1);
}
for(j=0;j<i;j++)
write(fd, buff_data[j], strlen(buff_data[j]));
close(fd);
break;
}
case 5:{
if((fd = open("stud.txt", O_TRUNC, 0666)) == -1)
{
printf("open error\n");
exit(1);
}
close(fd);
break;
}
case 6:
exit(1);
}
}
}
热心网友
时间:2023-11-14 08:51
慢慢写吧,不难,就是麻烦
热心网友
时间:2023-11-14 08:52
我去,这个让我写得花3小时
热心网友
时间:2023-11-14 08:52
我也来等待答案。共同学习