我以前看到别人答疑的时候给发过一个类似的,你参考,自己改改吧,真心不难,就是复杂.
#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}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)