C语言 基于数组的"学生信息管理系统"

C语言 基于数组的"学生信息管理系统",第1张

我以前看到别人答疑的时候给发过一个类似的,你参考,自己改改吧,真心不难,就是复杂.

#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 = ik>0k--)

{

if(strncmp(buff_data[k],s,strlen(s)-1)==0)

{

n = k

break

}

}

for(j=n-1j<i-1j++)

{

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=0j<i-1j++)

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=0j<ij++)

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)

}

}

}

public static void main(String args[])

{

System.out.println("请输入学生个数")

Scanner input =new Scanner(System.in)

int n=input.nextInt()

String stu[][] =new String [n][3]//学生个数不定

//输入信息

for(int i=0i<ni++){

//i 是行 ,一行就是一个“学生”,如i=0,是第一个学生

System.out.println("请输入第"+(i+1)+"个学生的信息:")

for(int j=0j<3j++)

{//j,是列,是每个学生的信息,0是姓名,1是学号,2是成绩

//循环过程是i=0是,遍历[0][0],[0][1],[0][2],也就依次是姓名学号成绩

switch (j) {

case 0:

System.out.print("姓名:")

stu[i][j]=input.next()

break

case 1:

System.out.print("学号:")

stu[i][j]=input.next()

break

case 2:

System.out.print("成绩:")

stu[i][j]=input.next()

break

default:

break

}

}

}

//输出信息

for(int i=0i<ni++){//循环同理

for(int j=0j<3j++)

{//j,是列,是每个学生的信息,0是姓名,1是学号,2是成绩

//循环过程是i=0是,遍历[0][0],[0][1],[0][2],也就依次是姓名学号成绩

switch (j) {

case 0:

System.out.print("姓名:")

System.out.print(stu[i][j])

break

case 1:

System.out.print("学号:")

System.out.print(stu[i][j])

break

case 2:

System.out.print("成绩:")

System.out.print(stu[i][j])

break

default:

break

}

}

System.out.println("")//输完一个学生,换行

}

}

#includestruct stud { int numchar name[30]float score[3]} int main(){ struct stud stu int ifloat avg printf("input number: ")scanf("%d", &stu.num )printf("input name: " )scanf("%s", stu.name )printf("input 3 score:\n")avg=0for( i=0i<3i++ ) { scanf("%f", &stu.score[i] )avg += stu.score[i] } avg /= 3 printf("average score: %f\n", avg )return 0}


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

原文地址: http://outofmemory.cn/bake/11278108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存