c语言课程设计new_第1页
c语言课程设计new_第2页
c语言课程设计new_第3页
c语言课程设计new_第4页
c语言课程设计new_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南工业职业技术学院课程设计说明书题目 C语言课程实验系(部) 电子工程系专业(班级) 计算机控制技术姓名盛申友学号 0502120116指导教师董珍珍起止日期2013-12-9 2013-12-14设计内容(主要技术关键的分析、解决思路和方案比较等)设计题目:1、学生管理系统1 问题描述:计算机系新招服务外包方向,招生前学生人数并不确定。请根据以下要求为教务管理人员设计一个学生管理系统。分别管理学生的相关信息。信息的详细内容如下:姓名、学号、年级、班级、性别 电话 地址 E-mail2 问题的解决方案:根据问题的描述,可以按照要求的功能采用面向对象的设计思想。(1) 要求使用链表实现,结构中

2、必须包含题干描述的内容。(2) 使用排序函数实现排序功能。3主要技术问题的描述计算机系新招服务外包方向,招生前学生人数并不确定。请根据以下要求为教务管理人员设计一个学生管理系统。分别管理学生的相关信息。信息的详细内容如下:姓名、学号、年级、班级、 性别 电话 地址 E -mail。系统功能要求如下:1) 增加某新学生的信息2) 删除某学生的信息3) 修改某学生的信息4) 输出符合某种特征的学生信息列表(选做以下任意模块)。l 按名称升序(降序)输出学生列表l 按某门成绩升序(降序)输出学生列表l 按学号升序(降序)输出学生列表5) 根据提供的学生姓名输出该学生的信息摘要本程序是一个学生管理系统

3、。用于实现学生信息的记录以及基本的管理。本程序在实现程序应有的功能上简化的操作界面,用户很容易上手,体现了面向客户的友好性。本程序采取分块的处理方法编写,把系统功能分成独立的模块,简化了编写的难度提高了效率,同时也使程序的可维护性有了很大的增强,并且也使程序更加易懂。而且这些功能是通过链表的方法实现的,表现的相当灵活。关键词:学生信息管理系统;面向对象;链表;指针 目录1 设计内容与要求 12.设计说明 22.1 问题描述与功能设计22.2 算法与数据结构42.3函数定义62.4 界面设计92.5 测试213 总结23参考文献 25附录A 源代码26关于软件设计内容与要求计算机系新招服务外包方

4、向,招生前学生人数并不确定。请根据以下要求为教务管理人员设计一个学生管理系统。分别管理学生的相关信息。信息的详细内容如下:姓名、学号、年级、班级、性别 电话 地址 E-mail1. 问题的解决方案:根据问题的描述,可以按照要求的功能采用面向对象的设计思想。(3) 要求使用链表实现,结构中必须包含题干描述的内容。(4) 使用排序函数实现排序功能。2 主要技术问题的描述计算机系新招服务外包方向,招生前学生人数并不确定。请根据以下要求为教务管理人员设计一个学生管理系统。分别管理学生的相关信息。信息的详细内容如下:姓名、学号、年级、班级、电话 地址E-mail。系统功能要求如下:6) 增加某新学生的信

5、息7) 删除某学生的信息8) 修改某学生的信息9) 输出符合某种特征的学生信息列表(选做以下任意模块)。l 按名称升序(降序)输出学生列表l 按某门成绩升序(降序)输出学生列表l 按学号升序(降序)输出学生列表10) 根据提供的学生姓名输出该学生的信息 2设计说明2.1 问题描述与功能设计1问题描述: 设计一个高校学籍管理系统,能够处理学生个人的学籍信息、按学生学籍号进行排序,在实现各功能时要有一定的异常处理机制,给用户适当的操作错误提示,要求将学生个人的学籍信息保存在文件中。 2. 功能要求:1增加某新学生的信息2删除某学生的信息3修改某学生的信息4输出符合某种特征的学生信息列表(选做以下任

6、意模块)。l 按名称升序(降序)输出学生列表l 按某门成绩升序(降序)输出学生列表l 按学号升序(降序)输出学生列表5根据提供的学生姓名输出该学生的信息 2.2 算法与数据结构算法:本程序主要是用了链表的方式来组织数据的,每一个数据都是保存在链表中的,并且都要通过指针来连接。还用了类来实现各种功能。充分体现了面向对象的优越性。数据结构:本程序是包括了对数据集合中的各元素以各种方式进行操作,包括删除、查找、排序等。 数据的组织方式也有所不同。student类里面存放的是所要用到的各种数据类型,及成员函数,而student类的实现里面主要是存放着定义好的函数实现。2.3 函数定义void cont

7、ent();/功能菜单student * creatlist(int n);/创建链表student * deletlist(int n,student*head);/删除学生void outputlist(student * head);/输出学生信息int findlist(student * head);/按名字查找学生个人信息student * changelist(int n,student*head);/修改学生个人信息void sortList( int n,student *head);/把学生按照学号进行排序void classstudent(student * head);

8、/输出特定班级的学生信息总结 经过本次的课程实验的制作,加深了我对C+中链表的认识,也学会了如何运用链表。感觉自己又进步了一点点,并进一步激发了对高级语言学习的兴趣,体验到了编程的乐趣。 但在刚开始编写源代码的同时也感觉到自己本身的不足,看到题目后不知道如何下手,心里就连基本的函数模型也勾画不出,严重打击了编写程序的自信心。归根结底还是自己对链表的认识也很模糊,课前的预习和课后的复习没有做好,意识到自己的学习习惯上的严重不足。经过上网查询有关资料加上以书本为模板,也向寝室室友的请教,逐渐认识了链表的本质,慢慢的写出了函数的雏形,通过多次的查错改错,程序最终可以运行了。但经过输入数值进行调试的时

9、候,发现达不到预期目的。然后通过对各种功能模块的修改,程序最终达到了预期目标,成就感高涨,心里的石头也终于落了地,踏破铁鞋无觅处,得来全不费工夫。总而言之,收获颇多,一步一个脚印,为自己成为一个合格的软件工程师打下基础。参考文献1 钱能. C+程序设计教程M. 北京:清华大学出版社,2005:315-324,415-418,423.2 刘瑞新. Visual C+面向对象程序设计教程M. 北京:机械工业出版社,2005.3 王挺等 C+程序设计教程M. 北京:清华大学出版社。附录原代码: #include #include #include #define BUF LEN 50#define

10、LEN 15#define N 50struct studentchar codeLEN+1;char nameLEN+1;int age;char sex3;char timeLEN+1;char add30;char telLEN+1; char mail30;studentN; stN; int k=1,n,m; void input(); void seek(); void modify(); void del (); void display(); void save(); void menu(); int main() while (k) menu(); return 0; voi

11、d input() int i,m; printf(请输入要输入的学生人数(1-50):n); scanf(%d,&m); for(i=0;im;i+) printf(请输入学号: ); scanf(%s,&studenti.code); printf(请输入姓名: ); scanf(%s,&); printf(请输入年龄: ); getchar(); scanf(%d,&studenti.age); printf(请输入性别(f-女,m-男): ); scanf(%s,&studenti.sex); printf(请输入出生年月: ); scanf(%s,&stud

12、enti.time); printf(请输入地址: ); scanf(%s,&studenti.add); printf(请输入电话: ); scanf(%s,&studenti.tel); printf(请输入mail: ); scanf(%s,&studenti.mail); printf(n); printf(n创建完毕: n); save(); void seek() int i,item,flag;char s121;printf(- n); printf(- 1 按学号查询 - n); printf(- 2 按姓名查询 - n); printf(- 3 退出本菜单 - n); pr

13、intf(- n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);flag=0;switch(item)case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+) if(strcmp(studenti.code,s1)=0)flag=1;printf(学生学号,学生姓名,年龄,性别,出生年月,地址,电话,E-mail,分别为:n); printf(- n);printf(%6s %7s %6d %5s %9s %8s %10s %14s,studenti.code,,stud

14、enti.age,studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.mail);if(flag=0)printf(该学号不存在!n);break;case 2: printf(请输入要查询的学生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(,s1)=0)flag=1;printf(学生学号,学生姓名,年龄,性别,出生年月,地址,电话,E-mail,分别为:n); printf(- n);printf(%s %s %d %s %s %s %s %s,stu

15、denti.code,,studenti.age,studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.mail);if(flag=0)printf(该姓名不存在!n);break;case 3: return;default:printf(请在1-3之间选择n); void modify() int i,item,num; char sex13,s1LEN+1,s2LEN+1; printf(请输入要修改的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(

16、studenti.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 修改E-mail - n); printf(- 8 退出菜单 - n); printf(- n); while(1) printf(请选择子菜单编号:n); scanf(%d,&item); switch(item) case

17、1: printf(请输入新的姓名:n); scanf(%s,s2); strcpy(,s2);break; case 2: printf(请输入新的年龄:n); scanf(%s,&studentnum.age);break; case 3: printf(请输入新的性别:n); scanf(%s,sex1); strcpy(studentnum.sex,sex1);break; case 4: printf(请输入新的出生年月:n); scanf(%s,s2); strcpy(studentnum.time,s2);break; case 5: printf(

18、请输入新的地址:n); scanf(%s,s2); strcpy(studentnum.add,s2);break; case 6: printf(请输入新的电话:n); scanf(%s,s2); strcpy(studentnum.tel,s2);break; case 7: printf(请输入新的E-mail:n); scanf(%s,s2); strcpy(studentnum.mail,s2);break; case 8:return; default:printf(请在1-8之间选择n); void sort() int i,j,*p,*q,s; char temp10; for

19、(i=0;ii;j-) if(strcmp(studenti-1.code,studenti.code)0) strcmp(temp,studentj-1.code); strcmp(studentj-1.code,studentj.code); strcmp(studentj.code,temp); strcmp(temp,); strcmp(,); strcmp(,temp); strcmp(temp,studentj-1.sex); strcmp(studentj-1.sex,

20、studentj.sex); strcmp(studentj.sex,temp); strcmp(temp,studentj-1.time); strcmp(studentj-1.time,studentj.time); strcmp(studentj.time,temp); strcmp(temp,studentj-1.add); strcmp(studentj-1.add,studentj.add); strcmp(studentj.add,temp); strcmp(temp,studentj-1.tel); strcmp(studentj-1.tel,studentj.tel); st

21、rcmp(studentj.tel,temp); strcmp(temp,studentj-1.mail); strcmp(studentj-1.mail,studentj.mail); strcmp(studentj.mail,temp); p=&studentj-1.age; q=&studentj.age; s=*q; *q=*p; void del() int i,j,flag=0; char s1LEN+1; printf(请输入要删除学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.code,s1)=0) flag=

22、1; for(j=i;jn-1;j+) studentj=studentj+1; if(flag=0) printf(该学号不存在!n); if(flag=1) printf(删除成功,显示结果选择菜单6n); n-; void display()int i; printf(所有学生的信息:n); printf(学生学号,学生姓名,年龄,性别,出生年月,地址,电话,E-mail,分别为:n); printf(- n); for(i=0;in;i+) printf(%6s %7s %6d %5s %9s %8s %10s %14s,studenti.code,,studenti.age,studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.mail);void save()int i,flag=0;FILE *fp; if(fp=fopen(student.list,wb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论