/*第三方函数库 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 15 typedef 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(); } }

评论