}
void menu() //综合作业功能菜单 {
printf(\学 生 信 息 管 理 系 统\\n\ printf(\菜 单\\n\\n\
printf(\数据录入 \\n\
printf(\数据查询(学号)\\n\ printf(\数据查询(姓名) \\n\ printf(\数据删除\\n\ printf(\数据插入\\n\ printf(\数据排序\\n\ printf(\保存文件信息 \\n\printf(\退 出\\n\\n\ }
void read(void) {
long a;
printf(\学号:\ scanf(\ while(a>0) {
inser(a);
printf(\学号:\ scanf(\ } }
void inser(long b) {
Node *last,*current,*p; current=head;
while(current!=NULL&&b>current->student.num) {
last=current;
current=current->next; }
if(current==NULL||b
printf(\姓名,学分:\ p=(Node *)malloc(sizeof(Node)); p->student.num=b;
scanf(\p->next=NULL; if(current==head) {
p->next=head; head=p; } Else {
p->next=current; last->next=p; }
}
else if(b==current->student.num)
printf(\
}
void print() {
Node *p=head;
printf(\学号 姓名 成绩:\\n\ while(p!=NULL){
printf(\ p=p->next; }
void find(long b) {
Node *p=head;
while(p!=NULL&&b!=p->student.num) p=p->next;
if(!p) printf(\ else {
printf(\学号 姓名 成绩\\n\
printf(\ }
void searchname(char *s) {
Node *p=head; int flag=0;
printf(\学号 姓名 成绩:\\n\ while(p!=NULL) {
if(strcmp(p->student.name,s)==0) {
printf(\ flag=1; p=p->next; continue; }
else p=p->next; }
if(!flag) printf(\
}
Node * del(long n) {
Node *p=head,*last;
while(p->student.num!=n){ last=p; p=p->next; }
if(p==NULL) return p;
else if(p==head) head=p->next; else last->next=p->next; return head; }
void sort(int flag) {
/*flag==1 按分数排序 else 按学号排序*/ Node *p1,*p2,*k; float t1; long t2; char s[20];
for(p1=head;p1->next;p1=p1->next) {
k=p1;
for(p2=p1->next;p2;p2=p2->next)
if(flag==1&&k->student.score
t1=p1->student.score;
p1->student.score=k->student.score; k->student.score=t1; t2=p1->student.num;
p1->student.num=k->student.num; k->student.num=t2;
strcpy(s,p1->student.name);
strcpy(p1->student.name,k->student.name);
strcpy(k->student.name,s); } }
}
void Save(struct stud_type stu[]) /*保存模块*/ {
int i;
FILE *fp1; /*指向文件的指针*/ stu[0].jilu=r;
if((fp1=fopen(\ /*打开文件,并判断打开是否正常,wb指只写打开或建立一个二进制文件,只允许写数据*/ {
printf(\打开文件失败!----------\\n\\n\ return; }
printf(\开始存盘!\\n\ for(i=0;i if(fwrite(&stu[i],sizeof(struct stud_type),1,fp1)==0) printf(\数据存盘失败!----------\\n\\n\ fclose(fp1); printf(\存盘成功!----------\\n\ /*显示保存成功*/ } void duru(struct stud_type stu[]) /*数据读入模块*/ { int i; FILE *fp; /*指向文件的指针*/ if((fp=fopen(\ /*打开文件,并判断打开是否正常,rb指读写打开一个二进制文件,允许读和写*/ { printf(\打开文件失败!\\n\ return; } printf(\文件开始读取!\\n\ rewind(fp); for(i=0;i<=r;i++) { fread(&stu[i],sizeof(struct stud_type),1,fp); r=stu[0].jilu; } printf(\文件成功读取!\\n\ fclose(fp); r=stu[0].jilu; } 参考文献 C语言程序设计教程(第3版), 作者: 谭浩强,张基温, 版本: 第3版 数据结构(C语言版)例题详解与课程设计指导 主编 秦锋 袁志祥 软件工程导论 第五版 张海藩编著 C语言课程设计报告—学籍信息管理系统