学生成绩管理系统c语言代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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->numnum)

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

相关文档
最新文档