学生信息管理系统设计,设计一个学生信息管理系统。
1,设计一个学生信息管理系统。
#include"stdio.h"
#define SIZE 5
struct stu
{
char name[10];
int no;
int age;
char add[10];
}stu[SIZE];
void readdat();
void writedat();
void change();
main()
{
char k;
printf(" 欢迎进入学生信息管理系统\n");
printf("\n\n 1.学生信息输入系统 ");
printf(" 2.学生信息查询系统\n");
printf(" 3.学生信息修改系统\n\n\n");
began:
printf("\n\n请输入选项:");
scanf("%d",&k);
switch(k)
{
case 1: writedat(); break;
case 2: readdat(); break;
case 3: change(); break;
default: goto began;
}
goto began;
while(1);
}
void writedat()
{
FILE *fp;
char i;
printf("\n\n请输入学生的姓名、学号、年龄和地址:\n");
for(i=0;i<SIZE;i++)
{
printf("输入%d号学生信息:",i+1);
scanf("%s %d %d %s",stu[i].name,&stu[i].no,&stu[i].age,stu[i].add);
}
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}
void readdat()
{
FILE *fp;
int i,k,kk;
jixu:
printf("查询全部请输入0,查询单个请输入1:");
scanf("%d",&k);
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
if(k==0)
{
printf("编号 姓名 学号 年龄 地址\n");
for(i=0;i<SIZE;i++)
{
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",i+1,stu[i].name,stu[i].no,stu[i].age,stu[i].add);
}
}
else if(k==1)
{
printf("请输入学生的编号:");
scanf("%d",&kk);
printf("编号 姓名 学号 年龄 地址\n");
if(fread(&stu[kk-1],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
}
else
{
printf("输入错误!");
goto jixu;
}
fclose(fp);
}
void change()
{
FILE *fp;
char i,kk;
while(1)
{
printf("请输入修改信息学生的编号(0退出):");
scanf("%d",&kk);
if(kk==0)
return;
printf("编号 姓名 学号 年龄 地址\n");
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
printf("请输入学生的姓名、学号、年龄和地址:\n");
scanf("%s %d %d %s",stu[kk-1].name,&stu[kk-1].no,&stu[kk-1].age,stu[kk-1].add);
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}
}
2,设计一个学生信息管理系统
届电子信息工程、计算机控制专业)
目 录
毕业论文(设计)任务书
一.毕业论文(设计)的目的和任务
二.毕业论文(设计)的程序和步骤
三.毕业论文(设计)的结构与要求
四.毕业论文(设计)的指导工作及对学生的要求
五.毕业论文(设计)与答辩的时间安排
六.毕业论文(设计)成绩的评定
七.毕业论文(设计)参考选题
八.附件
山东水利职业学院 信息工程系
2007届学生毕业设计(论文)任务书
指导教师 职 称 需要学生人数及专业
课题名称
课题内容及意义
对学生的要求
进度安排
参考文献
备注:学生分为计算机应用、电子信息、网络技术、计算机控制等专业。
一.毕业论文(设计)的目的和任务
根据国家教育部的要求,高等学校毕业生在毕业前要进行撰写论文或进行毕业设计(统称毕业环节),这是高等教育不可或缺的一个重要环节。毕业环节注重理论与实践相结合,将课堂学到的知识与实际工作中的问题结合起来,培养学生解决实际问题的能力,同时也增强了学生适应实际工作的能力,是迈向实际工作岗位前的一次重要演练。
通过毕业论文(设计),使学生运用所学的软、硬件知识,独立分析解决计算机应用的实际问题,掌握应用软件开发的基本模式和步骤,以达到将理论知识学以致用、融会贯通的目的。
学生论文(设计)要完成的任务是:
1.根据所选毕业论文(设计)的题目,到各有关单位进行现场实习和调研,搜集并整理有关资料、文献。
2.根据实习和调研所掌握的资料,对论文(设计)题目中所涉及的问题进行分析论证,提出见解,编写应用程序,最终完成论文(设计)。
二.毕业实习与论文(设计)的程序和步骤:
毕业论文(设计)的工作大致可分为如下阶段:
(一)选题阶段
根据给出的论文题,按自身的理解和对题目的熟悉程度,填报论文题目,学生也可自行选择未给出的论文题。学生须明确所选题目的要求及深度。学校根据学生填报的毕业论文(设计)志愿,在综合评定后,最终确定学生的论文题目,并指定指导教师。自选题须经指导教师认证。
(二)撰写论文阶段
在教师的指导下,对所选题目目前的状况及用户的要求进行需求分析,提出解决方案,画出系统流程图,编写程序,进行上机调试,最终完成论文(设计)。
(三)毕业答辩阶段
学生按期做完毕业论文(设计)后,交给指导教师审阅,教师要写出审阅意见,并在论文上签字。在没有特殊情况下,学生均须进行毕业答辩。
答辩按以下程序进行:
1.学生向答辩委员会报告本人论文的主要内容;
2.答辩委员会和参加老师对论文提出问题;
3.学生对所提问题进行答辩;
4.答辩委员会给出答辩成绩。
三.毕业论文(设计)的结构与要求
◆毕业论文或毕业设计报告字数不少于12000字
◆毕业论文(设计)任务书
◆目录
◆中文摘要
◆英文摘要(Abstract)(可选)
◆前言:本课题研究的意义、国内外相关课题的状况介绍等。
◆系统的需求分析:系统需求、本课题任务及目的等。
◆系统开发工具:本课题使用的软件工具介绍等。
◆系统设计与开发:本课题程序结构、数据结构、算法、系统开发流程、主要模块及其原程序注释、遇到的问题及解决方案等。
◆代码调试与系统测试:应用程序测试、系统测试等。
◆总结:系统的功能、使用说明、存在的问题、收获和体会等。
◆附录
◆参考文献
四、毕业论文(设计)的指导工作及对学生的要求
(一)指导教师的主要工作
指导学生拟定论文进度,布置给学生应完成的工作并检查其执行情况,每周至少半天时间对所带学生进行指导。引导学生拟定论文提纲,帮助学生分析论文所涉及的问题,对方案的可行性、流程的正确性、程序的严谨性等进行审查,并提出意见,做好论文的审阅和学生的释疑工作。
(二)对学生的要求
1、拟定个人工作计划,搜集、阅读、分析、整理有关资料;
2、复习有关专业理论及编程需用的程序语言,做好实习、撰写论文准备工作。
3、在毕业环节过程中,要严肃认真,积极主动,独立思考,努力钻研。对论文内容要充分理解和把握,要有自己的独立见解,不应简单抄袭资料。做好答辩的准备工作。
4、遵守实习、劳动纪律,注意安全。服从教师指导,虚心向实习单位的工作按质、按量、按期完成毕业论文。
五.毕业论文(设计)与答辩的时间安排
序号 专业名称 毕业设计时间 备注
1 电子信息专业(04级普通、对口) 第10周~第18周(2007.5.7~2007.7.6)
2 计算机控制及应用专业(04级普通) 第10周~第18周(2007.5.7~2007.7.6)
答辩时间另行通知。以上时间如有变化,会及时通知。
六.毕业论文(设计)成绩的评定
毕业论文的成绩分为:优、良、中、及格、不及格五级。
毕业论文的成绩将综合考虑毕业环节个人表现、论文水平及毕业答辩的情况。
七.毕业论文(设计)参考选题
设计题目一 三相异步电动机转速控制系统
1、 任务
设计一个小型计算机控制系统,控制三相异步电动机的转速。要求在一定范围内电机转速保持在设定转速上。
2、要求
(1)、电机转速控制范围为0-1200RPM。
(2)、要求设置相应的按钮使用户能够设置电机转速、算法参数大小以及电机的启动和停止等。
(3)、电机控制算法可以采用PID算法、模糊控制算法、模糊PID控制算法等。
(4)、电动机的转速调整通过晶闸管调压模块调整加到三相交流异步电动机的电压来实现。
(5)、要求在系统处于稳定状态时,系统的设置值与实际输转速之间的误差(即稳态误差)控制在15%以内。
设计题目二 电烤箱温度控制系统
1、任务
设计一个电烤箱温度控制系统,要求在一定范围内电烤箱温度保持在设定温度上。
2、要求
(1)、温度范围为0-200℃。
(2)、温度值、控制参数等可以手动设置并能显示设定温度、实际温度、控制参数等
(3)、系统的启动和停止等操作可以通过键盘控制。
(4)、温度控制精度要求在正负5℃。
设计题目三 自动往返小车的设计
1、任务
设计制作一款具有智能判断自动往返功能的小车,能沿设定轨道自动往返。路长20厘米,并在路的两边贴有黑线轨道,路中间贴有数片铁片,路两头有路障。
2、要求
(1)、能在路两头自动往返行驶
(2)、寻迹功能(按路面的黑色轨道行驶)。
(3)、检测路面所放置的铁片的个数的功能。
(4)、计算并显示所走的路程和行走的时间,并可发声发光。
设计题目五、自动水温控制系统
1、任务
设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
2、要求
(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
设计题目六、数字式工频有效值多用表
1、任务
设计并制作一个能同时对一路工频交流电(频率波动范围为50 ±1Hz、有失真的正弦波)的电压有效值、电流有效值、有功功率、无功功率、功率因数进行测量的数字式多用表。参见附图。
2、要求
(1)测量功能及量程范围
a、 交流电压:0~500V;
c、 有功功率:0~25kW;
d、 无功功率:0~25kvar;
e、 功率因数(有功功率/视在功率):0~1 。
为便于本试题的设计与制作,设定待测0~500V的交流电压、0~50A的交流电流均已经相应的变换器转换为0~5V的交流电压。
(2)准确度
a、 显示为 位(0.000~4.999),有过量程指示;
b、 交流电压和交流电流:±(0.8%读数+5个字),例:当被测电压为300V时,读数误差应小于±(0.8%×300V+0.5V)=±2.9V ;
c、 有功功率和无功功率:±(1.5%读数+8个字);
d、 功率因数:±0.01 。
(3)功能选择:用按键选择交流电压、交流电流、有功功率、无功功率和功率因数的测量与显示
设计题目七、液体点滴速度监控装置
1、任务
设计并制作一个液体点滴速度监测与控制装置,示意图如右图所示。
2、要求
(1)在滴斗处检测点滴速度,并制作一个数显装置,能动态显示点滴速度(滴/分)。
(2)通过改变h2控制点滴速度,如右图所示;也可以通过控制输液软管夹头的松紧等其它方式来控制点滴速度。点滴速度可用键盘设定并显示,设定范围为20~150(滴/分),控制误差范围为设定值 ±10% ±1滴。
(3)调整时间≤3分钟(从改变设定值起到点滴速度基本稳定,能人工读出数据为止)。
(4)当h1降到警戒值(2~3cm)时,能发出报警信号。
3、说明
(1)、控制电机类型不限,其安装位置及安装方式自定。
(2)、储液瓶用医用250毫升注射液玻璃瓶(瓶中为无色透明液体)。
(3)、受液瓶用1.25升的饮料瓶。
(4)、 点滴器采用针柄颜色为深蓝色的医用一次性输液器(滴管滴出20点蒸馏水相当于1ml±0.1ml)。
(5)、赛区测试时,仅提供医用移动式点滴支架,其高度约1.8m,也可自带支架;测试所需其它设备自备。
(6)、滴速夹在测试开始后不允许调节。
(7)、发挥部分第(2)项从站功能中,c中的“异常情况”自行确定。
设计题目八、自动控制升降旗系统
1. 任务
设计一个自动控制升降旗系统,该系统能够自动控制升旗和降旗,升旗时,在旗杆的最高端自动停止;降旗时,在最低端自动停止。
自动控制升降旗系统的机械模型如图所示。旗帜的升降由电动机驱动,该系统有两个控制按键,一个是上升键,一个是下降键。
2. 要求
(1)、按下上升按键后,国旗匀速上升;上升到最高端时自动停止上升;按下下降按键后,国旗匀速下降,下降到最低端时自动停止。
(2)、能在指定的位置上自动停止。
(3)、为避免误动作,国旗在最高端时,按上升键不起作用;国旗在最低端时,按下降键不起作用。
(4)、升降旗的时间均为43秒钟,与国歌的演奏时间相等。
(5)数字即时显示旗帜所在的高度,以厘米为单位,误差不大于2厘米。
附件一:
山东水利职业学院 信息工程系
毕业论文(设计)撰写规范
一、论文印装
(一)装订要求
论文一律用A4(210mm279mm)标准大小的白纸打印并装订(左装订)成册。论文在打印时,要求纸的四周留足空白边缘,以便装订和批注。每页的上边距和左边距侧(订口)应分别留边25 mm,下边距和右边距(切口)应分别留边20 mm。
(二)字体要求
1. 论文标题: 小2宋体字,黑体;
小标题1: 小3宋体字,黑体;
小标题2: 4号宋体字,黑体;
2. 正文标题: 参考(五)正文部分;
3. 正 文: 小4宋体字;
4. 参考文献: 5号宋体字;
5. 英文摘要: 标题:小3, 正文:小4,字体 :Times New Roman
二、论文结构及要求
毕业论文由以下部分组成:
1.封面;2.毕业设计(论文)任务书;3.中文摘要;4.英文摘要;5.目录;6.正文;
7.结论;8.致谢;9.参考文献;10.有关图纸(大于3#图幅时单独装订)。
(一)封面及毕业设计(论文)任务书
封面是论文的外表面,提供应有的信息,并起保护作用。
封面上包括下列内容:
1.论文题目,用三号宋体字标注在题目栏;
2.论文的作者和指导教师;
3.所属系(部、中心)、专业、年级、学号。论文封面(见附件八)。
任务书由指导教师填写,经系(部、中心)或教研室主任签字后生效。
(二)中英文摘要(中文在前,英文在后)及关键词
摘要是论文内容的简要陈述,应尽量反映论文的主要信息,内容包括研究目的、方法、成果和结论,不含图表,不加注释,具有独立性和完整性。中文摘要一般为300 字左右,英文摘要应与中文摘要内容完全相同。
“摘要”字样位置居中。
关键词是为了满足文献标引或检索工作的需要而从论文中选取出的用以表示全文主题内容信息的词或词组。关键词包括主题和自由词:主题词是专门为文献的标引或检索,尽量从《汉语主题词表》中选用;自由词则是未规范化的即还未收入主题词表中的词或词组。
每篇论文中应列出3~5个关键词,它们应能反映论文的主题内容。其中主题词应尽可能多一些,关键词作为论文的一个组成部分,列于摘要段之后。撰写要求有英文摘要的论文,还应列出与中文对应的英文关键词(Key words)。
关键词排在摘要正文部分下方。
(三)目录
目录按三级标题编写,要求层次清晰,且要与正文标题一致。主要包括绪论、正文主体、结论、致谢、主要参考文献及附录等。
(四)绪论
1.绪论
其目的是向读者交代本研究的来龙去脉,作用在于使读者对论文先有一个总体的了解。绪论要写得自然、概括、简洁、确切。
2.绪论的内容有如下几项:
(1)研究的目的、范围和背景。
(2)理论依据、实验基础和研究方法。
(3)预期的结果及其地位、作用和意义。
(五)正文
正文是论文的核心部分,论文的论点、论据和论证都在这里阐述,因此它要占主要篇幅。由于论文作者的研究工作涉及的学科、选题、研究对象和研究方法、工作进程、结果表达方式等差异很大,所以对正文中要写的内容不作统一规定;但总的思路和结构安排应当符合“提出论点,通过论据或数据对论点加以论证”这一共同的要求。正文必需客观真切、准确完备、合乎逻辑、层次分明。
1.对正文主题的要求
(1)主题新颖,研究、解决、创立需研究和解决的问题。
(2)主题深刻,抓住问题的本质,揭示事物的主要矛盾,总结出事物存在、运动、变化和发展的客观规律。
(3)主题集中,一篇论文只有一个中心,要使主题集中,凡于本文主题无关或关系不大的内容不应涉及,不过多阐述,否则会使问题繁杂,脉络不清,主题淡化。
(4)主题鲜明,论文的中心思想地位突出,除了在论文的题目、摘要、前言、结论部分明确地点出主题外,在正文部分更要注意突出主题。
2.对结构的要求
论文撰写通行的题序层次大致有以下几种格式:
第一种 第二种 第三种 第四种
一、 第一章 第一章 1.
(一) 一、 第一节 1.1
1. (一) 一、 1.1.1
(1) 1. (一) 1.1.2(1)
格式是保证文章结构清晰、纲目分明的编辑手段,撰写毕业论文可任选其中的一种格式,但所采用的格式必须符合上表规定,并前后统一,不得混杂使用。格式除题序层次外,还应包括分段、行距、字体和字号等。
第一层次(章)题序和标题居中放置,其余各层次(节、条、款)题序和标题一律沿版面左侧边线顶格安排。第一层次(章)题序和标题距下文双倍行距。段落开始后缩两个字。行与行之间,段落和层次标题以及各段落之间均为单倍行距。
第一层次(章)题序和标题用小三号宋体字,黑体。题序和标题之间空两个字,不加标点。
第二层次(节)题序和标题用四号宋体字,黑体。
第三层次(条)及以下各层次题序及标题一律用小四号宋体字,黑体。
(六)结论
结论即结束语、结语,是在理论分析和实验验证的基础上,通过严密的逻辑推理得出的有创造性、指导性、经验性的结果描述。结论作为单独一章排列,但标题前不加“第XXX章”字样。结论是整个论文的总结,应以简练的文字说明论文所做的工作,一般不超过两页。
(七)致谢
对指导教师和给予指导或协助完成毕业设计(论文)工作的组织和个人表示感谢。文字要简捷、实事求是,切忌浮夸和庸俗之词。
(八)主要参考文献
1.参考文献
参考文献应是论文作者亲自考察过的对毕业论文有参考价值的文献。参考文献应具有权威性,要注意引用最新的文献。参考文献在整个论文中出现的次序用[1]、[2]、[3]……形式统一排序,依次列出。
2.参考文献的表示格式为:
著作:[序号]作者.译者.书名.版本.出版地:出版社,出版时间.引用部分起止页
期刊:[序号]作者.译者.文章题目.期刊名.年份.卷号(期数). 引用部分起止页
会议论文集:[序号]作者.译者.文章名.文集名 .会址.开会年.出版地:出版者.出版时间.引用部分起止页
例:
[1] 刘国均,陈绍业.图书馆目录.第1版.北京:高等教育出版社,1957
[2] 傅秉义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,1958,447
[3] 华罗庚,王元.论一致分布与近似分析.中国科学,1973(4):339~357
三、其他要求
(一)表格
论文的表格可以统一编序(如:表15),也可以逐章单独编序(如:表2.5),采用哪种方式应和插图及公式的编序方式统一。表序必须连续,不得重复或跳跃。
表格的结构应简洁。
表格中各栏都应标注量和相应的单位。表格内数字须上下对齐,相邻栏内的数值相同时,不能用‘同上’、‘同左’和其它类似用词,应一一重新标注。
表序和表题置于表格上方中间位置,无表题的表序置于表格的左上方或右上方(同一篇论文位置应一致)。
(二)图
插图要精选。图序可以连续编序(如 图52),也可以逐章单独编序(如 图6.8),采用哪种方式应与表格、公式的编序方式统一,图序必须连续,不得重复或跳跃。仅有一图时,在图题前加‘附图’字样。毕业设计(论文)中的插图以及图中文字符号应打印,无法打印时一律用钢笔绘制和标出。
由若干个分图组成的插图,分图用a,b,c,……标出。
图序和图题置于图下方中间位置。
(三)公式
论文中重要的或者后文中须重新提及的公式应注序号并加圆括号,序号一律用阿拉伯数字连续编序(如:(45))或逐章编序(如(6.10)),序号排在版面右侧,且距右边距离相等。公式与序号之间不加虚线。
(四)数字用法
公历世纪、年代、年、月、日、时间和各种计数、计量,均用阿拉伯数字。年份不能简写,如1999年不能写成99年。数值的有效数字应全部写出,如:0.50;2.00不能写作0.5;2。
(五)软件
软件流程图和原程序清单要按软件文档格式附在论文后面。
(六)工程图按国标规定装订
图幅小于或等于3#图幅时应装订在论文内,大于3#图幅时按国标规定单独装订作为附图。
(七)计量单位的定义和使用方法按国家计量局规定执行。
(八)附录
1.附录
附录是论文主体的补充项目,为了体现整篇论文的完整性,写入正文又可能有损于论文的条理性、逻辑性和精炼性,这些材料可以写入附录段,但对于每一篇论文并不是必须的。
2.附录大致包括如下一些材料:
(1)比正文更为详尽的理论根据、研究方法和技术要点,建议可以阅读的参考文献的题录,对了解正文内容有用的补充信息等;
(2)由于篇幅过长或取材于复制品而不宜写入正文的材料;
(3)一般读者并非必要阅读,但对本专业同行很有参考价值的资料;
(4)某些重要的原始数据、数学推导、计算程序、框图、结构图、统计表、计算机打印输出件等。
(5)附录段置于参考文献表之后,附录中的插图、表格、公式、参考文献等的序号与正文分开,另行编制,如编为“图1”,“图2”;“表1”,“表3”;“式(1)”,“式2”;“文献[1]”,“文献[2]”等。
四、毕业设计(论文)装订顺序
(一)毕业设计(论文)封面
(二)毕业设计(论文)任务书
(三)中文摘要、关键词
(四)英文摘要、关键词
(五)目录
(六) 正文
(七) 附录
(八) 封底
3,c语言学生信息管理系统代码
代码如下:#include#include#include#include#includetypedef struct examinee //考生信息结构{ char examno[20]; //准考证号char name[10]; //姓名char sex[4]; //性别short age; //年龄char examtype[10]; //报考科目}ElemType;typedef struct Node //定义链表结点{ElemType data; //数据域struct Node *next; //指针域 }Node,*List,*position;List make_empty( List L ); //创建一个带头结点的空表int is_empty( List L ); //测试链表是否是空表int is_last( position p, List L ); //测试当前位置是否是表尾position make_node( position p,int n ); //创建结点并输入考生信息void put_information( position p ); //是否输出该考生信息 void put_name_information( List L ); //输出姓名为xx的考生信息int put_pos_information( position p ); //输出该地址考生信息 void link_to_tail( List L, position p ); //将结点连接到表尾 int ciculation_make(); //循环创建考生信息 int judge_put_all(); //是否输出所有考生信息void put_all(List L); //输出所有考生信息。position find( List L ); //查找第一个姓名为xx的元素并返回位置position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置//int judge_delete_val(); //询问是否删除考生数据int delete_val( List L ); //删除指定考生信息并输出其信息void menu(List L); //菜单函数 List L;//position p;intmain( void ) {List L = NULL; //定义头结点指针position p = NULL; //定义表工作指针L = make_empty( L ); //创建空表printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");menu(L);return 0;}//创建一个带头结点的空表Listmake_empty( List L){L = ( List ) malloc (sizeof( Node ));if(NULL == L){printf("内存分配失败");exit( 1 );}L->next = NULL;//printf("空表创建成功。\n");return L;}//创建结点并输入考生信息positionmake_node( position p ,int n){if(n) //n为1是创建结点并输入,n为0是修改{p = ( position ) malloc ( sizeof ( Node ));p->next = NULL ;}printf("请输入考生准考证号:");gets(p->data.examno);printf("请输入考生姓名:");gets(p->data.name);do{printf("请输入考生性别,只能输入“男”或者“女”:");gets(p->data.sex);}while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判断性别是否有误printf("请输入考生年龄:");scanf("%hd",&p->data.age);getchar(); //如果把这句删掉,就“无法执行”下面的报考类别/*下面的do while用来判断报考类别是否输入有误*/do{printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");gets(p->data.examtype);}while( 0 != strcmp( "英语", p->data.examtype ) && 0 != strcmp( "数学", p->data.examtype ) && 0 != strcmp( "数据结构", p->data.examtype ));if(n){printf("报名成功\n");}else{printf("修改成功\n");}return p;}//前插法; voidlink_to_tail( List L, position p){p->next = L->next;L->next = p;}//查找第一个姓名为xx的元素并返回位置positionfind( List L ){position p = L->next;char name[10];printf("请输入你要查找的考生姓名:");gets(name);while( p != NULL && 0 != strcmp( p->data.name , name)){p=p->next;}return p;}//测试链表是否是空表intis_empty( List L ){return L->next == NULL;}//测试当前位置是否是表尾intis_last( position p, List L ){return p->next == NULL;}//输出姓名为xx的考生信息voidput_name_information( List L ){position p = find(L);if(p!=NULL){printf("您要查找的考生信息:\n");printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);}else{printf("没有您要找的学生。\n");}}//循环创建考生信息 intciculation_make(){int n = 2;do{printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}//是否输出考生信息 voidput_information( position p ){int n=2;do{printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);if(n){printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);}}//是否输出所有考生信息 int judge_put_all(){int n = 2;do{printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}//输出所有考生信息voidput_all(List L){if(L->next == NULL){printf("现无考生报名!\n");}else{position p=L->next;while( p != NULL ){printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);p=p->next;}}//getchar();}//询问是否删除考生数据intjudge_delete_val(){int n = 2;do{printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}//查找第一个姓名为xx的元素并返回其直接前驱的位置positionfind_previous( List L ){position q = L;position p = L->next;char name[10];printf("请输入你要查找的考生姓名:");gets(name);while( p != NULL && 0 != strcmp( p->data.name , name)){q=p;p=p->next;}if( p != NULL ){return q;}elsereturn p;}//删除指定考生信息并输出其信息intdelete_val(List L){int n=2;position q=NULL;position p=find_previous( L ); //返回考生信息地址if( NULL == p ){printf("你要删除的考生不存在\n");return 0;}else{q = p->next;p->next = q->next;printf("删除成功。\n删除的考生信息为:\n");printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);free(q);return 1;}}//输出该地址考试信息 intput_pos_information( position p ){if(p != NULL ){printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);return 1;}else{printf("没有您要查找的学生。");return 0;}} //菜单函数voidmenu(List L){printf("\t\t\t a. 考生报名入口\n");printf("\t\t\t b. 查询考生信息\n");printf("\t\t\t c. 修改考生信息\n");printf("\t\t\t d. 删除考生信息\n");printf("\t\t\t e. 全部考生信息\n");printf("\t\t\t f. 程序作者信息\n");printf("\t\t\t g. 退出程序\n");char n='h';while(n != 'g'){do //确定正确输入{printf("请通过字母序号选择功能:");n = getchar();getchar();putchar('\n');if( n 'g'){printf("错误的字母序号。\n");}}while( n 'g' );switch (n){case 'a':{printf("请输入报名考生信息:\n");position p = make_node( p, 1 ); //创建新结点link_to_tail( L, p ); //将新结点连接到表上put_information( p ); //是否输出该考生信息putchar('\n');}break;case 'b':{put_name_information( L );putchar('\n');}break;case 'c':{int n=0;position p = NULL;printf("您正在进行修改操作。\n");p = find(L);n = put_pos_information( p );if(n){make_node( p , 0 );put_information( p ); //是否输出该考生信息}putchar('\n');}break;case 'd':{printf("您正在进行删除操作。\n");delete_val( L );putchar('\n');}break;case 'e':{put_all( L );putchar('\n');}break;case 'f':{printf(" 修改日期 版本号 修改人 修改内容 \n");printf(" --------------------------------------------------------\n");printf(" 2018.6.19 v2.0 陈百川 增加主菜单\n");printf(" 2018.6.23 v3.0 陈百川 增加生成文件功能\n\n");printf(" 该版本号为v2.0\n");putchar('\n');}break;default:break;}}printf(" 感谢本次使用,祝您生活愉快。");getch(); }扩展资料:C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。参考资料:百度百科——C语言
4,用C语言编写一个学生管理系统。
概述单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。运行结果如下:输入数据: 根据总成绩排序:根据学号删除学生信息:贴上代码(有点多)#include #include //exit函数头文件 #include //字符串相关操作头文件 #define MAX_STUDENT 30 //最大学生数 //函数声明,本程序共10个子函数,每个函数对应一个操作 void student_scanf(int n);void student_printf(int n);int student_find_name(int n);int student_find_num(int n);void student_sort_num(int n);void student_sort_sum(int n);int student_alter_num(int n);int student_alter_name(int n);int student_delete_num(int n);int student_delete_name(int n);//全局数组变量,用于存储学生信息 char names[MAX_STUDENT][50];int math[MAX_STUDENT];int english[MAX_STUDENT];int computer[MAX_STUDENT];int sum[MAX_STUDENT];int num[MAX_STUDENT];//以下变量用于学生信息数组排序,作为临时数组 int temp_num[MAX_STUDENT];char temp_names[MAX_STUDENT][50];int temp_math[MAX_STUDENT];int temp_english[MAX_STUDENT];int temp_computer[MAX_STUDENT];int temp_sum[MAX_STUDENT];//sort数组存储排好序的学号或姓名下标 int sort[MAX_STUDENT];//循环全局变量 int i, j;//main主函数int main(void){int choice,n;while (1){printf("*************************************\n");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("[10] 按姓名删除某个学生信息\n");printf("[0] 退出程序\n");printf("请输入您的选择(0 - 9):");scanf("%d",&choice);printf("**************************************)\n");switch (choice){case 1://录入;printf("请输入录入的学生信息数: ");scanf("%d",&n); student_scanf(n);break;case 2://输出;student_printf(n);break;case 3://根据学号查找student_find_num(n);break;case 4://根据姓名查找student_find_name(n);break;case 5://按学号排序student_sort_num(n);break;case 6://按姓名排序 student_sort_sum(n);break;case 7://按学号修改 student_alter_num(n);break;case 8://按姓名修改 student_alter_name(n);break;case 9://按学号删除 student_delete_num(n);n--;break;case 10://按姓名删除 student_delete_name(n);n--;break;case 0://退出程序 printf("退出程序\n");printf("程序结束,谢谢使用!\n");exit(0);default:printf("您输入的菜单有误。请重新输入!\n");}}return 0;}//1.输入信息void student_scanf(int n){for (i = 0; i<n; ++i){printf("\n请输入第%d个学生的信息:\n", i + 1);printf("\n学号:");scanf("%d", &num[i]);printf("\n姓名:");scanf("%s", names[i]);printf("\n数学成绩:");scanf("%d", &math[i]);printf("\n英语成绩:");scanf("%d", &english[i]);printf("\n计算机成绩:");scanf("%d", &computer[i]);//计算总成绩sum[i] = math[i] + english[i] + computer[i];}}//2.打印信息 void student_printf(int n){printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");printf("----------------------------------------------------------\n");for (i = 0; i<n; ++i){printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);}printf("-------------------------------------------------------\n");}//3.按学号查找int student_find_num(int n){int nums;int result;printf("请输入待查找的学生学号:");scanf("%d",&nums);result= -1;for (i = 0; i<n; ++i){if (nums == num[i]){result = i;break;}}//最后判断q值if (result == -1){printf("没有该学生信息!\n");return 0;}else{//先打印表头printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");//再打印数据printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);printf("打印出查找结果!\n");}return 1;}//4.用姓名查找成绩int student_find_name(int n){char name[200];int result;printf("请输入待查找的学生姓名:");scanf("%s", name);result = -1;for (i = 0; i<n; ++i){if (strcmp(name, names[i]) == 0){result = i;break;}}if (result == -1){//未找到结果printf("没有该学生信息!\n");return 0;}else//找到结果{printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);printf("已完成查找!\n");}return 1;}//5.按学号排序void student_sort_num(int n){int min,max;for(i=0; i<n; ++i) //复制临时数组 {temp_num[i] = num[i];}max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中 for(j=1; j<n; j++){if(temp_num[max]<temp_num[j])max = j;} sort[n-1] = max; //sort数组的最后一个数 for(i=0; i<n-1; ++i){min = i; //查找学号最小值for(j=0; j<n; ++j){if(temp_num[min]>temp_num[j])min = j;} //sort数组记录排序的学生信息的下标 sort[i] = min;temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰 }for(i=0; i<n; ++i) //再复制一次临时数组 {temp_num[i] = num[i];strcpy(temp_names[i],names[i]);temp_math[i] = math[i];temp_english[i] = english[i];temp_computer[i] = computer[i];temp_sum[i] = sum[i];}for(i=0; i<n; i++) //按照下标对原数组进行修改 {num[i] = temp_num[sort[i]]; strcpy(names[i],temp_names[sort[i]]); math[i] = temp_math[sort[i]]; english[i] = temp_english[sort[i]]; computer[i] = temp_computer[sort[i]]; sum[i] = temp_sum[sort[i]];}printf("排序完毕,请按菜单键2查看排序结果!\n");return ;}//6.按总成绩排序void student_sort_sum(int n){int min,max;for(i=0; i<n; ++i) //复制临时数组 {temp_sum[i] = sum[i];}max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中 for(j=1; j<n; j++){if(temp_sum[max]<temp_sum[j])max = j;} sort[n-1] = max; //sort数组的最后一个数 for(i=0; i<n-1; ++i){min = i; //查找总成绩最小值for(j=0; j<n; ++j){if(temp_sum[min]>temp_sum[j])min = j;} //sort数组记录排序的学生信息的下标 sort[i] = min;temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰 }for(i=0; i<n; ++i) //再复制一次临时数组 {temp_num[i] = num[i];strcpy(temp_names[i],names[i]);temp_math[i] = math[i];temp_english[i] = english[i];temp_computer[i] = computer[i];temp_sum[i] = sum[i];}for(i=0; i<n; i++) //按照下标对原数组进行修改 {num[i] = temp_num[sort[i]]; strcpy(names[i],temp_names[sort[i]]); math[i] = temp_math[sort[i]]; english[i] = temp_english[sort[i]]; computer[i] = temp_computer[sort[i]]; sum[i] = temp_sum[sort[i]];}printf("排序完毕,请按菜单键2查看排序结果!\n");return ;}//7.按学号修改学生信息int student_alter_num(int n) {int nums;int result;printf("请输入待修改的学生学号:");scanf("%d",&nums);result= -1;for (i = 0; i<n; ++i){if (nums == num[i]){result = i;break;}}//最后判断q值if (result == -1){printf("没有该学生信息!\n");return 0;}else //修改信息值 {printf("请重新输入该学生信息:\n");printf("学号:\n");scanf("%d",&num[result]);printf("姓名:\n");scanf("%s",names[result]); printf("数学成绩:\n");scanf("%d",&math[result]);printf("英语成绩:\n");scanf("%d",&english[result]);printf("计算机成绩:\n");scanf("%d",&computer[result]);sum[result] = math[result] + english[result] + computer[result];}return 1;} //8.按姓名修改学生信息int student_alter_name(int n) {char name[50];int result;printf("请输入待修改的学生姓名:");scanf("%s",name);result= -1;for (i = 0; i<n; ++i){if (strcmp(name,names[i])==0){result = i;break;}}//最后判断q值if (result == -1){printf("没有该学生信息!\n");return 0;}else //修改信息值 {printf("请重新输入该学生信息:\n");printf("学号:\n");scanf("%d",&num[result]);printf("姓名:\n");scanf("%s",names[result]); printf("数学成绩:\n");scanf("%d",&math[result]);printf("英语成绩:\n");scanf("%d",&english[result]);printf("计算机成绩:\n");scanf("%d",&computer[result]);sum[result] = math[result] + english[result] + computer[result];}return 1;} //9.按学号删除学生信息int student_delete_num(int n) {int nums;int result;printf("请输入待删除的学生学号:");scanf("%d",&nums);result= -1;for (i = 0; i<n; ++i){if (nums == num[i]){result = i;break;}}//最后判断q值if (result == -1){printf("没有该学生信息!\n");return 0;}else //删除当前学生信息即为将数组从result的位置依次前挪一个位置 {for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1 {num[i] = num[i+1]; strcpy(names[i],names[i+1]); math[i] = math[i+1]; english[i] = english[i+1]; computer[i] = computer[i+1]; sum[i] = sum[i+1];} }return 1;} //10.按姓名删除学生信息int student_delete_name(int n) {char name[50];int result;printf("请输入待删除的学生姓名:");scanf("%s",name);result= -1;for (i = 0; i<n; ++i){if (strcmp(name,names[i])==0){result = i;break;}}//最后判断q值if (result == -1){printf("没有该学生信息!\n");return 0;}else //删除当前学生信息即为将数组从result的位置依次前挪一个位置 {for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1 {num[i] = num[i+1]; strcpy(names[i],names[i+1]); math[i] = math[i+1]; english[i] = english[i+1]; computer[i] = computer[i+1]; sum[i] = sum[i+1];} }return 1;}
5,c语言程序设计题目:学生信息管理系统
现写肯定是来不及的,分也不够,网上的有一些也有问题,
我给你一个我改好的,并且运行确认的吧,你稍微改一点就完全可以了:
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
void look(); /*声明查看函数*/
void save(); /*声明保存函数*/
void search_name(); /*声明按姓名查看函数*/
void search_number(); /*声明按学号查看函数*/
void order(); /*声明排序函数*/
void del(); /*声明删除函数*/
int openl(); /*声明打开函数*/
void type(); /*声明输入函数*/
void see(); /*声明打开并查看文件函数*/
struct student /*定义学生信息的结构体类型*/
{
char num[15]; /*学号*/
char name[20]; /*姓名*/
char sex[4]; /*性别*/
int english; /*英语成绩*/
int math; /*数学成绩*/
int chinese; /*语文成绩*/
float aver; /*平均成绩*/
float sum; /*总成绩*/
}stu[100];
int n; /*声明一个全局变量*/
void main() /*主函数即用户的操作界面*/
{
system("color 1E"); /*设计文本颜色*/
int b,flag=0; /*声明局部变量*/
while(1) /*循环输出以下信息*/
{
printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/
printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/
printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/
printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/
printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/
printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/
printf("\t\t\t7.保存学生信息\n\n"); /*保存*/
printf("\t\t\t8.打开文件\n\n"); /*打开文件*/
printf("\t\t\t0.退出&
下一篇:没有了