学生成绩管理系统c语言代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#define N sizeof(struct STH)
#define GESHI"%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%s\n"
#define PRINTF"学号性别生日系别班级家庭住址\n"
struct STH* readfile();/*声明*/
int insert(struct STH**);
int n=0;
struct dt
{
int year;/*全局变量*/
int month;
int day;
};
struct STH
{
long num;/*学号不能以0开头*/
char name[9];
char sex[5];
struct dt birth;
char xi[20];
char ban[20];
char add[30];
struct STH* next;
}*head;
/*输入模块*/
input_message()
{
char ch;
int flag=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()模块*//*被输入和插入模块所调用*/ int insert(struct STH**h)
{
struct STH *p,*p0;
p=(struct STH*)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;
return 1;
}
p0=*h;
if(p0->num>p->num)
{
p->next=p0;
*h=p;
return 1;
}
while(p0->next!=NULL&&p0->next->num
p0=p0->next;
if(p0->next==NULL)
{
p0->next=p;
return 1;
}
else if(p0->next->num==p->num)
{
free(p);/*有相同数据输入失败*/
return 0;
}
else
{
p->next=p0->next;
p0->next=p;
return 1;
}
}
/*读文件模块
*//*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/
struct STH *readfile()
{
FILE *fp;
struct STH *p,*p0;
char ch;
int i;
if((fp=fopen("STH.txt","r"))==NULL)
{
printf("\n不能读取文件!\n");
return NULL;
}
/*注意要该*/
head=p=p0=(struct STH *)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.mont