/*第三方函数库 SGCHN3.0*//*该函数库一些函数说明/* C Head File. SGCHN30.h Definitions for SGCHN3.0 Run time Library Function. Copyright (c) 2004, 2005 SGPRO All Rights Reserved. Autor: YinShengge 作者: 殷圣鸽 Version: 3.0 Build Time: 2004 - 4 Maintain Time: 2005-5-14 Maintain Time: 2005-5-19 */extern void SGCHNinit();extern char *getsgchnversion(); /*获得SGCHN版本*/ extern int scanformat(char *formats, ...); /*控制台格式输入 与scanf类似*/extern int print(char *formats,...); /*控制台格式输出 与printf类似*/extern int *getsforcon(char *string); /*从控制台读入一行字符串,存入string*/extern char getcharforcon(); /*从控制台读入一个字符.回显*/extern int putsforcon(char *string); /*控制台输出一行字符*/extern int saveconsole(const char *filename);extern int sgchnquikstart(); /*SGCHN系统快速启动.*/#endif 再说明一下 ,函数: saveconsole(const char *filename) 可以将控制台的内容保存到 文件: filename中 changeconsolesize(int size);*/程序:#include<stdio.h>#include<stdlib.h>#include<dos.h>#define N 15typedef struct node{long num;char name[N];char sex[3];int age;char dept[N];char class[4];struct node *next;}link;link *L,*head;int num;void create_linklist(){char ch;link *new;head=(link *)malloc(sizeof(link));head->next=NULL;num=0;while(1){ new=(link *)malloc(sizeof(link)); if(!new) { print("overflow!"); exit(0); } print("\n输入第%d个学生的信息:",num+1); print("\n学号:"); scanformat("%ld",&new->num); print("\n姓名:"); scanformat("%s",new->name); print("\n性别:"); scanformat("%s",new->sex); print("\n年龄:"); scanformat("%d",&new->age); print("\n所在系:"); scanformat("%s",&new->dept); print("\n班级:"); scanformat("%s",&new->class); new->next=head->next; head->next=new; num++; print("\n继续?Y or N?:"); scanformat("%c",&ch); if(ch=='N'||ch=='n') break;}L=head->next;print("\n 成功的创建了学生信息表!\n");}void output_linklist(){ int i=num; print("\n此刻学生信息表中学生信息:\n"); while(i>0) { print("\n第%d个学生的信息:",i); print("\n 学号:"); print("%ld",L->num); print("\n 姓名:"); print("%s",L->name); print("\n 性别:"); print("%s",L->sex); print("\n 年龄:"); print("%d",L->age); print("\n所在的系:"); print("%s",L->dept); print("\n所在的班级:"); print("%s",L->class); i--; L=L->next; }L=head->next;}void insert_list(){int n,i=1;link *new;print("\n你想在哪个记录之前插入新的记录 :");scanformat("%d",&n);while(n>num||n<0){print("\n非法输入,请重新输入:");scanformat("%d",&n);}while(i<n-1){L=L->next;i++;}new=(link *)malloc(sizeof(link));if(!new) { print("溢出!"); exit(0); }print("\n 请输入学生的信息:\n");print("\n学号:");scanformat("%ld",&new->num);print("\n姓名:");scanformat("%s",new->name);print("\n性别:");scanformat("%s",&new->sex);print("\n年龄:");scanformat("%d",&new->age);print("\n所在系:");scanformat("%s",new->dept);print("\n所在班级:");scanformat("%s",new->class);new->next=L->next;L->next=new;print("已成功的加入了一个新的记录!\n");num++;L=head->next;}void delete_linklist(){link *q,*p;int i,j=1;print("\n你想删除哪个学生的信息:");scanformat("%d",&i);while(i>num||i<0){print("\n输入格式错误,请重新输入!");scanformat("%d",&i);}while(j<i-1){L=L->next;j++;}q=L;p=L->next;q->next=q->next->next;free(p);print("\n你已经成功的删除了该生的记录!\n");num--;L=head->next;}void show_menu(){print("\n====================================================");print("\n1.显示表中的信息");print("\n2.加入一个学生的信息");print("\n3.删除学生的信息");print("\n4.退出");print("\n====================================================\n");}main(){int choice;print("\n 现在的学生表是空的,开始创建学生表,请稍等.........");sleep(6);create_linklist();show_menu();while(1){print("请选择你的操作:");scanformat("%d",&choice); switch(choice) { case 1: output_linklist(); break; case 2: insert_list(); break; case 3: delete_linklist(); break; case 4: saveconsole("student.txt"); exit(0); default: print("\n错误的输入!"); break; }print("\n\n");show_menu();}}

评论