http://blog.csdn.net/liuzongming1988
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define LEN sizeof(struct student) int n; /* printf("/**AUTHOR: Lzm ** 2013-10-28 ****/\n"); // printf("/**Student score record system****/\n"); // printf("/**Select what you want to do:****/\n"); // printf("/***0 : create a document! ******/\n"); // printf("/***1 : insert a new record!******/\n"); // printf("/***2 : delete a record! ******/\n"); // printf("/***3 : save the records! *******/\n"); // printf("/***4 : Open a exited file! ******/\n"); // printf("/***5 : quit the system! ******/\n"); */ struct student{ long num; float score; struct student *next; };// Don't forget the ";"!!!!!!!! //1.Create a new chain table list struct student * creat(void){ struct student *head; struct student *p1,*p2; char temp; n=0; p1=p2=(struct student *)malloc(LEN);/*CREAT A NEW UNIT*/ printf("Enter school_number and score:\n"); printf("Enter 0 0 to quit!\n"); scanf("%ld %f",&p1->num,&p1->score); head=NULL; while(p1->num !=0) // if the num is 0,it is the end of the input { n=n+1; //calculate the number of the member in list if(n==1) head=p1; //if it is the first one,give the address to the head else p2->next=p1; //give the new UNIT address to the last UNIT'S next p2=p1; //p2 is to save the address of the last. p1=(struct student *)malloc(LEN);// malloc() a new mem printf("Enter school_number and score:\n"); scanf("%ld %f",&p1->num,&p1->score); } p2->next=NULL; return (head); } //2.show a chain table list void print(struct student *head){ struct student* p; printf("Now ,These %d records are:\n",n); p=head; if(head!=NULL){ do{ printf("num:%-8ld score:%5.1f\n",p->num,p->score); p=p->next; //point to the next UNIT }while(p!=NULL); } } //3.delet the member in a chain table list struct student * del(struct student *head,long num){ struct student *p1,*p2,*p3; if(head==NULL){ printf("\n list is null\n"); goto end; }; p1=head; while(num!=p1->num&&p1->next!=NULL){ p2=p1; p1=p1->next; } if(num==p1->num){ if(p1==head) { p3=head;//to free head=p1->next; } else { p3=p1;//to free p2->next=p1->next; } free(p3);//free the malloc, free has no return value,it is a void func. printf("delete:%ld successful\n",num); n=n-1; } else printf("can't find the student: %ld\n",num); end: return (head); } //4.save the traintable into a file void save_train(struct student *head){ struct student *p; char address[40]; FILE *fp; if(head==NULL){ printf("\n list is null\n"); goto end; }; printf("Enter the path!\n"); scanf("%s",&address[0]); puts(address);////////////////// fp = fopen(address,"wb+");// create a new file fputs("school_number",fp); fputs(" score ",fp); p=head; if(head!=NULL){ do{ fputc('\n',fp); // enter a Enter fprintf(fp," %-10ld",p->num); //read the num to num fprintf(fp," %-3.2f",p->score); //read the score to score p=p->next; //point to the next UNIT }while(p!=NULL); } printf("save success to %s \n",address); fclose(fp);//you should close the file end: ; } //5.insert a chain table list from little to big struct student *insert(struct student *head,struct student *stu){ struct student *p0,*p1,*p2; p1=head; p0=stu; if(head==NULL){ head = p0; p0->next=NULL; } else{ while((p0->num > p1->num)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(p0->num <= p1->num){ if(head == p1) head = p0; else p2->next=p0; p0->next = p1; } else{//That is p1->next == NULL p1->next=p0; p0->next=NULL; } n=n+1; } return head; } //6.print the head messages!!! void print_message(){ printf("/**AUTHOR: Lzm ** 2013-10-28 ****/\n"); printf("/**Student score record system****/\n"); printf("/**Select what you want to do:****/\n"); printf("/***0 : create a document! ******/\n"); printf("/***1 : insert a new record!******/\n"); printf("/***2 : delete a record! ******/\n"); printf("/***3 : save the records! *******/\n"); printf("/***4 : Open a exited file! ******/\n"); printf("/***5 : quit the system! ******/\n"); } //7.import a file as chaintable list struct student * open_chain(void){ struct student *head; struct student *p1,*p2; FILE *fp; char address[40],a[20]; printf("Enter the path!\n"); scanf("%s",&address[0]); fp = fopen(address,"rb");// read a file if(fp == NULL) return 0; if(!feof(fp)){ fscanf(fp,"%s",&a[0]); fscanf(fp,"%s",&a[0]); } n=0; p1=p2=(struct student *)malloc(LEN);/*CREAT A NEW UNIT*/ head=NULL; while(!feof(fp)){ fscanf(fp,"%ld",&p1->num); fscanf(fp,"%f",&p1->score); n=n+1; //calculate the number of the member in list if(n==1) head=p1; //if it is the first one,give the address to the head else p2->next=p1; //give the new UNIT address to the last UNIT'S next p2=p1; //p2 is to save the address of the last. p1=(struct student *)malloc(LEN);// malloc() a new mem } p2->next=NULL; printf("read ok!"); close(fp); return (head); } //the main int main(){ struct student *p,*stu; long int num; char select = -1; char insert_quit=0; char delete_quit= 0; print_message(); scanf("%d",&select); putchar('\n'); while(1) {// main while switch (select) { case 0 : p=creat(); //create break; case 1 : { //insert stu = (struct student *)malloc(LEN); printf("Enter the num and score:\n"); printf("Enter 0 0 to quit!\n"); scanf("%ld%f",&stu->num,&stu->score); while(stu->num !=0){ p=insert(p,stu);//////////////// stu = (struct student *)malloc(LEN); printf("Input the num and score:\n"); scanf("%ld%f",&stu->num,&stu->score); }; break; } case 2 : printf("Enter the num:\n"); //delete printf("Enter 0 to quit\n"); scanf("%ld",&num); while(num !=0){ p=del(p,num); print(p); printf("Put into the num:\n"); scanf("%ld",&num); } break; case 3 : save_train(p); goto step1; break; //save case 4 : p=open_chain(); break; case 5 : default: goto endm; } select = -1; system("clear"); print_message(); print(p); step1: printf("/**Select what you want to do!****/\n"); scanf("%d",&select); putchar('\n'); }// end of main while endm: // return 0; }
相关推荐
《嵌入式系统原理-学生信息管理系统》 嵌入式系统是计算机科学中的一个重要领域,它涉及硬件和软件的结合,通常用于特定的功能或应用。在这个实验报告中,我们关注的是一个基于嵌入式系统原理的学生信息管理系统。...
3. **嵌入式操作系统**:介绍实时操作系统(RTOS)如FreeRTOS、VxWorks,以及Linux在嵌入式系统中的应用和移植。 4. **存储系统**:讲解RAM、ROM、闪存等存储设备在嵌入式系统中的角色和选择原则。 5. **外设接口*...
总的来说,《高教类课件:ARM9嵌入式系统设计-基于S3C2410与LINUX》是一套全面且实用的教程,涵盖了嵌入式系统开发的多个关键领域,旨在帮助学生和工程师掌握ARM架构处理器上的嵌入式Linux系统设计,为他们在物联网...
ARM架构支持多种操作系统,如Linux、Android等,同时也支持各种嵌入式实时操作系统。 #### 三、ARM编程基础 1. **汇编语言**:在嵌入式开发中,汇编语言是最接近硬件的语言之一,它允许开发者直接控制硬件资源。...
- **嵌入式linux系统架构**: 介绍嵌入式Linux系统的架构。 - **交叉工具链**: 介绍使用交叉编译器为嵌入式平台编译代码的方法。 - **Bootloader介绍**: 介绍Bootloader的概念和作用。 - **U-Boot介绍**: 详细...
### 嵌入式Linux应用程序开发课程大纲解析 #### 第一部分:嵌入式开发基础强化训练 本部分作为课程的入门阶段,旨在帮助学生建立起扎实的Linux基础与嵌入式开发技能,为后续深入学习奠定基石。 **1. Linux操作...
嵌入式Linux实验一主要目的是让学生掌握Linux操作系统中的一些基本命令和操作,这些技能对于日常的系统管理和开发工作至关重要。实验内容涵盖了从登录与退出系统,到文件和目录的管理,再到进程信息的查看,以及...
根据给定的实习日志,我们可以总结出一系列与Linux操作系统相关的基础知识点,这些知识点对于初学者来...通过这次实习经历,学生不仅掌握了Linux的基本命令,还巩固了C语言的基础知识,为后续的学习奠定了坚实的基础。
7. **应用程序开发**:在嵌入式Linux系统上,可以开发各种应用程序,如控制界面、数据处理等。课程会介绍C/C++编程和嵌入式编程实践。 8. **案例研究**:通过实际项目,学生将有机会将所学知识应用于实际产品设计,...
《C语言学生管理系统详解》 在编程领域,C语言以其高效、简洁的特性深受程序员喜爱,尤其在系统级编程和嵌入式开发中占据着重要地位。本篇将深入探讨一个基于C语言的学生管理系统,该系统在Linux环境下运行,并且...
首先,报告可能详细介绍了嵌入式Linux系统的构成,包括硬件平台、嵌入式Linux内核、文件系统以及用户空间应用程序。在硬件层面,可能涉及到微处理器的选择、内存管理以及I/O接口的设计。对于内核,学生可能会学习到...
嵌入式系统的期末复习题库通常会包含历年试题、习题集和试卷,涵盖了ucOSII和Linux的基础概念、系统调用、编程模型以及实际应用。通过深入研究这些资料,学生可以全面了解ucOSII和Linux的运行机制,提升解决实际问题...
在Linux环境下,C语言结合SQLite和GTK+可以创建一个简单的学生成绩管理系统。这个系统适合初学者学习,有助于理解数据库操作、图形用户界面设计以及如何将两者整合。 首先,让我们详细了解一下涉及的关键技术: 1....
在Linux系统中,使用C语言实现带有图形界面的学生成绩管理系统是一项常见的编程挑战,它涉及到多方面的技术知识点。下面将详细阐述这个项目所涵盖的关键技术及其应用。 1. **C语言编程**:C语言是系统级编程的基础...
实习报告主要围绕Linux嵌入式系统的理解和实践,通过一系列的学习和任务,旨在让学生深入理解嵌入式系统的核心技术,包括ARM硬件体系结构、Linux操作系统、C语言编程、系统编程、处理器架构、驱动程序开发以及项目...
在Linux环境下,使用C语言开发一个学生管理系统是一个经典的编程练习,它可以帮助初学者掌握C语言的基础以及文件操作、结构体、动态内存管理等高级概念。下面将详细解析这个项目涉及的知识点。 首先,C语言是计算机...