展开全部
这个学期一开学两个星期没有上课,就搞了一个下面的小软件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;
}
}
}
本回答由网友推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起