




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福建工程学院软件学院c语言及数据结构与算法课程设计题目 : 学生信息管理系统 专 业: 物联网工程1401班 姓 名: 学 号: 同组其他学生(学号): 26 56 57 2015年6月24 日目 录一、需求分析3二、总体设计3三、详细设计3四、调试与测试3五、测试结果3六、用户手册3七、附录3一、需求分析问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,e-mail等。试设计一学生信息管理系统,使之能提供以下功能:n 系统以菜单方式工作n 学生信息录入功能-输入n 学生信息浏览功能-输出n 查询、排序功能-算法按学号查询、按姓名查询、学生信息的删除与修改(可选项)(2)功能要求界面比较美观;有一定的容错能力,比如输入的成绩不在0100之间,就提示不合法,要求重新输入;最好用链表的方式实现。二、总体设计开始主菜单主菜单选择语句switch(a)删除学生信 息退出系 统修改学生信 息查询学生信 息浏览学生信 息录入学生信息函 数0542311录入信息 按提示,录入学生信息选择是否继续输入学生信息 y n返回主菜单 2浏览学生信息 输出之前保存的所有学生信息返回主菜单3查询学生信息 输入已保存的学生学号提示输入有误输入是否正确n y 输出符合学号的学生信息返回主菜单删除学生信息4输入已保存的学生学号输入是否正确y提示输入有误删除已保存的学生信息n返回主菜单5修改学生信息输入已保存的学生学号提示输入有误输入是否正确n y选择修改的内容修改的新内容直至取消修改返回主菜单三、详细设计各调用函数的设计与运行情况:(/录入学生信息void record () struct student *p0; p0 = (struct student *)malloc(len); printf (请输入学生的姓名:); scanf (%s,p0-name); printf (请输入学生的学号:); scanf (%ld,&p0-num); printf (请输入学生的性别:); scanf (%s,p0-sex); printf (请输入学生的年龄:); scanf (%d,&p0-age); printf (请输入学生的地址:); scanf (%s,p0-address); printf (请输入学生的电话:); scanf (%lf,&p0-tele_num); printf (请输入学生的e-mail:); scanf (%s,p0-e_mail); insert (p0); printf (该学生的信息为:n); printf (-n); printf (姓名t学号t年龄t性别t地址tt电话tte-mailn); display (p0);void insert (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 num) if (head = p1) head = p0; else p2-next = p0; p0-next = p1; else p1-next = p0; p0-next = null; total_num+;void display (struct student *p) printf (%st%ldt%dt%st%st%.0ft%sn, p-name, p-num, p-age, p-sex, p-address, p-tele_num, p-e_mail);/浏览学生信息void displayall() struct student *p; printf(学生总数:%dn, total_num); p = head; if (head != null) printf(n姓名t学号t年龄t性别t地址tt电话tte-mailn); printf(-n); do display(p); p = p-next; while(p != null); printf (n);/按学号查询学生信息void query_by_num () int num; struct student *p1; printf(请输入学生的学号:); scanf(%ld, &num); if(head=null) printf(无学生记录!n); return; p1 = head; while (num!=p1-num & p1-next!=null) p1 = p1-next; if (num = p1-num) printf (姓名t学号t年龄t性别t地址tt电话tte-mailn); printf (-n); display (p1); else printf (没有该学生记录,请核对!);/删除学生信息void del () struct student *p1, *p2; long int num; if (head = null) printf(无学生记录!n); return; printf(请输入您要删除的学生的学号:); scanf(%ld, &num); p1 = head; while (num != p1-num & p1-next != null) p2 = p1; p1 = p1-next; if(num = p1-num) if(p1 = head) head = p1-next; else p2-next = p1-next; free(p1); total_num-; else printf(没有该学生记录,请核对!n);/修改学生信息void change () struct student *p1, *p2; long int num; if (head = null) printf (无学生记录!n); return; printf (请输入您要修改的学生的学号:); scanf (%ld, &num); p1 = head; while (num != p1-num & p1-next != null) p2 = p1; p1 = p1-next; if(num = p1-num) devise (p1); else printf(没有该学生记录,请核对!n);void devise (struct student *p) int choice; choice = -1; do printf(请选择您要修改的学生的信息内容:n); printf(+-+n); printf(| 姓名 请按 1 |n); printf(| 学号 请按 2 |n); printf(| 性别 请按 3 |n); printf(| 年龄 请按 4 |n); printf(| 地址 请按 5 |n); printf(| 电话 请按 6 |n); printf(| e-mail 请按 7 |n); printf(| 取消 请按 0 |n); printf(+-+n); printf(请输入您的选择:); scanf(%d, &choice); switch (choice) case 0: return; case 1: printf(请输入新姓名:); scanf(%s, p-name); break; case 2: printf(请输入新学号:); scanf(%d, &p-num); break; case 3: printf(请输入新性别:); scanf(%s, p-sex); break; case 4: printf(请输入新年龄:); scanf(%s, &p-age); break; case 5: printf(请输入新地址:); scanf(%s, p-address); break; case 6: printf(请输入新电话:); scanf(%lf, &p-tele_num); break; case 7: printf(请输入新e-mail:); scanf(%s, p-e_mail); break; default: printf(n无效选项!); break; while(choice != 0);模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)四、调试与测试设计一个程序,错误是难免不了的。但我们可以根据编辑系统给出的一些提示去查看程序错误。对不敢肯定正确的,翻翻书,看一下这一知识。对难度大的就和同学们一起讨论,问一问老师。 开发一个系统,耐心是必要的,认真也很重要,构思要明确。认为是哪里错误的,有时用“/* */”注释起来进行,看看是否还有错误。常错有以下几种情况: 1.使用变量,但未有定义,则先定义。2.不该用分号的,用到了,把它去掉。3.行最后若有分号则删除,中间若有分号则改成逗号 4.若错误行中有if、while、for则要特别注意条件表达式的错误。 5.若条件表达式中只有一个等于号,则改成两个等于号。6.for中要用分号分隔表达式,而不是用逗号 7.缺少分号,若错误行中有语句没有用分号结束,则加上分号。 8.大小写不对,若错误行中有大写字母则一般都改成小写字母。 9.若有return语句则函数的类型必须与return后变量的类型一致。调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施五、测试结果测试数据运行结果详见“三具体设计”(程序运行的截图)六、用户手册按提示输入数据。七、附录源程序代码#include #include #include #include #define null 0#define len sizeof(struct student)struct student char name20; long int num; char sex4; int age; char address30; double tele_num; char e_mail20; struct student *next;/定义一个结构题int total_num = 0;/学生总数struct student *head = null;void welcome (); /欢迎界面void mainmenu (); /主界面void record (); /记录数据void insert(struct student *stu); /插入数据void display(struct student *stu); /显示一个学生的信息void displayall (); /显示所有学生的信息void query_by_num (); /按学号查询学生信息void readdata (); /读取文件里学生的信息void writedata (); /向文件写入学生信息void freeall (); /清空链表内容void del (); /删除学生信息void change (); /更改学生信息void devise (struct student *p); /选择更改内容int main (void) welcome (); /显示主菜单 mainmenu (); return 0;/显示欢迎信息void welcome () printf (tn); printf (t n); printf (t 欢迎使用福建工软物联网1401班学生信息管理系统 n); printf (t n); printf (tn);/系统主菜单void mainmenu () int choice; choice = -1; readdata (); printf(ntt请先创建database.txt文件以便于保存学生数据); do printf (nnn); printf (tt-n); printf (tt| 工软物联网1401班学生信息管理系统 |n); printf (tt-n); printf (tt| 1-录入学生信息 |n); printf (tt| 2-浏览学生信息 |n); printf (tt| 3-查询学生信息 |n); printf (tt| 4-删除学生信息 |n); printf (tt| 5-修改学生信息 |n); printf (tt| 0-退出系统 |n); printf (tt|*|n); printf (tt-n); printf (请根据您的需要输入对应的编号:); scanf (%d, &choice); switch (choice) case 0: writedata (); freeall (); exit (0); case 1: record (); break; case 2: displayall (); break; case 3: query_by_num (); break; case 4: del (); break; case 5: change (); break; default: printf (n无效选项!); break; while (choice != 0);/录入学生信息void record () struct student *p0; p0 = (struct student *)malloc(len); printf (请输入学生的姓名:); scanf (%s,p0-name); printf (请输入学生的学号:); scanf (%ld,&p0-num); printf (请输入学生的性别:); scanf (%s,p0-sex); printf (请输入学生的年龄:); scanf (%d,&p0-age); printf (请输入学生的地址:); scanf (%s,p0-address); printf (请输入学生的电话:); scanf (%lf,&p0-tele_num); printf (请输入学生的e-mail:); scanf (%s,p0-e_mail); insert (p0); printf (该学生的信息为:n); printf (-n); printf (姓名t学号t年龄t性别t地址tt电话tte-mailn); display (p0);void insert (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 num) if (head = p1) head = p0; else p2-next = p0; p0-next = p1; else p1-next = p0; p0-next = null; total_num+;void display (struct student *p) printf (%st%ldt%dt%st%st%.0ft%sn, p-name, p-num, p-age, p-sex, p-address, p-tele_num, p-e_mail);/浏览学生信息void displayall() struct student *p; printf(学生总数:%dn, total_num); p = head; if (head != null) printf(n姓名t学号t年龄t性别t地址tt电话tte-mailn); printf(-n); do display(p); p = p-next; while(p != null); printf (n);/按学号查询学生信息void query_by_num () int num; struct student *p1; printf(请输入学生的学号:); scanf(%ld, &num); if(head=null) printf(无学生记录!n); return; p1 = head; while (num!=p1-num & p1-next!=null) p1 = p1-next; if (num = p1-num) printf (姓名t学号t年龄t性别t地址tt电话tte-mailn); printf (-n); display (p1); else printf (没有该学生记录,请核对!);/写入文件void writedata () file* fp;/文件指针 struct student *p; fp = fopen(database.txt, w); if (!fp) printf(文件打开错误!); return; fprintf(fp,%dn, total_num); for(p = head; p!= null; p= p-next) fprintf(fp,%st%ldt%st%dt%st%.0ft%sn, p-name, p-num, p-sex, p-age, p-address, p-tele_num, p-e_mail); fclose (fp); void freeall () struct student *p1, *p2; p1 = p2=head; while(p1) p2=p1-next; free (p1); p1 = p2; /读取文件void readdata () file* fp;/文件指针 struct student *p1, *p2; fp = fopen(database.txt, r); if (!fp) printf(文件打开错误!); return; fscanf(fp,%dn, &total_num); head = p1 = p2 = (struct student *)malloc(len); fscanf(fp,%st%ldt%st%dt%st%lft%sn, p1-name, &p1-num, p1-sex, &p1-age, p1-address, &p1-tele_num, p1-e_mail); while(!feof(fp) p1 = (struct student *)malloc(len); fscanf(fp,%st%ldt%st%dt%st%lft%sn, p1-name, &p1-num, p1-sex, &p1-age, p1-address, &p1-tele_num, p1-e_mail); p2-next = p1; p2 = p1; p2-next = null; fclose(fp);/删除学生信息void del () struct student *p1, *p2; long int num; if (head = null) printf(无学生记录!n); return; printf(请输入您要删除的学生的学号:); scanf(%ld, &num); p1 = head; while (num != p1-num & p1-next != null) p2 = p1; p1 = p1-next; if(num = p1-num) if(p1 = head) head = p1-next; else p2-next = p1-next; free(p1); total_num-; else printf(没有该学生记录,请核对!n);/修改学生信息void change () struct student *p1, *p2; long int num; if (head = null) printf (无学生记录!n); return; printf (请输入您要修改的学生的学号:); scanf (%ld, &num); p1 = head; while (nu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广元市宝轮中学招聘教师考试笔试试题(含答案)
- 股票行情预测AI模型创新创业项目商业计划书
- 智能药品管理创新创业项目商业计划书
- 2025年工业互联网平台数字签名技术规范与设备性能提升报告
- 2025年工业互联网平台计算机视觉缺陷检测技术:纺织行业智能化转型的关键报告
- 2025年老年教育课程改革与混合式教学模式的应用前景
- 2025年康复医疗器械市场需求与技术创新:创新产品与市场竞争力报告
- 湖北省三市联考2026届高三化学第一学期期中教学质量检测模拟试题含解析
- 2026届河北省部分重点中学化学高二第一学期期末质量跟踪监视试题含答案
- 营养师考试冲刺押题 2025年实操技能与基础理论模拟试卷
- 2025年四川省高考化学试卷真题(含答案解析)
- 教育测量与评价 课件全套 朱德全 第1-15章 教育测量与评价概述- 教育测评结果的统计处理
- 2025年中海油招聘笔试参考题库附带答案详解
- 幼儿园中层干部培训心得体会
- 燃料电池课件
- 学校学生评教表
- 《风力机理论与设计》全套教学课件
- 小学书法练习指导四年级上册教学设计(苏少版)
- 丽声北极星自然拼读绘本第六级 The Clever Beaver 课件
- 1-AMS2628A-2013-中文版
- 食品安全“五常法”管理制度
评论
0/150
提交评论