C语言编程实习 《学生信息管理软件》设计和调试 一. 目的 学会C语言编程的基本步骤和环节,能够设计和编写简单的面向过程的C语言程序,为为进一步学习复杂的软件技术奠定必要的基础。 二.主要练习内容 (1) 在掌握基本C语言的基础上,进一步巩固C语言基础知识; a) 指针的理解和使用; b) 链表的操作; c) 文件的操作(文本文件和二进制文件); d) 人机交互的设计。 (2) 学习程序设计的一般方法; a) 软件工程的基本概念; b) 功能分析、功能(业务)流程图及功能结构图; c) 详细设计与程序流程图; (3) 编译和程序调试方法 d) 编译错误的分析和纠错; e) 程序调试方法。 三.实习题目 设计并实现一个学生信息管理工具软件,管理一个班的学生的基本信息。每个学生的信息名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、等。要求该软件: 1、 用链表实现学生信息的管理,每个学生的的信息保存到链表节点中。 2、 具有添加新学生信息的功能。 3、 具有删除功能。对查询的结果,可以选择学号来删除某个学生的信息; 4、 具有查询功能,查询显示某个学生的信息; 5、 具有修改特定学生信息的功能; 6、 具有显示所有学生信息的功能; 7、 系统完成每个学生的信息的添加、删除和修改后,需要及时保存到文件中,以防数据的丢失。 8、 程序启动时需要加载文件中的数据到新的链表中。 9、 程序具有人机交互功能,系统显示信息列表整齐、清晰,有提示。 (这里是主要的功能,你可以用自己的话,更简化地表达) 四.系统的功能流程图和功能结构图设计 画一下系统总的流程图,怎么画可以看看书,可以手画可以机画。 五.程序分析和调试经验总结 1、 程序分析 挑一个子程序对其原理进行说明。简单说明,不要找复杂的函数讲。 2、 调试经验总结
#include <stdio.h> #include <stdlib.h> #include <string.h> struct student { …… }; struct student *create() { ……… } void print( student *head) { ……….. } void main() { char ch; struct student *head; while(1) { printf("/t/t/t/t学生信息系统/n"); printf("/t1 创建学生信息联表/n"); ……. scanf(" %c",&ch); switch(ch) { case '1': head=create(); break; case '2': print(head); break; ……….. default: printf("/nPlease Enter Choice between 1 and 7"); break; } } 部分函数说明: p1=(struct student *)malloc(sizeof(struct student)); //这里创建了一个节点 printf("请输入姓名,电话,中间用空格隔开/n"); scanf("%s %d",&p1->name,&p1->age); 1. sizeof ( type-name ):求type-name数据类型在存中所占大小(字节数),返回字节数。 2. printf()、scanf():参考C语言书。 3. printf() 4. void *malloc( size_t size ):malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available. 因为返回的是空指针,所以用(struct student *)进行强制类型转换,变成一个指向student类型的指针。 5. int strcmp( const char *string1, const char *string2 ); Parameters string1, string2 Null-terminated strings to compare Libraries All versions of the C run-time libraries. Return Value The return value for each of these functions indicates the lexicographic relation of string1 to string2. Value Relationship of string1 to string2 < 0 string1 less than string2 0 string1 identical to string2 > 0 string1 greater than string2 Remarks The strcmp function compares string1 and string2 lexicographically and returns a value indicating their relationship.
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Student { char id[10]; char name[10]; char work[10]; char add[10]; char tel[10]; char phone[10]; char email[20]; Student* next; }; struct Student *head; FILE * fp; void create(Student* &head) { if(NULL != (head = (Student*) malloc(sizeof(Student)))) { head->next = NULL; printf("创建成功!/n"); } else { printf("创建失败!/n"); exit(0); } } void print( Student *head) { Student* p = head->next; while(NULL != p) { printf("****************/n"); printf("id:%s/n", p->id); printf("name:%s/n", p->name); printf("word:%s/n", p->work); printf("address:%s/n", p->add); printf("tel:%s/n", p->tel); printf("phone:%s/n", p->phone); printf("email:%s/n", p->email); p= p->next; } } void add(Student* head) { Student* tmp = (Student*) malloc(sizeof(Student)); printf("id:"); scanf("%s", tmp->id); printf("name:"); scanf("%s", tmp->name); printf("work:"); scanf("%s",tmp->work); printf("address:"); scanf("%s",tmp->add); printf("tel:"); scanf("%s",tmp->tel); printf("phone:"); scanf("%s",tmp->phone); printf("email:"); scanf("%s",tmp->email); Student * tail = head; while(tail->next != NULL) tail= tail->next; tail->next = tmp; tail = tmp; tail->next = NULL; } void query() { Student* p = head->next; printf("输入查找学生学号:/n"); char key[10]; scanf("%s", key); while(NULL != p && 0 != strcmp(key, p->id)) { p= p->next; } if(NULL == p) printf("查无此人!/n"); else { printf("该学生信息:/n"); printf("id:%s/n", p->id); printf("name:%s/n", p->name); printf("word:%s/n", p->work); printf("address:%s/n", p->add); printf("tel:%s/n", p->tel); printf("phone:%s/n", p->phone); printf("email:%s/n", p->email); } } void modify() { Student* p = head->next; printf("输入欲修改学生学号:/n"); char key[10]; scanf("%s", key); while(NULL != p && 0 != strcmp(key, p->id)) { p= p->next; } if(NULL == p) printf("查无此人!/n"); else { printf("该学生信息:/n"); printf("id:%s/n", p->id); printf("name:%s/n", p->name); printf("word:%s/n", p->work); printf("address:%s/n", p->add); printf("tel:%s/n", p->tel); printf("phone:%s/n", p->phone); printf("email:%s/n", p->email); printf("输入该学生新信息:/n"); printf("id:"); scanf("%s", p->id); printf("name:"); scanf("%s", p->name); printf("work:"); scanf("%s",p->work); printf("address:"); scanf("%s",p->add); printf("tel:"); scanf("%s",p->tel); printf("phone:"); scanf("%s",p->phone); printf("email:"); scanf("%s",p->email); } } void del() { printf("输入欲删除学生学号:/n"); char key[10]; scanf("%s", key); Student* p = head; Student* q = p->next; while(NULL != q && 0 != strcmp(key, q->id)) { p= p->next; q = q->next; } if(NULL == q) printf("查无此人!/n"); else { printf("该学生信息:/n"); printf("id:%s/n", q->id); printf("name:%s/n", q->name); printf("word:%s/n", q->work); printf("address:%s/n", q->add); printf("tel:%s/n", q->tel); printf("phone:%s/n", q->phone); printf("email:%s/n", q->email); printf("确认删除(y/else)/n"); getchar(); char ch; scanf("%c", &ch); if('y' == ch || 'Y' == ch) { p->next = q->next; free(q); printf("已删除!/n"); } } } void in() { if(NULL==(fp = fopen("c:/info.txt","r"))) { printf("文件导入失败!/n"); } else { create(head); Student * r = head; while(!feof(fp)) { Student* tmp = (Student*) malloc(sizeof(Student)); fscanf(fp, "%s", tmp->id); fscanf(fp, "%s", tmp->name); fscanf(fp, "%s", tmp->work); fscanf(fp, "%s", tmp->add); fscanf(fp, "%s", tmp->tel); fscanf(fp, "%s", tmp->phone); fscanf(fp, "%s", tmp->email); r->next = tmp; r = tmp; } r->next = NULL; fclose(fp); printf("导入成功!/n"); } } void out() { fp = fopen("c:/info.txt", "w+"); Student* p = head->next; while(NULL != p) { fprintf(fp,"%s/n", p->id); fprintf(fp,"%s/n", p->name); fprintf(fp,"%s/n", p->work); fprintf(fp,"%s/n", p->add); fprintf(fp,"%s/n", p->tel); fprintf(fp,"%s/n", p->phone); if(NULL == p->next) fprintf(fp,"%s", p->email); else fprintf(fp,"%s/n", p->email); p = p->next; } if(0 == fclose(fp)) printf("保存成功!/n"); else { printf("保存失败/n"); exit(0); } } void main() { char ch; while(1) { printf("/t/t/t/t学生信息系统/n"); printf("/t1 创建学生信息链表/n"); printf("/t2 导入文件/n"); printf("/t3 显示学生信息/n"); printf("/t4 添加新学生/n"); printf("/t5 查询学生/n"); printf("/t6 修改学生/n"); printf("/t7 删除学生/n"); printf("/t8 保存/n"); printf("/t0 退出/n"); scanf(" %c",&ch); switch(ch) { case '1': system("cls"); create(head); system("pause"); system("cls"); main(); break; case '2': system("cls"); in(); system("pause"); system("cls"); main(); break; case '3': system("cls"); print(head); system("pause"); system("cls"); main(); break; case '4': system("cls"); add(head); system("cls"); system("pause"); system("cls"); main(); break; case '5': system("cls"); query(); system("pause"); system("cls"); main(); break; case '6': system("cls"); modify(); system("pause"); system("cls"); main(); break; case '7': system("cls"); del(); system("pause"); system("cls"); main(); break; case '8': system("cls"); out(); system("pause"); system("cls"); main(); break; case '0': printf("Thank you , bye~/n"); exit(0); break; default: printf("/nPlease Enter Choice between 0 and 8"); system("pause"); system("cls"); main(); break; } } }
您还没有登录,请您登录后再发表评论
学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息...
基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码...
学生信息管理系统软件需求说明书 本需求规格说明书是为了开发学生信息管理系统而编写,主要面向系统分析员、实施员和最终用户。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用,也是项目完成后系统...
本论文共分为六章,介绍了学生信息管理系统的整个开发过程。阐述了课题的需求分析,介绍了系统的总体设计与实现,并在详细设计中给出了系统实现后的部分图片;最后笔者对开发该系统总结。采用VS2010和SQL2008作为...
简单的学生信息管理系统,可供提交大作业使用 功能包括.1.添加学生信息 2.删除学生信息 cout 修改学生信息 4.为学生添加课程 cout 导入学生信息 6.保存学生信息 cout 按学生学号排序 8.按学生姓名排序 cout 搜索...
学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip 学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip,...
android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android ...
学生 : 仅具有学生信息管理模块的查询及添加信息的权限* 教师 : 仅具有学生信息管理模块的所有权限,且在教师信息管理模块中只具有查询及添加信息的权限 除了源码还有教程以及视频部署和图文部署教程 视频教程地址:...
管理员端主要包括了基本信息管理、学生信息管理、教师信息管理、课程信息管理、信息查询和统计。教师端主要包括了成绩信息管理、成绩查询和统计。学生端主要包括了选课信息管理、我的成绩查看以及个人信息管理。整个...
ASP.NET课程-学生信息管理系统实验报告 编写学生信息管理系统,实现以下功能: 1. 学生信息管理:对在校学生信息进行添加、删除、修改、查询等操作。 2. 学生成绩管理:对已经录入的学生信息进行添加、删除、修改...
基于django框架的学生信息管理系统源码+数据库+文档说明。 基于Python的Django框架实现的学生信息管理系统,班主任登录可以对学生进行管理, 同时可以查看图形化界面的人员分布信息,可以更客观形象的看出学生的...
Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI...
Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于...
请设计与开发一个学生信息管理系统,完成以下工作: 1)需求分析,确定所开发系统要实现的主要功能和处理的数据。 2)系统设计,重点完成数据库的设计 (1)设计系统的功能结构 (2)数据库设计:画出E-R图,设计...
学生信息管理信息管理
C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip ...
(第四代)学生信息管理系统,没有中文乱码问题,部署简单,功能全。使用最新技术开发:eclipse2022,支持java:17or8,支持mysql:8.0or5.7or.56,tomcat:10 普通用户 具有按学号学好查询学生资料功能,普通用户必须先...
同时由于计算机和网络技术的普及,建立一个C/S或者B/S结构的学生信息管理系统之后,学生可以通过网络来查询自己的成绩并管理自己的信息,使得学生信息管理工作系统化、规范化高了学校管理学生信息的效率。...
相关推荐
学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息管理系统学生信息...
基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码基于SSM框架的学生信息管理系统源码...
学生信息管理系统软件需求说明书 本需求规格说明书是为了开发学生信息管理系统而编写,主要面向系统分析员、实施员和最终用户。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用,也是项目完成后系统...
本论文共分为六章,介绍了学生信息管理系统的整个开发过程。阐述了课题的需求分析,介绍了系统的总体设计与实现,并在详细设计中给出了系统实现后的部分图片;最后笔者对开发该系统总结。采用VS2010和SQL2008作为...
简单的学生信息管理系统,可供提交大作业使用 功能包括.1.添加学生信息 2.删除学生信息 cout 修改学生信息 4.为学生添加课程 cout 导入学生信息 6.保存学生信息 cout 按学生学号排序 8.按学生姓名排序 cout 搜索...
学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip 学生信息管理系统(python+GUI+mysql).zip,学生信息管理系统(python+GUI+mysql).zip,...
android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android studio 学生信息管理系统实现源码(安卓开发教程课后练习)android ...
学生 : 仅具有学生信息管理模块的查询及添加信息的权限* 教师 : 仅具有学生信息管理模块的所有权限,且在教师信息管理模块中只具有查询及添加信息的权限 除了源码还有教程以及视频部署和图文部署教程 视频教程地址:...
管理员端主要包括了基本信息管理、学生信息管理、教师信息管理、课程信息管理、信息查询和统计。教师端主要包括了成绩信息管理、成绩查询和统计。学生端主要包括了选课信息管理、我的成绩查看以及个人信息管理。整个...
ASP.NET课程-学生信息管理系统实验报告 编写学生信息管理系统,实现以下功能: 1. 学生信息管理:对在校学生信息进行添加、删除、修改、查询等操作。 2. 学生成绩管理:对已经录入的学生信息进行添加、删除、修改...
基于django框架的学生信息管理系统源码+数据库+文档说明。 基于Python的Django框架实现的学生信息管理系统,班主任登录可以对学生进行管理, 同时可以查看图形化界面的人员分布信息,可以更客观形象的看出学生的...
Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI+MySQL),Java学生信息管理系统(GUI...
Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于...
请设计与开发一个学生信息管理系统,完成以下工作: 1)需求分析,确定所开发系统要实现的主要功能和处理的数据。 2)系统设计,重点完成数据库的设计 (1)设计系统的功能结构 (2)数据库设计:画出E-R图,设计...
学生信息管理信息管理
C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip C++基于数据库Mysql学生信息管理系统.zip ...
(第四代)学生信息管理系统,没有中文乱码问题,部署简单,功能全。使用最新技术开发:eclipse2022,支持java:17or8,支持mysql:8.0or5.7or.56,tomcat:10 普通用户 具有按学号学好查询学生资料功能,普通用户必须先...
同时由于计算机和网络技术的普及,建立一个C/S或者B/S结构的学生信息管理系统之后,学生可以通过网络来查询自己的成绩并管理自己的信息,使得学生信息管理工作系统化、规范化高了学校管理学生信息的效率。...