精品文档
第4章 与文件管理有关的系统功能调用实践作业
参照“强化实践能力培养课程内容”中“文件操作实践能力培养考核选例”程序,请构造一个能管理文本文件的学生成绩表的简单数据库管理系统。设文本文件的学生成绩表中每条学生成绩记录有3个字段构成:学号20个字节,姓名20个字节,成绩10个字节,字段间用空格分割对齐。简单数据库管理系统具有基本的功能有:
追加一条记录,(仅允许文件主) 按学号读出一条记录, 按学号升序列出所有记录.
(提示:可建立一个学生成绩表文件和一个以学号为主键的索引文件。)
答:实验代码及说明 #include
#include
#define LEN sizeof(struct score) #define DEBUG #include
score* load(score *head) { score *p1,*p2; int m=0; char filepn[10]; FILE *fp;
printf(\请输入文件路径机文件名\\n\scanf(\
if((fp=fopen(filepn,\{ printf(\不能打开文件\\n\ exit(0); }
p1=(score *)malloc(LEN); head=NULL;
精品文档
精品文档
while(!feof(fp)){ n=n+1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(score *)malloc(LEN); fscanf(fp,\ } p2->next=p1; p1->next=NULL; n++; fclose(fp); return head; }
//追加
score *append(score *head) { score *p1,*p2,*p3; p3=(score *)malloc(LEN);
printf(\输入学生信息:\\n\
printf(\记录号 学号 姓名 成绩\\n\
scanf(\p1=head;
if(head==NULL)
{//如果链表为空 head=p3; p3->next=NULL; } else{ if(p1->next==NULL) { p1->next=p3; p3->next=NULL; }else{ }
}
while(p1->next!=NULL)//若是还没有到尾端的话 { p2=p1; p1=p1->next; }
p1->next=p3; p3->next=NULL;
精品文档
精品文档
n++; return head; }
score * insert(score *head){ score *p1,*p2,*p3;
p3=(score *)malloc(LEN); printf(\输入学生信息:\\n\
printf(\记录号 学号 姓名 成绩\\n\
scanf(\ p1=head; if(head==NULL) {//如果链表为空 head=p3;
p3->next=NULL; } else{
if(p1->next==NULL) {
p1->next=p3; p3->next=NULL; }else{
while(p1!=NULL&&strcmp(p1->no,p3->no)<=0)//若是还没有到尾端的话 {
p2=p1;
p1=p1->next; }
//p1->next=p3; //p3->next=NULL; p2->next=p3; p3->next=p1; } } n++; return head; }
score *del(score *head) { score *p1,*p2,*p3;
p3=(score *)malloc(LEN);
printf(\输入删除学生信息:\\n\ printf(\记录号:\\n\ scanf(\精品文档