急求C语言源代码 题目:学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改, 20

 我来答
穿梭雨夜
2012-06-10
知道答主
回答量:11
采纳率:0%
帮助的人:6.8万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
struct student
{
int num;
char name[20];
char tel[20];
struct student *next;
};
struct student *head,*tmp1,*tmp2;
int n;

void Load()
{
FILE *fp1;
int i;
fp1=fopen("file.txt","rb");
struct student *tmp;
struct student *q;
printf("开始读取学生信息 \n");
head=0;
while(1){
tmp=malloc(sizeof(struct student));
tmp->next=0;
//i=fscanf(fp1,"学号:%d 姓名:%s 电话:%s\n",&(tmp->num),tmp->name,tmp->tel);
i=fread(tmp,sizeof(struct student),1,fp1);
if(i==1){
if(head==0)
q=head=tmp;
printf("读取一条学生信息\n");
q->next=tmp;
q=q->next;
}else{
fclose(fp1);
return;
}
}
}
void OutPut()
{
tmp1=head;
while(tmp1!=0)
{
printf("学号:%d 姓名:%s 电话:%s\n",tmp1->num,tmp1->name,tmp1->tel);
tmp1=tmp1->next;

}
}
void InPut( )
{ struct student *q,*p;
printf("请按要求增加学生信息:\n");
p=malloc(sizeof(struct student));
printf("请输入学生学号:");
scanf("%d",&p->num);
printf("\n请输入学生姓名:");
scanf("%s",p->name);
printf("\n请输入学生电话:");
scanf("%s",p->tel);
p->next=0;
if(head==0){
head=p;
q=p;
}else{
q=head;
while(q->next!=0)
{
q=q->next;
}
q->next=p;
q=p;

}
}
void Delete()
{ struct student *q,*p;
int num;int i; /* 这里num为第几条 */
printf("请输入要删除的第i条记录\n");
scanf("%d",&num);
if(num==1)
{head=head->next;}/*删除头节点*/
p=head;
for(i=1;i<num-1;i++) /*移动p指向要删除的节点*/
{p=p->next;}
if (num>1)
p->next=(p->next)->next;/*例如:把2 4节点链接,删除3节点*/
printf("删除成功,请查看\n");
}
void Search()
{ char c[20];
char tmp2_num[20];
printf("请输入需要查询的信息内容:\n");
scanf("%s",c);
printf("你要查询的内容为:\n");
tmp2=head;/*进行遍历*/
while(tmp2!=0)
{
printf("学号:%d姓名:%s电话:%s\n",tmp2->num,tmp2->name,tmp2->tel);
if (strncasecmp(tmp2->name,c,strlen(c))==0)
printf("姓名匹配成功\n");
/*进行匹配*/
if (strncasecmp(tmp2->tel,c,strlen(c))==0)
printf("电话匹配成功\n");
sprintf(tmp2_num,"%d",tmp2->num);
if(strncasecmp(tmp2_num,c,strlen(c))==0)
printf("学号匹配成功\n");
tmp2=tmp2->next;
}
}
void Save()
{
FILE *fp1;
struct student *q,*p1;
fp1=fopen("file.txt","w");
p1=0;
p1=head;
if(head==0)
{
printf("现在没有学生信息,请先增加学生信息:\n");
}
while(p1!=0)
{
//fprintf(fp1,"学号:%d 姓名:%s 电话:%s\n",p1->num,p1->name,p1->tel);
fwrite(p1,sizeof(struct student),1,fp1);

printf("学号:%d 姓名:%s 电话:%s\n",p1->num,p1->name,p1->tel);

p1=p1->next;
}
fclose(fp1);
}
void Change()
{ struct student *p;
int num;int i; /* 这里num为第几条 */
printf("请输入要修改的第i条记录\n");
scanf("%d",&num);
p=head;
for(i=1;i<num;i++)
{
p=p->next;
}
printf("学号:%d 姓名:%s 电话:%s\n",p->num,p->name,p->tel);
printf("请修改学生学号:");
scanf("%d",&p->num);
printf("请修改学生姓名:");
scanf("%s",p->name);
printf("请修改学生电话:");
scanf("%s",p->tel);

}
int main()
{
head=tmp1=0;
while(1)
{
printf("\n\n");
printf("\t\t*** 欢迎进入学生管理系统 ***\n");
printf("\t\t*** 请按要求输入相应信息 ***\n");
printf("\t\t*** 0.加载学生信息 ***\n");
printf("\t\t*** 1.查看学生情况 ***\n ");
printf("\t\t*** 2.增加学生信息 ***\n ");
printf("\t\t*** 3.删除学生记录 ***\n ");
printf("\t\t*** 4.查询学生记录 ***\n ");
printf("\t\t*** 5.保存学生信息 ***\n ");
printf("\t\t*** 6.修改学生信息 ***\n ");
printf("\t\t*** 7.退出 ***\n ");
printf("选择功能:");
scanf("%d",&n);
switch(n)
{

case 0:
Load();
break;
case 1:
OutPut();
break;
case 2:
InPut();
break;
case 3:
Delete();
break;
case 4:
Search();
break;
case 5:
Save();
break;
case 6: Change();
break;
case 7:
exit(0);
break;
default:
printf("暂无此功能");

}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang3577179
2012-06-10 · TA获得超过392个赞
知道小有建树答主
回答量:841
采纳率:0%
帮助的人:582万
展开全部
发来邮箱

我发给你

希望可以帮助你哦
追问
QQ邮箱 525827066
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式