(完整版)C语言程序设计——学生信息管理系统
C语言课程设计---学生信息管理系统
C程序设计报告书系部名称:电子工程学院学生姓名:专业名称:电子信息工程班级:学号:时间:2010年6月21日至2010年7月2日实验题目学生信息管理系统实验目的:了解利用c语言进行程序设计,通过利用模块化利用数组设计程序的方法,培养能够熟练应用该方法进行程序的设计,进而提高运用c语言编辑程序的能力。
一、实验内容通过c语言为主体,编写了一套学生成绩管理系统,该系统具有7项主要功能:分别为输入、显示、排列、修改、删除、添加、查询。
利用改程序可以在实际中处理问题,减少人工操作中的失误,以方便在实际工作可以利用此程序进行信息处理。
二、需求分析本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。
程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择对所开发系统功能的描述,想要实现的目标,测试数据等。
四、概要设计(1、方案设计对系统进行分析,给出结构图2、模块功能说明对各个模块进行功能的描述)2.各功能模块说明:1、学生信息录入功能(学生信息用文件保存)--输入;2、修改,删除,添加学生信息;3、从文件中读取学生信息,查询学生信息,可按照学号查询;4、从文件中读取学生信息,按储存量输出信息;5、按照成绩给学生排序;五、详细设计及运行结果1.学生管理系统模块图2.程序可以满足以下功能:1.各模块间通过菜单切换和调用2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。
3.程序能够保证各模块功能的独立和数据共享。
4.相近功能以级联菜单的形式集成。
六、调试情况,设计技巧及体会两周的课程设计,通过学习,创建模块,到组织成为一个系统,让我受益匪浅,在其中,也遇到过许多问题,其中有些经过多次的调试仍不见效,让我也感到很头疼。
学生信息管理系统c语言程序设计
学生信息管理系统c语言程序设计
一、主要思想。
(1)使用结构体数组来存储学生信息;
(2)创建查询、添加、修改、删除等操作函数来实现学生信息的管理;
(3)设置菜单,程序通过switch-case语句来识别用户输入,实现
不同的操作。
二、具体实现。
(1)定义一个学生信息的结构体,存储学号、姓名、年龄、性别等
信息;
(2)为学生信息管理系统添加菜单,当用户输入要求时,通过
switch语句来调用响应的函数;
(3)定义查询函数:用户可以根据学号、姓名或性别查询学生信息;
(4)定义添加函数:根据用户输入添加学生信息,需要排重处理;
(5)定义修改函数:根据学号查询到学生的信息后,用户可以修改
相应的内容;
(6)定义删除函数:根据学号查询学生信息后,用户可以删除学生
信息;
(7)定义退出系统函数:用户输入0,就可以退出学生信息管理系统。
c语言程序设计学生信息管理系统
c语言程序设计学生信息管理系统学生信息管理是学校管理系统中非常重要的一部分,因此我们需要一个高效的系统进行管理。
在此背景下,C语言程序设计可以成为一个非常有用的工具。
首先,我们需要定义学生信息的数据结构。
通常情况下,学生信息包括姓名,性别,年龄,出生日期,籍贯,班级等等。
我们可以使用结构体来定义这个数据类型,代码如下:```typedef struct{char name[20];char sex[10];int age;char birth[20];char place[20];char clazz[20];}STUDENT;```其中,我们使用了char数组来存储字符串类型的数据。
在使用数组之前,我们需要考虑数据大小,以免溢出。
在这里,我们将数组的大小设置为了20。
接下来,我们需要实现学生信息的输入和输出功能。
我们可以使用scanf函数来输入信息,使用printf函数来输出信息。
代码如下:```void input_stu(STUDENT *stu){printf("Input Student's Name:");scanf("%s",stu->name);printf("Input Student's Gender:");scanf("%s",stu->sex);printf("Input Student's Age:");scanf("%d",&stu->age);printf("Input Student's Birth:");scanf("%s",stu->birth);printf("Input Student's Place:");scanf("%s",stu->place);printf("Input Student's Class:");scanf("%s",stu->clazz);}void output_stu(STUDENT *stu){printf("Name:%s\n",stu->name);printf("Gender:%s\n",stu->sex);printf("Age:%d\n",stu->age);printf("Birth:%s\n",stu->birth);printf("Place:%s\n",stu->place);printf("Class:%s\n",stu->clazz);}```注意,在使用scanf函数输入字符串类型的数据时,应该使用%s 格式控制符。
c语言课程设计报告---学生信息管理系统
题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
C语言课程设计学生信息管理系统方案
c语言及数据结构与算法课程设计题目 :学生信息管理系统专业:姓名:学号:同组其他学生 ( 学号 ) :2021年月日目录一、需求解析. (3)二、整体设计. (4)三、详细设计. (5)四、调试与测试. (6)五、测试结果. (7)六、用户手册. (9)七、附录 (9)一、需求解析每年九月份都有大量再生抵达学校报道,使学校管理学生工作量增大,为此我们设计一学生信息管理系统,学生信息包括:学号,,年龄,性别,出生年月,地址,, E-mail 等。
使之能供应予下功能:〔1〕系统以菜单方式工作〔2〕学生信息录入功能 --- 输入〔3〕学生信息阅读功能 --- 输出〔4〕盘问、排序功能 --- 算法按学号盘问、按盘问、学生信息的删除与修改〔可选项〕二、整体设计组成框图主菜单欢送界面录入按姓名删除主函数盘问按学号阅读退出更正流程图开始密码可否正确Y主菜单1 录入学生信息2 阅读学生信息3----盘问学生信息删除4----删除学生信息5----更正学生信息0----退出系统阅读更正退出结束录入开始申请新空间输入各项数据显示数据结束N重新输入Y密码可否正确录入盘问阅读开始指针 p 指向头结点输出指针的数据P=p->nextNP==NULL?Y结束盘问更正 &删除输入姓名或学号输入要删除或修改的学号P=p->next P 指针的学号与姓名可否与输N P 指针的学号N 入的相同?与输入的可否相同YY输出数据更正p 的各项数据或将p=p->next结束结束三、详细设计主函数经过在 while 循环结构中嵌入switch 分支结构实现操作选择功能。
(1〕 Record 录入函数建立一个包括学生全部信息的结构体,申请空间,其指针为 p0,存入学生各项对应的数据。
(2〕 Insert 插入函数 :按输入的数据储藏在一个 stu 种类的指针里,假设原来链表里没有元素,那么将此作为第一个元素;假设原来的链表里有元素,那么将指向头结点指针储藏的学号与头指针下一个的学号大小进行比较,小的在前大的在后,此后指向头结点处...移,进行比较,直到尾结点为止。
学生信息管理系统详细设计说明c语言
学生信息管理系统详细设计说明c语言如何设计一个学生信息管理系统。
一、需求分析学生信息管理系统是以管理学生信息为主要功能的软件系统。
在设计之前,我们需要了解用户的需求。
通过对用户需求的分析,我们得出以下功能模块:1、学生信息录入:录入学生信息,包括学号、姓名、性别、出生日期、班级等信息。
2、学生信息查询:根据学号、姓名等关键字进行学生信息的查询,支持模糊查询。
3、学生信息修改:可以修改学生的相关信息,包括学号、姓名、班级等。
4、学生信息删除:删除已经录入的学生信息。
5、学生成绩查询:根据学号查询该学生的相关成绩信息。
6、学生成绩录入:录入学生的相关成绩信息,包括语文、数学、英语等。
二、系统设计在需求分析的基础上,我们可以开始进行系统设计。
1、数据结构设计(1)学生信息结构体/* 学生信息结构体*/typedef struct {/* 学号*/char id[11];/* 姓名*/char name[21];/* 性别*/char sex[3];/* 出生日期*/char birthday[11];/* 班级*/char class[21];} Info;(2)学生成绩结构体/* 学生成绩结构体*/typedef struct {/* 学号*/char id[11];/* 语文成绩*/int chinese;/* 数学成绩*/int math;/* 英语成绩*/int english;} Score;2、功能模块设计(1)学生信息录入在学生信息录入模块中,我们需要设计一个函数来进行学生信息的录入。
void AddInfo(Info *info);该函数的参数是学生信息结构体的指针,通过该参数可以将学生信息录入到系统中。
在该函数中,我们需要进行如下操作:1、提示用户输入学生信息;2、从键盘获取用户输入;3、将用户输入保存到结构体中;4、将结构体保存到文件中。
(2)学生信息查询在学生信息查询模块中,我们需要设计一个函数来查询学生信息。
C语言--学生信息管理系统设计
目录1.前言 (2)2.设计目的 (2)3.功能描述 (2)4.总体设计 (3)1、功能模块设计 (3)2、数据结构设计 (4)3、函数功能描述 (5)5.程序实现 (7)1、源程序(略) (7)2、运行结果 (7)6.小结 (10)1.前言在计算机技术和互联网飞速发展的今天,计算机成为了现代生活中一个重要的工具。
学生信息管理系统利用计算机对学生信息进行统一管理,为学校老师的工作提供便利。
本程序是利用结构数组实现此学生信息管理系统。
2.设计目的利用本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。
为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。
3.功能描述如图1所示,学生信息管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成。
图1 学生信息管理系统功能模块(1)输入记录模块。
输入记录模块主要完成将数据存入数组中的工作。
在此学生信息管理系统中,记录可以从以文本形式存储的数据文件中读入,也可从键盘逐个输入记录。
当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。
(2)查询记录模块。
查询记录模块主要完成在数组中查找满足相关条件的记录。
在此学生信息簿管理系统中,用户可以按照学生姓名或学生学号在数组中进行查找。
若找到该记录,则显示出此记录的信息;否则,显示出未找到该记录的提示信息。
(3)更新记录模块。
更新记录模块主要完成对记录的维护。
在此电话簿管理系统中,它实现对记录的修改、删除操作。
一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。
(4)输出记录模块。
输出记录模块主要完成两个任务。
第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。
用c语言编写的一个学生信息管理系统
路漫漫其修远兮,吾将.上F而求索・百度文库用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对■链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h n#include ,,conio.h Hjiemian();struct student(char name[50];char sex[5];int age;char num[50];float scorel;float score2;float score3;float sum;float ave;}stu[50],del;void gnl()(int i=0;char numl;for(i=0;i<50;i++)(printf「请输入要添加的学生资料:\n“);printf(“学号巧;scanf("%s",stu[i].num);printf("姓名巧;scanf("%s",stu[i].name);printf(“性别巧;scanf("%s",&stu[i].sex);printf(“年龄巧;scanf("%d",&stu[i].age);11目上下而求索•百度文库printf(”请输入学生的三门成绩:'俏;printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语巧;scanf(,,%f,,,&stu[i].score3);printf("是否继续添加:y/n\n“); scanf(,,%c,,,&numl);scanf(,,%c,,,&numl);if(numl==,N, 11 numl=="n,){system(,,cls"); jiemian();)))void gn2()(int i;char num[50];printf「请输入要查找的学生学号:\n“);scanf(,,%s,,/num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==O) (stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum^;printf(',%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);break;)if(i==50)printf("查找不到!请重新输入!\n");22路漫漫其修远兮,吾将上F而求索・百度文库getch(); systemf'cls"); jiemian();)void gn3()(char numlJ=0;printf("请输入要修改的学生学号:\n“);scanf(,,%s,,/stu[i].num);printf(,l%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);printf("姓名门;scanf(,,%s,,/stu[i].name);printf(“性别门;scanf(,,%s,,/stu[i].sex);printf("年龄门;scanf(,,%d,,,&stu[i].age);printf(“请输入学生的三门成绩:\n“);printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语门;scanf(,,%f,,,&stu[i].score3);printf("是否继续修改:y/n?\n“);scanf(,,%c"/&numl);scanf(,,%c,\&numl);if(numl==,N, 11 numl==,n,)systemf'cls"); jiemian();)void gn4()(int i;char num[50];printf("请输入要删除的学生学号:\n“);scanf(,,%s,,,num);for(i=0;i<50;i++) 33if(strcmp(num,stu[i].num)==O)(printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n“); break;)if(i==50)printf ("您输入的信息不存在!\n”);getch();system("cls"); jiemian();)void gn5()(int i=0;stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t平均成绩\n");for(i=0;i<50;i++)(if(stu[i].age==O)break;printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);)printf("按任意键返回.getch();system(,,cls n);jiemian();)void gn6()(FILE *fp;int i;char filename[50];printf(,,\n N); 44路漫漫其修远兮,吾将上F而求索・百度文库printf(,,\n M);printf(“请输入要保存的文件名:");scanf(”%s”,filename);if((fp=fopen(filename/,wb,,))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++)(if(fwrite(&stu[i],sizeof(struct student),l,fp)!=l) printf("文件保存失败!\n”);)fclose(fp);printf (“文件己保存!\n“);printf。
c语言课程设计学生信息管理系统
2>N-S流程图三、详细设计说明:1>头文件#include <stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>2>数入口说明main();主函数;void menu();主菜单界面;void add();添加新的学生信息;void print(int i);打印学生信息;void scan();查找学生信息;void res();检索学生信息界面;void res_name();按姓名检索;void res_num();按学号检索;void del(int i);删除学生信息;void modify(int i);修改学生信息;void fileopen();打开文件;void filesave();保存文件;2>调用关系4.调试与测试: 编译工具1.C/C++程序设计学习与实验系统2.Tcmain() filesave()res()res_num()res_name()modify(int i)del(int i)menu()3.VC++6.0均通过调试!主菜单添加新的学生信息浏览所有学生信息检索信息库继续查找下一条修改学生信息删除信息库所有记录五、调试中所遇到的问题及解决方法1>问题:程序退出后,再次打开,上次输入的数据无法保存。
解决:调用fileopen()与filesave()保存文件数据,方便第二次打开程序时仍能调用上次输入的数据。
2>问题:跳出的界面与选择分支中的对应项不符合。
解决:改getchar()为getch(),头文件中加”conio.h”.因为getchar()从输入输出流中一次只能读取一个字符,而且需要以回车来确认输入。
本文件中多次用到getchar(),键盘缓冲区的’\n’会被下次调用getchar()时接收。
而getch()则不会,从键盘上读入一个数据,不给回显,不需要回车确认,按下键就实现了函数。
C语言学生信息管理系统(完整版)
#define PRINT0 printf("name:%s\nsex:%s\nage:%d\nID_card:%d\naddress:%s\n",st[i].name,st[i].sex,st[i].age,st[i] .ID_card,st[i].addr)#define PRINT1 printf("prefession:%s\nstudent_number:%d\n*****score*****\nwuli:%d\n",st[i].prefession,st[i] .student_number,st[i].score.wuli)#define PRINT2 printf("gaoshu:%d\nyingyu:%d\ntiyu:%d\naverage: %d\n",st[i].score.gaoshu,st[i].score.yingyu,st[i ].score.tiyu,st[i].score.aver)#define print1 printf("________________________________")#define N 2#include "string.h"#include "stdio.h"int sum=0;struct score{int wuli;int gaoshu;int yingyu;int tiyu;int aver;};struct message{ char name[10];int age;char sex[5];int ID_card;char addr[30];char prefession[30];int student_number;struct score score;}st[100];/*************write message*************/write_message(){ int flag;char chioce;do{system("cls");flag=2; sum++;printf("_______________________________");printf("please input student's message:\n");printf("\n");print1;printf("%dth student message:",sum);print1;printf("\nname:");scanf("%s",st[sum].name);printf("\nsex:");scanf("%s",st[sum].sex);printf("\nage:");scanf("%d",&st[sum].age);printf("\nID_card:");scanf("%d",&st[sum].ID_card);printf("\naddress:");scanf("%s",st[sum].addr);printf("\nprefession:");scanf("%s",st[sum].prefession);printf("\nschool number:");scanf("%d",&st[sum].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[sum].score.wuli);printf("\ngaoshu:");scanf("%d",&st[sum].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[sum].score.yingyu);printf("\ntiyu:");scanf("%d",&st[sum].score.tiyu);printf("\naverage:");scanf("%d",&st[sum].score.aver);do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*************save message****************/save_message(){ FILE *fp;int i;if((fp=fopen("student.txt","wb"))==NULL){printf("read error \n");printf("press any key back to menu\n");getch();exit(1);}for(i=0;i<sum;i++)if(fwrite(&st[i],sizeof(struct message),1,fp)!=1){printf("write error\n");fclose(fp);}fclose(fp);printf("\n********___OK!___**********\n___press any key back___");sum=i;bioskey(0);}/***************add message*****************/add_message(){int i,j,flag; char chioce;i=0;j=sum-1;flag=0;do{ system("cls");i++; j++;print1;printf("add %dth student's meaasge\n",i);print1;printf("\nname:");scanf("%s",st[j].name);printf("\nsex:");scanf("%s",st[j].sex);printf("\nage:");scanf("%d",&st[j].age);printf("\nID_card:");scanf("%d",&st[j].ID_card);printf("\naddress:");scanf("%s",st[j].addr);printf("\nprefession:");scanf("%s",st[j].prefession);printf("\nstudent_number:");scanf("%d",&st[j].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[j].score.wuli);printf("\ngaoshu:");scanf("%d",&st[j].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[j].score.yingyu);printf("\ntiyu:");scanf("%d",&st[j].score.tiyu);printf("\naverage:");scanf("%d",&st[j].score.aver);printf("\n\nweather add %dth student's message: \n",i+1);do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;}while(1);}while(flag==1);sum=j+1;save_message();}/**********inqiure message******/inqiure_message(){int chioce;do{system("cls");printf("**********choose 0-3**********\n\n\n");printf(" 1:name inquire\n\n\n");printf(" 2:IDcard inqiure\n\n\n");printf(" 3:student_number\n \n\n");printf(" 0:back menu\n\n\n");scanf("%d",&chioce);switch(chioce){case 1: name_inqiure();break;case 2: ID_card_inqiure();break;case 3: grade_inqiure();break;case 0:break;}}while(chioce!=0);}/**********name inqiure*********/name_inqiure(){char NAME[30];int i; int flag,k;char chioce;do{ system("cls");k=0;printf("please input the message you inqiure");printf("\nname:");scanf("%s",NAME);getchar();printf("\n");for(i=0;i<sum;i++){if(strcmp(st[i].name,NAME)==0){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/**********IDcard inqiure*********/ID_card_inqiure(){int card;int i; int flag,k;char chioce;do{ clrscr(); k=0;printf("please input the message you inqiure");printf("\nIDcard:");scanf("%d",&card);getchar();printf("\n");for(i=0;i<sum;i++){if(st[i].ID_card==card){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/*********grade inqiure***********/grade_inqiure(){int GRADE;int i; int flag,k;char chioce;do{ system("cls");k=0;printf("please input the message you inqiure");printf("\nstudent_number:");scanf("%d",&GRADE);getchar();printf("\n");for(i=0;i<sum;i++){if(st[i].student_number==GRADE){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/*********change message**********/change_message(){char pre[30],chioce;int i,gra,flag,num,s;s=0;do{system("cls");printf("please input message you want to change\n ");printf("student_number:");scanf("%d",&gra); getchar();for(i=0;i<sum;i++){if(st[i].student_number==gra){PRINT0;PRINT1;PRINT2;printf("\n********input message you want to change********\n");printf("0:name***1:sex***2:age***3:ID_card***4:address***\n5:prefession***6:wuli***7:stud ent_number***8\n:gaoshu***9:yingyu***10:tiyu***11:average***________\n");printf("choose 0-11\n");scanf("%d",&num); getchar();switch(num){case 0: printf("input the name changed\n");scanf("%s",st[i].name); getchar(); break;case 1: printf("input the sex changed\n");scanf("%s",st[i].sex); getchar(); break;case 2: printf("input the age changed\n");scanf("%d",&st[i].age); getchar(); break;case 3: printf("input the ID_card changed\n");scanf("%d",&st[i].ID_card); getchar(); break;case 4: printf("input the address changed\n");scanf("%s",st[i].addr); getchar(); break;case 5: printf("input the prefession changed\n");scanf("%s",st[i].prefession); getchar(); break;case 6: printf("input the wuli_score changed\n");scanf("%d",&st[i].score.wuli); getchar(); break;case7: printf("input the student_number changed\n");scanf("%d",&st[i].student_number); getchar(); break;case 8: printf("input the gaoshu_score changed\n");scanf("%d",&st[i].score.gaoshu); getchar(); break;case 9: printf("input the yingyu_score changed\n");scanf("%d",&st[i].score.yingyu); getchar(); break;case 10: printf("input the tiyu_score changed\n");scanf("%d",&st[i].score.tiyu); getchar(); break;case 11: printf("input the average_score changed\n");scanf("%d",&st[i].score.aver); getchar(); break;default: printf("input error\n"); break;}printf("\n*********the changed message*********\n\n");PRINT0;PRINT1;PRINT2;s=1;}}if(s!=1) printf("without message you want to change\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*********delete message**********/delete_message(){ int GRADE;int i,j,flag1,flag;char chioce1,chioce2;flag1=3;flag=3;do{ system("cls");printf("please input student's student_number you want to delete\n");printf("student_number:");scanf("%d",&GRADE); getchar();for(i=0;i<sum;i++)if(st[i].student_number==GRADE){do{PRINT0;PRINT1;PRINT2;printf("\n******************************\n_________________ _________________\n");printf("press y/Y deleted:\npress n/N cancel:\n");scanf("%c",&chioce1);getchar();system("cls");if(chioce1=='y'||chioce1=='Y') flag1=1;else if(chioce1=='n'||chioce1=='N') return;else {printf("***input error***\n___press any ker return___\n"); bioskey(0);}}while(flag1!=1);for(j=i;j<sum;j++){ st[j]=st[j+1];flag=2;printf("message was deleted\n");sum-=1; }}if(flag!=2) printf("without message you want to delete\n");do{printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce2);printf("****************************\n");if(chioce2=='y'||chioce2=='Y') {flag=1; break;}else if(chioce2=='n'||chioce2=='N') {flag=0; break;}else {system("cls");printf("input error\n");}print1;printf("\n");}while(1);}while(flag==1);save_message();}/************insert message*************/insert_message(){ int chioce,flag,i; flag=2;do{system("cls");printf("please input the number of people you insert\n");scanf("%d",&chioce);if(chioce>=sum){printf("xin xi pai zai zui hou ");chioce=sum;}for(i=sum;i>chioce;i--) st[i]=st[i-1];printf("\nplease input message you insert");printf("\nname:");scanf("%s",st[i].name);printf("\nsex:");scanf("%s",st[i].sex);printf("\nage:");scanf("%d",&st[i].age);printf("\nID_card:");scanf("%d",&st[i].ID_card);printf("\naddress:");scanf("%s",st[i].addr);printf("\nprefession:");scanf("%s",st[i].prefession);printf("\ngrade:");scanf("%d",&st[i].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[i].score.wuli);printf("\ngaoshu:");scanf("%d",&st[i].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[i].score.yingyu);printf("\ntiyu:");scanf("%d",&st[i].score.tiyu);printf("\naverage:");scanf("%d",&st[i].score.aver);sum+=1;do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*********school_number_order***********/grade_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].student_number>st[j].student_number){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("grade order from min to max\n");for(i=0;i<sum;i++){ print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);bioskey(0);}/***********wuli score order***************/wuli_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.wuli>st[j].score.wuli){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("wuli score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********gaoshu score order***************/gaoshu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.gaoshu>st[j].score.gaoshu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("gaoshu score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********yingyu score order***************/yingyu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.yingyu>st[j].score.yingyu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("yingyu score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********tiyu score order***************/tiyu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.tiyu>st[j].score.tiyu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("yitu order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********average score order***************/average_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.wuli>st[j].score.wuli){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("average score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/********order message****************/order_message(){int chioce;do{system("cls");printf("**********choose 0-6**********\n\n");printf(" 1:grade order\n\n");printf(" 2:wuli score order\n\n");printf(" 3:gaoshu score order\n \n");printf(" 4:ying yu score order\n\n");printf(" 5:tiyu score order\n\n");printf(" 6:average score order\n\n");printf(" 0:back menu\n\n");scanf("%d",&chioce);switch(chioce){case 1: grade_order();break;case 2: wuli_order();break;case 3: gaoshu_order();break;case 4: yingyu_order();break;case 5: tiyu_order();break;case 6: average_order();break;case 0:break;}}while(chioce!=0);}/**********answer secretory***********/mima_message(){int flag;char answer[10];char secret[10]="abcd";flag=2;do{system("cls");printf("\n______________________mi ma wei 'abcd'________________\n\n");printf("______________________qing shu ru mi ma:");scanf("%s",answer);getchar();if(strcmp(secret,answer)==0){flag=1;printf("\n\n =====throngh=====\n\n\n");printf("____________________press any key into next:\n");bioskey(0);}else{flag=0;printf("______________________input error:\n");printf("______________________press any key to return:\n");bioskey(0);}}while(flag!=1);}/*********read message****************/read_message(){int i;system("cls");if(sum<=0){ printf("without message\n");getch();return;}for(i=0;i<sum;i++){system("cls");print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;printf("\n********press any key -show the next one********\n ");getch();}printf("________________totle num :%d________________\n",sum); printf("_____________press any key return______________\n"); bioskey(0);}/*************************************/main(){int chioce,flag;mima_message();do{system("cls");chioce=9;printf("**********************************************\n");printf("****welcome to system of managing students****\n");printf("**********************************************\n\n");printf("-------------------choose 0-8-----------------\n\n");printf(" 1:write message\n\n");printf(" 2:add message\n\n");printf(" 3:inqiure name\n\n");printf(" 4:change message\n\n");printf(" 5:insert message\n\n");printf(" 6:order message\n\n");printf(" 7:delete message\n\n");printf(" 8:read messaeg\n\n");printf(" 0:***exit***\n\n");scanf("%d",&chioce);getchar();switch(chioce){case 1: write_message();break;case 2: add_message();break;case 3: inqiure_message();break;case 4: change_message();break;case 5: insert_message();break;case 6: order_message();break;case 7: delete_message();break;case 8: read_message();break;case 0: printf("___sure press y/Y:___\n\n___no sure press n/N:___");scanf("%c",&chioce);getchar();if(chioce=='y'||chioce=='Y') flag=0;else flag=1;break;default : printf("\n ___input error___\n\n");printf("***press any key to go on***\n");getch();break;}}while(flag!=0);save_message();system("cls");printf("\n\n___message was saved___\n\n\n*****file name is student.txt*****\n");bioskey(0);}。
c语言-学生信息管理系统(完整版)
}
count=fwrite(stu,sizeof(Student),current,fs);
fclose(fs);
if(count!=current)
{
printf("保存失败\n");
return 1;
case'4':delete();break;
case'5':list();break;
case'6':save();break;
case'7':load();break;
case'0':if(stu!=NULL)
#include<string.h>
#include<malloc.h>
#include"Student.h"
#include"function.h"
Student*stu=NULL;
int current=0;
int total=0;
int main()
{
char choice;
printf("地址:%s\n",stu[i].address);
return 0;
}
}
printf("该学生不存在\n");
return 1;
}
int update()
{
char name[40];
printf(" 7.加载学生信息\n");
printf(" 0.退出程序\n");
c语言课程设计 学生信息管理系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#define BUFLEN 100#define LEN 15#define N 100struct record{char code[LEN+1];char name[LEN+1];int age;char sex[3];char time[LEN+1];char add[30];char dorm[LEN+1];char class[30];char zy[LEN+1];}stu[N];int k=1,n,m;void readfile();void seek();void modify();void insert();void del();void display();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void help(){printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n"); printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记保存按7;\n"); printf("\n4.谢谢您的使用!\n");}void readfile()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].class,stu[i].zy)==9){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek(){int i,item,flag;char s1[21];printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址宿舍班级专业\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %8s %9s %9s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].class,stu[i].zy);}if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址宿舍班级专业\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %8s %9s %9s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].class,stu[i].zy);}if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify(){int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1];printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改宿舍号码\n");printf("7.修改班级\n");printf("8.修改专业\n");printf("9.退出本菜单\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2); break; case 2:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break; case 3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu[num].sex,sex1); break; case 4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2); break;case 5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu[num].add,s2); break;case 6:printf("请输入新的宿舍号码:\n"); scanf("%s",s2);strcpy(stu[num].dorm,s2); break; case 7:printf("请输入新的班级:\n");scanf("%s",s2);strcpy(stu[num].class,s2); break; case 8:printf("请输入新的专业:\n"); scanf("%s",s2);strcpy(stu[num].zy,s2);break;case 9:return;default:printf("请在1-9之间选择\n"); }}}void sort(){int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].dorm);strcpy(stu[j-1].dorm,stu[j].dorm); strcpy(stu[j].dorm,temp);strcpy(temp,stu[j-1].class);strcpy(stu[j-1].class,stu[j].class); strcpy(stu[j].class,temp);strcpy(temp,stu[j-1].zy);strcpy(stu[j-1].zy,stu[j].zy);strcpy(stu[j].zy,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}void insert(){int i=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d 个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break;}}printf("请输入第%d 个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d 个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d 个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第%d 个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d 个学生的宿舍:\n",i+1);scanf("%s",stu[i].dorm);printf("请输入第%d 个学生的班级:\n",i+1);scanf("%s",stu[i].class);printf("请输入第%d 个学生的专业:\n",i+1);scanf("%s",stu[i].zy);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}void del(){int i,j,flag=0;char s1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void display(){int i;printf("所有学生的信息为:\n");printf("学生学号学生姓名年龄性别出生年月地址宿舍班级专业\n");printf("--------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %8s %9s %9s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].class,stu[i].zy);}}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].class,stu[i].zy);}fclose(fp);}void menu(){int num;printf(" \n\n 西安理工大学自动化学院学生管理系统\n\n");printf(" \n\n");printf(" 制作人:惟楚有才\n \n");printf(" \n\n");printf(" 系统功能菜单\n");printf("友情提醒:查询前请先刷新系统!\n");printf(" ---------------------- ---------------------- \n");printf(" \n");printf(" 0.系统帮助及说明 1.刷新学生信息\n");printf(" \n");printf(" 2.查询学生信息 3.修改学生信息\n");printf(" \n");printf(" 4.增加学生信息 5.按学号删除信息\n");printf(" \n");printf(" 6.显示当前信息7.保存当前学生信息\n");printf(" \n");printf(" 8.退出系统\n");printf(" \n");printf(" ---------------------- ---------------------- \n"); printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在0-8之间选择\n");}}。
C语言 学生信息管理系统(完整版)
电子科技大学成都学院程序综合设计论文论文题目学生信息管理系统学生姓名魏国学号1340840625专业机械设计制造及其自动化系(分院)电子工程系授课教师杜娥2015年12月制摘要随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活不可或缺的辅助工具。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已成为人们深刻认识,它已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
现在由于学校规模进一步扩大,学生人数逐渐上升,在学校的学生信息管理中,虽然已经存在许多学生信息管理系统,但由于学校之间的管理差异很信息的不同,各个学校的学生信息管理的要求不一致,这样我们需要根据具体学习的具体要求来开发学生信息管理系统以方便学生管理。
本系统主要对学生各种信息进行处理。
本系统采用C语言编写,设计从实用性出发,设计开发出一个操作简单且符合实际需要的学生信息管理系统。
本文设计出一个可以添加、修改、查询、删除、统计的学生信息管理系统;最后,通过测试分析,力求将学到的只是在学生信息管理系统的得到全面运用,并使系统在实际的操作中能按照设计的要求安全有效的正确运行。
学生信息管理系统是为了实现学校对学生信息管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。
它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生信息管理提供了强有力的工具和管理手段。
学生信息管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生信息管理的要求。
学生信息管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了学生信息管理计算机化。
关键字:学生信息,管理系统,数据库,C语言编写第一章系统功能和组成模块1.1系统功能学生信息管理系统存放了每个学生的学号,姓名,性别,年龄,出生年月,家庭住址,政治面貌等信息的数据库。
设计一个C语言课程的学生信息管理系统
1. 设计一个C语言课程的学生信息管理系统在计算机编程领域,学生信息管理系统是一种常见且重要的工具。
针对C语言课程,设计一个学生信息管理系统可以使教师和学生更有效地管理和跟踪课程进展。
本文将基于这一需求,介绍一个设计方案,并讨论其实现和应用。
1.1 系统需求分析设计学生信息管理系统的首要步骤是确定系统的需求。
在C语言课程中,我们通常需要管理学生的基本信息(例如尊称、学号、通信方式等),以及他们的课程成绩、作业提交情况等。
针对这些需求,我们可以将学生信息管理系统的功能分为以下几个方面:1.学生信息录入:教师或管理员可以将学生的基本信息录入系统,包括尊称、学号、通信方式等。
2.成绩管理:系统可以记录和管理学生的课程成绩,并提供查询和统计功能。
3.作业管理:学生可以通过系统提交作业,教师可以查看和评分。
4.考勤管理:记录学生的出勤情况,方便教师管理课堂纪律。
1.2 系统设计与实现1.2.1 数据结构设计为了有效地管理学生信息,我们需要设计合适的数据结构。
在C语言中,可以使用结构体来表示学生的信息,其中包括尊称、学号、通信方式等字段。
为了便于管理多个学生,可以使用链表或数组来组织学生信息。
typedef struct Student {char name[50];int studentId;char contact[50];float grade;struct Student* next;} Student;在上述代码中,我们定义了一个Student结构体,包含了学生的尊称、学号、通信方式、课程成绩以及一个指向下一个学生的指针。
1.2.2 功能实现为了实现学生信息管理系统的各个功能,我们需要编写相应的函数。
下面是几个基本功能的示例代码:1.2.2.1 学生信息录入Student* createStudent(char name[50], int studentId, char contact[50]) { // 创建一个新的学生结构体Student* student = (Student*)malloc(sizeof(Student));// 设置学生的基本信息strcpy(student->name, name);student->studentId = studentId;strcpy(student->contact, contact);student->grade = 0.0;student->next = NULL;return student;}void addStudent(Student** head, Student* newStudent) {if (*head == NULL) {// 如果链表为空,则直接将新学生作为头节点*head = newStudent;} else {// 找到链表的尾节点,并将新学生添加到末尾Student* current = *head;while (current->next != NULL) {current = current->next;}current->next = newStudent;}}void inputStudentInformation(Student** head) {char name[50], contact[50];int studentId;printf("请输入学生尊称:");scanf("%s", name);printf("请输入学生学号:");scanf("%d", &studentId);printf("请输入学生通信方式:");scanf("%s", contact);// 创建新的学生信息Student* newStudent = createStudent(name, studentId, contact);// 将学生信息添加到链表addStudent(head, newStudent);printf("学生信息录入成功!\n");}在上述代码中,我们首先定义了一个createStudent函数,用于创建一个新的学生结构体并初始化其基本信息。
学生信息管理系统(C语言)
学⽣信息管理系统(C语⾔)#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct student{int id;char name[20];int age;char sex;char birthday[20];char address[20];char phone[15];char email[30];struct student *next;}student;student *head = NULL;int length;void create(){student *p1,*p2;length = 0;p1 = (student *)malloc(sizeof(student));p1->id = -1;if(head == NULL){head = p1;}printf("请输⼊学⽣的学号、姓名、年龄、性别、出⽣年⽉、地址、电话、电⼦邮箱:\n");while(1){p2 = (student *)malloc(sizeof(student));scanf("%d %s %d %c %s %s %s %s",&p2->id,p2->name,&p2->age,&p2->sex,&p2->birthday,&p2->address,p2->phone,p2->email);if(p2->id == 0){printf("链表创建完成!\n");break;}length ++;p1->next = p2;p2->next = NULL;p1 = p1->next;}return ;}void LoadStudentInFromFile(){student *p,*q;int c;FILE* f;f = fopen("input.txt","rb");if(f == NULL){return ;}fseek(f,0,SEEK_SET);p = (student *)malloc(sizeof(student));p->next = NULL;head = p;while(!feof(f)){c = fgetc(f);if(c != -1){fseek(f,-1,SEEK_CUR);}else{return ;}q = (student *)malloc(sizeof(student));fscanf(f,"%d",&q->id);fscanf(f,"%s",q->name);fscanf(f,"%d",&q->age);fscanf(f,"%c",&q->sex);fscanf(f,"%s",q->birthday);fscanf(f,"%s",q->address);fscanf(f,"%s",q->phone);fscanf(f,"%s",q->email);q->next = NULL;p->next = q;p = p->next;length ++;//链表长度}}void ModifyStudentInfo(){student *p = head->next;int num;printf("请输⼊要修改的学⽣的学号:");scanf("%d",&num);while(p != NULL){if(p->id == num){printf("修改前,学号为%d的学⽣信息如下:\n",num);printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email); printf("请输⼊学⽣的新电话:");getchar();gets(p->phone);printf("请输⼊学⽣的新地址:");gets(p->address);printf("修改后,学号为%d的学⽣信息如下:\n",num);printf("%d %s %d %c %s %s %s %s",&p->id,p->name,&p->age,p->sex,p->birthday,p->address,p->phone,p->email);return ;}p = p->next;}if(p == NULL){printf("该学号不存在!\n");return ;}}void display(){student *p = head->next;printf("链表中所有的学⽣信息如下:\n");while(p != NULL){printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);printf("\n");p = p->next;}return ;}void search(){int num,x;char name[20];student *p = head->next;printf("请选择查询⽅式:\n");printf("1、按学号查询\t2、按姓名查询\n");scanf("%d",&x);if(x == 1){printf("需要查找的学⽣学号为:");scanf("%d",num);while(p != NULL){if(p->id == num){printf("学号为%d的学⽣信息如下:\n",num);printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);return ;}p = p->next;}if(p == NULL){printf("⽆此记录!\n");}}else if(x == 2){printf("需要查找的学⽣姓名为:");getchar();gets(name);p = head->next;while(p != NULL){if(strcmp(p->name,name) == 0){printf("学⽣姓名为%s的学⽣信息如下:\n",name);printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);return ;}p = p->next;}if(p == NULL){printf("⽆此记录!\n");}}return ;}void insert(){int num,i;student *p,*q;p = head;printf("请输⼊你要插⼊的位置:");scanf("%d",&num);if(num > length){printf("找不到插⼊的位置\n");return ;}else{printf("请输⼊你要插⼊的学⽣的信息:\n");q = (student *)malloc(sizeof(student));scanf("%d %s %d %c %s %s %s %s",&q->id,q->name,&q->age,&q->sex,q->birthday,q->address,q->phone,q->email);while(p != NULL){if(p->id == q->id){printf("该学号已经存在,⽆法插⼊!\n");return ;}p = p->next;}p = head;for(i=0; i<num; ++i){p = p->next;}q->next = p->next;p->next = q;length ++;printf("插⼊成功!\n");return ;}}void Delete(){int num;student *p,*q;q = head;p = head->next;printf("请输⼊要删除的学⽣的学号:\n");scanf("%d",&num);while(p != NULL){if(p->id == num){q->next = p->next;free(p);length --;printf("删除成功!\n");return ;}p = p->next;q = q->next;}if(p == NULL){printf("找不到要删除的编号!\n");return ;}}void menu(){printf("___________________________________________________\n"); printf("| 学⽣信息管理系统 |\n");printf("| 0、退出系统 |\n");printf("| 1、录⼊学⽣信息 |\n");printf("| 2、建⽴链表 |\n");printf("| 3、显⽰链表 |\n");printf("| 4、查找链表中的某个元素 |\n");printf("| 5、删除链表中指定学号的结点 |\n");printf("| 6、指定位置上插⼊⼀个新结点 |\n");printf("| 7、修改学⽣信息 |\n");printf("__________________________________________________\n"); return ;}int main(void){int a;menu();while(1){printf("请输⼊相应的功能:");scanf("%d",&a);switch(a){case0:return0;case1:LoadStudentInFromFile();menu();break;case2:create();menu();break;case3:if(head){display();menu();}else{printf("链表为空,请先建⽴链表!\n");menu();}break;case4:if(head){search();menu();}else{printf("链表为空,请先建⽴链表!\n");menu();}break;case5:if(head){Delete();menu();}else{printf("链表为空,请先建⽴链表!\n");menu();}break;case6:if(head){insert();menu();}else{printf("链表为空,请先建⽴链表!\n");menu();}break;case7:if(head){ModifyStudentInfo();menu();}else{printf("链表为空,请先建⽴链表!\n"); menu();}break;default:break;}}system("pause");return0;}。
c课程设计学生信息管理系统
c 课程设计学生信息管理系统一、课程目标知识目标:1. 理解学生信息管理系统的基本概念和功能,掌握数据库的基础知识。
2. 学会运用编程语言(如Python)和数据库技术(如MySQL)进行简单的学生信息管理。
3. 了解数据表的设计原则,能够设计并实现简单的学生信息数据表。
技能目标:1. 培养学生运用编程语言和数据库技术解决实际问题的能力。
2. 培养学生分析和设计数据表的能力,提高数据处理和查询技巧。
3. 提高学生的团队协作和沟通能力,学会在项目中分工合作。
情感态度价值观目标:1. 培养学生对信息技术的兴趣和热情,激发学习编程和数据库技术的积极性。
2. 培养学生的创新意识,敢于尝试新技术,勇于解决实际问题。
3. 增强学生的责任心和团队意识,培养良好的编程习惯和职业道德。
课程性质:本课程为实践性较强的信息技术课程,结合学生年级特点和教学要求,注重培养学生的动手能力和实际应用能力。
学生特点:学生具备一定的计算机操作基础,对编程和数据库技术有一定了解,但实践经验不足。
教学要求:通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生解决实际问题的能力,为今后的学习和工作打下基础。
同时,注重培养学生的团队协作精神和职业道德。
课程目标的设定旨在使学生能够达到以上要求,并在教学过程中分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 数据库基础知识- 数据库概念、类型及用途- 关系型数据库的基本操作与SQL语句2. 编程语言基础- Python编程环境搭建- Python基本语法和数据类型- Python面向对象编程3. 学生信息管理系统设计与实现- 系统需求分析- 数据表设计原则及实现- 编程实现学生信息管理功能4. 教学案例与实战演练- 案例分析:现有学生信息管理系统的功能与结构- 实战演练:设计并实现一个简单的学生信息管理系统5. 团队协作与项目实践- 项目分工与协作- 代码版本控制(如Git)- 项目进度管理与汇报教学内容安排与进度:第一周:数据库基础知识学习第二周:Python编程语言基础第三周:学生信息管理系统需求分析和数据表设计第四周:编程实现学生信息管理系统功能第五周:教学案例分析与实战演练第六周:团队协作与项目实践本教学内容根据课程目标制定,保证科学性和系统性。
C语言学生信息管理系统(附源码)
fclose(fp);
return;
}
printf("姓名:");
scanf("%s",stu[m].name);
printf("语文成绩:");
scanf("%f",&stu[m].chinese);
printf("数学成绩:");
scanf("%f",&stu[m].math);
char ch[2];
if((fp=fopen("stuData.txt","rb"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件无记录!\n");
default:printf("输入有误,请重新输入:");break;
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}
/*******自定义函数实现菜单功能******/
void menu()
{
system("cls");
printf("\t\t|-------------学生信息系统----------|\n");
printf("\t\t| |\n");
C语言上机实验报告--学生信息管理系统设计__内附源代码
C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。
(完整版)C语言程序设计——学生信息管理系统
C语言课程设计*名:***学号:************班级:061092指导教师:***2011 年 6 月 25 日目录第一章:实习内容实习内容简介 (2)程序代号说明 (3)第二章:程序流程图第三章:函数模块介绍读取文件、存储文件 (6)管理系统模块 (8)恢复区系统模块 (12)功能展示 (12)第四章:实习总结 (16)第五章:实习体会 (17)附录:参考文献 (19)源代码 (19)第一章:实习内容实习内容简介题目:学生通讯录管理系统要求:1.可实现信息的添加、删除,可按学号、姓名查询;2.学生信息必须包含学号、姓名、学院、专业、籍贯。
地址、电话号码;3.必须有注释。
日期:2011年6月20日至27日,共8个半天。
地点:信息楼301指导老师:曹雪莲完成情况:1.程序可完成信息的添加,可按学号、姓名分别查询;2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除,若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息;4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库”的txt文件中查看删除信息;总体结构如下:程序代号说明代号说明结构体student结构体stu全局变量学生信息,包含左结构体n链表节点数量num学号infstudent全部信息恢复区链表头name姓名next本类型结构体指针rhead指针academy学院searchnum目标个数此外,局部变量的含义比较固定:第二章:程序流程图程序流程图:本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。
程序结束时将链表保存在二进制文件和文本文件中。
管理系统流程图:运行管理系统部分时,先从文件“”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“”,并以ASCII形式存储至“学生信息库.txt”,方便检查。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计*名:***学号:************班级:061092指导教师:***2011 年 6 月25 日目录第一章:实习内容1.1实习内容简介 (2)1.2程序代号说明 (3)第二章:程序流程图第三章:函数模块介绍3.1读取文件、存储文件 (6)3.2 管理系统模块 (8)3.3 恢复区系统模块 (12)3.4 功能展示 (12)第四章:实习总结 (16)第五章:实习体会 (17)附录:参考文献 (19)源代码 (19)第一章:实习内容1.1实习内容简介题目:学生通讯录管理系统要求:1.可实现信息的添加、删除,可按学号、姓名查询;2.学生信息必须包含学号、姓名、学院、专业、籍贯。
地址、电话号码;3.必须有注释。
日期:2011年6月20日至27日,共8个半天。
地点:信息楼301指导老师:曹雪莲完成情况:1.程序可完成信息的添加,可按学号、姓名分别查询;2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除,若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息;4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库”的txt文件中查看删除信息;总体结构如下:1.2程序代号说明此外,局部变量的含义比较固定:第二章:程序流程图程序流程图:本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。
程序结束时将链表保存在二进制文件和文本文件中。
管理系统流程图:运行管理系统部分时,先从文件“information.xls”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“information.xls”,并以ASCII形式存储至“学生信息库.txt”,方便检查。
恢复区系统流程图:恢复区系统思路与管理系统思路类似,连函数调用都是一样的,二进制文件名为“dinformation.xls”,文本文件名为“删除信息库.txt”。
具体函数模块功能将在第三章中具体介绍。
第三章:函数模块介绍程序分为管理系统和恢复区系统两部分和读取文件、存储文件四部分,以下分别介绍。
3.1读取文件、存储文件读取文件该函数模块(程序名为creat)于管理系统或恢复区系统运行前运行,目的是读取二进制文件信息,构建链表;若无目标文件,则创建文件。
返回值为头指针。
函数主体为:struct stu *p1,*p2;struct stu *head;while(fread(&(p1->inf),LEN,1,fp))//读取数据{n=n+1;//若读取数据成功节点数加一if(n==1) head=p1;//给头结点赋值else p2->next=p1;//加新的结构体p2=p1;p1=(struct stu *)malloc(LENS);}fclose(fp);p2->next=NULL;//尾结点处指针置0return(head);存储文件该函数模块分为两部分,以二进制形式存储链表信息(程序名为save)和以文本形式存储(程序名为txtsave)。
二进制形式文件是为了读取文件,优点是快速;文本文件是为了方便检查,优点是明确可见。
无返回值。
二进制形式存储程序为:void save(struct stu *head,char filename[20])//存储链表信息{FILE *fp;struct stu *p;p=head;fp=fopen(filename,"wb");//以二进制方式打开文件while((p!=NULL)&&fwrite(&(p->inf),LEN,1,fp))//写入文件{p=p->next;}fclose(fp);}//其中head为链表头指针,filename为存储文件名,在主函数中已有定义。
存储在文本文件程序为:void txtsave(struct stu *head,char filename[20])//以文本形式将链表输入文件FILE *fp;struct stu *p;p=head;fp=fopen(filename,"w");//以文本形式打开while(p!=NULL)//链表不到尽头不停止{fprintf(fp,"%ld",(p->inf).num);//向文本文件中写入数据fprintf(fp,"%10s",(p->inf).name);fprintf(fp,"%10s",(p->inf).academy);fprintf(fp,"%10s",(p->inf).majoy);fprintf(fp,"%10s",(p->inf).province);fprintf(fp,"%10s",(p->inf).address);fprintf(fp,"%20s\n",(p->inf).phone);p=p->next;}}3.2管理系统模块管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:添加该模块函数名为add,无返回值,参数为链表头指针,功能为向已建立的链表中从键盘上输入信息。
函数主体为:struct stu *p1,*p2;//建立结构体指针p2=head;p1=(struct stu *)malloc(LENS);//输入信息printf("\n学号(输入数值请小于32756):");scanf("%d",&((p1->inf).num));printf("\n姓名:");scanf("%s",(p1->inf).name);printf("\n学院:");scanf("%s",(p1->inf).academy);printf("\n专业:");scanf("%s",(p1->inf).majoy);printf("\n省份:");scanf("%s",(p1->inf).province);printf("\n地址:");scanf("%s",(p1->inf).address);printf("\n电话号码:");scanf("%s",(p1->inf).phone);while((p2->next)!=NULL)//移动指针到链表尾{p2=p2->next;}p2->next=p1; //移动指针p2=p1;p2->next=NULL;删除函数名为delet,返回值为指向结构体的链表头指针,参数为链表头指针,可按姓名和学号删除。
若按姓名删除时,为防止同名情况,则查询到一个目标,就显示出信息,并提示是否删除。
1.按学号查找的函数主体为:printf("请输入拟删除学生学号:\n");long snum=0;scanf("%ld",&snum);struct stu *p1,*p2;p1=head;while(snum!=p1->inf.num&&p1->next!=NULL)//p1指向的学号不是要找的节点,并且后面还有节点{ p2=p1;p1=p1->next;}//p1后移if(snum==p1->inf.num)//找到目标{print1(p1);deletinput(p1);//print1()为输出相应指针指向的节点信息deletinput()为向恢复区系统链表输入信息的函数,在后续3.3中会提及if(p1==head) head=p1->next;//若p1指向头节点,将第二个节点位置赋予headelse p2->next=p1->next;//否则将下一结点位置赋给前一节点位置n--;}else printf("该学生不存在");return(head);2.按姓名查找(包含同名情况):int select=0,count=0;//selet选择删除与否,count代表删除次数char sname[20];//定义要搜的名字struct stu *p1,*p2;p1=head,p2=head;printf("请输入学生姓名:\n");scanf("%s",sname);//输入学号while(p1!=NULL)//历遍链表{if(strcmp(sname,p1->)==0) //与目标名字是否一致,相同为0{print1(p1);//若符合姓名条件,显示信息printf("删除该生信息?\n删除选1\n按其它键不删除\n");//保证达到目标姓名时显示学生信息,可选择不删除scanf("%d",&select);if(select!=1){p2=p1;p1=p1->next;continue;}//不删除就再次循环else{n--;deletinput(p1);count++;//删除数加一if(p1==head) head=p1->next;//删除信息else p2->next=p1->next;//更改指针,绕过目标}}p2=p1;p1=p1->next;}if(count==0) printf("该生信息不存在");//若未删除则视为未发现目标学生 return(head);查找函数名为search,参数为链表头指针,无返回值。
其中查找可按姓名与学号进行查找,若找到目标即出现在屏幕;若出现同名情况,则依次显示。
查找与删除函数语句类似,但是删除要求目标的前一个节点的指针与目标节点的指针都能知道;而查找要求则低多了。
因为这个原因,在加上我是先写的查找,所以删除中未调用查找函数。
按学号查找函数主体如下:long snum;//定义要查询学号变量printf("请输入学号:\n");scanf("%ld",&snum);//输入学号while(p!=NULL)//历遍链表{p=search_num(p,snum);//此为调用函数,效果是查找到与目标相同的信息然后返回相应指针if(p!=NULL) print1(p);//若查找到目标,输出else break;p=p->next;//传递指针,继续}按姓名查找函数主体如下:char sname[20];//定义要查询姓名的变量printf("请输入姓名:\n");scanf("%s",sname);//输入姓名while(p!=NULL){p=search_name(p,sname);//与上文中search_num类似,返回同名目标的指针if(p!=NULL) print1(p);//若查找到目标,输出else break;p=p->next;//传递指针}输出函数名为print,参数为链表头指针head,无返回值。