学生籍贯信息管理系统java_跪求c语言学生籍贯管理系统程序设计源代码

这是一个使用C语言编写的简单学生籍贯信息管理系统,实现了学生信息的录入、保存、查询、修改、增加和删除等功能。用户可以按学号、姓名或籍贯进行查询,系统支持将数据保存到文件并在需要时读取。源代码包含详细注释。
摘要由CSDN通过智能技术生成

展开全部

这个学期一开学两个星期没有上课,就搞了一个下面的小软件636f70793231313335323631343130323136353331333239303233:

学生籍贯信息管理系统

可以实现功能:1.学生学号、姓名、籍贯等信息的录入

2.学生信息保存到磁盘,并能够从磁盘读取、显示

3.学生信息查询:

1)用学号查询并输出所查到信息

2)用姓名查询并输出查到的所有学生信息

3)用籍贯查询并输出查到的所有学生信息

4.学生信息处理:包括修改、增加、删除学生信息

附录: 源程序代码(用C写的)

#include

#include

#define LEN sizeof(struct student)

#define NULL 0

struct student

{long num;

char name[20];

char jg[20];

struct student *next;

};

int n=0;

void save(struct student *head)

{ FILE *fp;

char filename[20];

struct student *p1;

printf("Please input the filename\n");

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL)

{printf("can't open file\n");

return;

}

for(p1=head;p1!=NULL;p1=p1->next)

{fprintf(fp,"%ld",p1->num);

fputc('\t',fp);

fprintf(fp,"%s",p1->name);

fputc('\t',fp);

fputc('\t',fp);

fprintf(fp,"%s",p1->jg);

fputc('\n',fp);

}

free(p1);

fclose(fp);

}

void print(struct student *head)

{ struct student*p;

printf("\nNow,these information is:\n");

p=head;

if(head!=NULL)

do

{printf("%ld\t%s\t\t%s\n",p->num,p->name,p->jg);

p=p->next;

}while(p!=NULL);

}

struct student *creat()

{ struct student *head,*p1,*p2;

char ch;

p1=p2=(struct student *)malloc(LEN);

printf("\n Welcome to student jiguan system!\n");

printf("Please input one's num,name and jiguan\n");

printf("\"0 0 0\":exit\n");

scanf("%ld%s%s",&p1->num,p1->name,p1->jg);

head=NULL;

while(p1->num!=0)

{n=n+1;

if(n==1)head=p1;

else p2->next=p1;

p2=p1;

p1=(struct student *)malloc(LEN);

scanf("%ld%s%s",&p1->num,p1->name,p1->jg);

}

p2->next=NULL;

free(p1);

printf("Save?Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='y'||ch=='Y') save(head);

print(head);

return(head);

}

void loadf()

{FILE *fp;

int N=n;

char filename[20];

struct student *p1;

p1=(struct student *)malloc(LEN);

printf("Please input the filename\n");

scanf("%s",filename);

if((fp=fopen(filename,"r"))==NULL)

{printf("cannot open file\n");

return;

}

printf("File has been open:\n");

for (;N!=0;N--)

{ fscanf(fp,"%ld%s%s",&p1->num,p1->name,p1->jg);

printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

}

free(p1);

fclose(fp);

}

void xsearch(struct student*head)

{long num;

struct student *p1,*p2;

int c=0;

printf("Please input the search number:\n");

scanf("%ld",&num);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(num==p1->num)

{c=c+1;

printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

}

}

printf("There are %d results!\n",c);

}

void nsearch(struct student*head)

{char name[20];

struct student *p1,*p2;

int c=0;

printf("Please input the search name:\n");

scanf("%s",name);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(strcmp(name,p1->name)==0)

{c=c+1;

printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

}

}

printf("There are %d results!\n",c);

}

void jsearch(struct student*head)

{char jg[20];

struct student *p1,*p2;

int c=0;

printf("Please input the search jiguan:\n");

scanf("%s",jg);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(strcmp(jg,p1->jg)==0)

{c=c+1;

printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

}

}

printf("There are %d results!\n",c);

}

void search(struct student*head)

{

int a=4;

for(;a!=0;)

{printf("\nWelcome to student juguan system!\n");

printf("\n search information system\n");

printf(" 0:exit\n");

printf(" 1:use xuehao search\n");

printf(" 2:use name search\n");

printf(" 3:use jiguan search\n");

printf("Please select:\n");

scanf("%d",&a);

clrscr();

switch(a)

{case 0:printf("Thank you for playing!Bye!\n"); break;

case 1:xsearch(head);break;

case 2:nsearch(head);break;

case 3:jsearch(head);break;

default:printf("Choose error,choose again!\n");break;

}

}

}

struct student *del(struct student *head,struct student *p1)

{ struct student *p2;

char ch;

if(p1==NULL) printf("No result,can't manage!\n");

else{if(p1==head) head=p1->next;

else

{ for(p2=head;p2->next!=p1;p2=p2->next);

p2->next=p1->next;}

n=n-1;

printf("Save the change?Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='y'||ch=='Y') save(head);

}

free(p1);

free(p2);

return(head);

}

void change(struct student *head,struct student *p1)

{ char ch;

if(p1==NULL) printf("No result,can't manage!\n");

else{printf("Please input the new information of it.\n");

scanf("%ld%s%s",&p1->num,p1->name,p1->jg);

printf("Save the change?Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='y'||ch=='Y') save(head);

}

}

struct student * add(struct student *head,struct student *p1)

{ int a;

char ch;

struct student *p0,*p2;

p0=p2=(struct student *)malloc(LEN);

if(p1==NULL) printf("No result,can't manage!\n");

else{

printf("Please input the new student's information.\n");

scanf("%ld%s%s",&p0->num,p0->name,p0->jg);

printf("Where would you like to add?\n");

printf(" 1:add before it\n");

printf(" 2:add after it\n");

scanf("%d",&a);

switch(a)

{ case 1:if(p1==head)

{ p0->next=p1;head=p0;}

else

{ for(p2=head;p2->next!=p1;p2=p2->next);

p0->next=p1;

p2->next=p0;

}

break;

case 2:if(p1->next==NULL)

{ p1->next=p0;

p0->next=NULL;

}

else

{ p2=p1->next;

p0->next=p2;

p1->next=p0;

}

break;

default:printf("Choose error,choose again!\n");

break;

}

n=n+1;

printf("Save the change?Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='Y'||ch=='y') save(head);

}

free(p0);

free(p1);

free(p2);

return(head);

}

struct student* inman(struct student*head)

{ char ch;

int a=4;

long num;

char name[20];

char jg[20];

struct student *p1;

printf("Input it's feature,so you can deal with it.\n");

printf(" 0:exit\n");

printf(" 1:input it's number\n");

printf(" 2:input it's name\n");

printf(" 3:input it's jiguan\n");

scanf("%d",&a);

clrscr();

switch(a)

{ case 0:p1=NULL;break;

case 1:printf("Please input the search number:\n");

scanf("%ld",&num);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(num==p1->num)

{ printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

printf("Is this one you want?\n");

printf("Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='Y'||ch=='y')

break;

}

}

break;

case 2:printf("Please input the search name:\n");

scanf("%s",name);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(strcmp(name,p1->name)==0)

{ printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

printf("Is this one you want?\n");

printf("Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='Y'||ch=='y')

break;

}

}

break;

case 3:printf("Please input the search jiguan:\n");

scanf("%s",jg);

for(p1=head;p1!=NULL;p1=p1->next)

{ if(strcmp(jg,p1->jg)==0)

{ printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jg);

printf("Is this one you want?\n");

printf("Y/N\n");

scanf("%c",&ch);

scanf("%c",&ch);

if(ch=='Y'||ch=='y')

break;

}

}

break;

default:printf("Choose error,choose again!\n");p1=NULL;break;

}

if(p1==NULL) printf("That's all!\n");

return p1;

}

struct student * manage(struct student *head)

{ struct student *p1;

int a=4;

p1=(struct student*)malloc(LEN);

for(;a!=0;)

{ printf("\nWelcome to the student jiguan system!\n");

printf("\n manage information system \n");

printf("What are you going to do?\n");

printf(" 0:exit\n");

printf(" 1:add information\n");

printf(" 2:delete information\n");

printf(" 3:change information\n");

scanf("%d",&a);

clrscr();

switch(a)

{case 0:printf("Thank you for playing!Bye!\n");break;

case 1:p1=inman(head);

head=add(head,p1);

print(head);

break;

case 2:p1=inman(head);

head=del(head,p1);

print(head);

break;

case 3:p1=inman(head);

change(head,p1);

print(head);

break;

default:printf("Choose error,choose again!\n");break;

}

}

return(head);

}

void main()

{struct student *head;

int a;

for(a=5;a!=0;)

{ printf("\n Welcome to Student Jiguan System!\n");

printf(" MENU\n");

printf(" 0:exit\n");

printf(" 1:write\n");

printf(" 2:read\n");

printf(" 3:search\n");

printf(" 4:manage\n");

printf(" Please select:\n");

scanf("%d",&a);

clrscr();

switch(a)

{ case 0:printf("Thank you for using it!Bye!\n");break;

case 1:head=creat();break;

case 2:loadf();break;

case 3:search(head);break;

case 4:head=manage(head);break;

default :printf("Choose error,choose again!");break;

}

}

}

本回答由网友推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值