学生成绩管理系统c语言代码.docx
- 文档编号:1384607
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:17
- 大小:99.12KB
学生成绩管理系统c语言代码.docx
《学生成绩管理系统c语言代码.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统c语言代码.docx(17页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统c语言代码
学生成绩管理系统c语言代码
#include
#include
#defineNsizeof(structSTH)
#defineGESHI "%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%s\n"
#definePRINTF "学号 姓名 性别 生 日 系别 班级 家庭住址\n"
structSTH*readfile();/*声明*/
intinsert(structSTH**);
intn=0;
structdt
{
intyear; /*全局变量*/
intmonth;
intday;
};
structSTH
{
longnum; /*学号不能以0开头*/
charname[9];
charsex[5];
structdtbirth;
charxi[20];
charban[20];
charadd[30];
structSTH*next;
}*head;
/*输入模块*/
input_message()
{
charch;
intflag=1;
do
{
if(insert(&head)!
=0)
n++; /*计数*/
else
printf("\n有相同的的学号!
");
printf("\n是否继续(
y/n)");
getchar();
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
printf("\n继续!
");
getch();
flag=1;/*标志程序不结束*/
}
else
flag=0;
}while(flag==1);
save_message();
printf("按任意键继续...");
getch();
}
/*insert()模块*/ /*被输入和插入模块所调用*/
intinsert(structSTH**h)
{
structSTH*p,*p0;
p=(structSTH*)malloc(N);
printf("\n请输入学号:
");
scanf("%ld",&p->num);
printf("\n请输入姓名:
");
scanf("%s",p->name);
printf("\n请输入性别:
");
getchar(); /*取走上一个留下来得‘\n’*/
scanf("%s",p->sex);
printf("\n请输入生日(年月日,用回车隔开):
\n");
scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day);
printf("\n请输入系别:
");
scanf("%s",p->xi);
printf("\n请输入班级:
");
scanf("%s",p->ban);
printf("\n请输入家庭住址:
");
scanf("%s",p->add);
p->next=NULL;
if(*h==NULL)
{
*h=p;
return1;
}
p0=*h;
if(p0->num>p->num)
{
p->next=p0;
*h=p;
return1;
}
while(p0->next!
=NULL&&p0->next->num
p0=p0->next;
if(p0->next==NULL)
{
p0->next=p;
return1;
}
elseif(p0->next->num==p->num)
{
free(p); /*有相同数据输入失败*/
return0;
}
else
{
p->next=p0->next;
p0->next=p;
return1;
}
}
/*读文件模块*/ /*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/
structSTH*readfile()
{
FILE*fp;
structSTH*p,*p0;
charch;
inti;
if((fp=fopen("STH.txt","r"))==NULL)
{
printf("\n不能读取文件!
\n");
returnNULL;
} /*注意要该*/
head=p=p0=(structSTH*)malloc(N);
fscanf(fp,"%d",&n);
fscanf(fp,"%c",&ch); /*为了使学号和信息个数分开加入一个‘/’*/
fscanf(fp,"%ld%s%s%d%d%d%s%s%s",
&p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);
p->next=NULL;
i=1; /*如果只有一个数时跳出*/
if(n!
=1)
{
do
{
p=(structSTH*)malloc(N);
fscanf(fp,"%ld%s%s%d%d%d%s%s%s",
&p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);
p0->next=p;
p0=p;
i++;
}while(i p0->next=NULL; } fclose(fp); returnhead; } /*插入模块*/ insert_message() { structSTH*p; intflag=1; charch; head=readfile(); do { if(insert(&head)! =0) { n++; save_message(); printf(""); } /*计数*/ else { printf("\n添加失败! \n有相同的的学号! "); save_message(); getch(); } printf("\n是否继续( y/n)"); getchar(); ch=getchar(); if(ch=='y'||ch=='Y') { printf("\n继续! "); flag=1;/*标志程序不结束*/ } else flag=0; }while(flag==1); printf("\n按任意键继续..."); getch(); } /*修改模块*/ renew_message() { structSTH*p; inti,flag=1; longnum; p=head=readfile(); if(head==NULL) { printf("读文件有误! "); getch(); } else { printf("\n请按输入要修改的学生的学号: "); scanf("%ld",&num); for(i=0;i { if(p->num==num) { p->num=num; printf("\n已找到要%ld号学生的信息! \n",num); printf("原姓名为%s 要修改为: \n",p->name); scanf("%s",p->name); printf("原性别为%s 要修改为: \n",p->sex); scanf("%s",p->sex); printf("原生日为%d/%d/%d 要修改为: \n",p->birth.year,p->birth.month,p->birth.day); scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day); printf("原系别为%s 要修改为: \n",p->xi); scanf("%s",p->xi); printf("原班级为%s 要修改为: \n",p->ban); scanf("%s",p->ban); printf("原家庭住址为%s 要修改为: \n",p->add);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 代码