好大一个家教学设计C语言 设计

1633人阅读
第一次写这么长的程序,代码仅供参考,有问题请留言。
** 学生信息管理系统
** IDE:Dev-Cpp 4.9.9.2
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &algorithm&
#include &vector&
using std::
using std::
/*==存储单元节点==*/
struct student{
//字符数组方便统一输入
char name[50], address[100], email[50], id[20],
age[5], birth[20], tel[20], gender[5];
vector&student&
/*==========函数声明区==========*/
/*-打印主菜单声明-*/
void printMainMenu();
/*-主界面各函数声明-*/
void enterInformation();
void browseInformation();
void inquireInformation();
void modifyInformation();
void deleteInformation();
void saveToFile();
void readFromFile();
void exitInformation();
/*--主界面函数的子函数声明--*/
void inquireOneStudent(student *);
void modifyOneStudent(student *);
/*--修改单项信息--*/
void modifyOneId(student *);
void modifyOneName(student *);
void modifyOneAge(student *);
void modifyOneGender(student *);
void modifyOneBirth(student *);
void modifyOneTel(student *);
void modifyOneAddress(student *);
void modifyOneEmail(student *);
void modifyToMain(student *); //这个其实不需要形参,只是为了统一跳转表接口
/*--删除一个学生--*/
void deleteOneStudent(student *);
/*--显示一个学生的所有信息--*/
void displayOneStudent(student *);
/*--浏览方式--*/
void browsePlain(); //直接浏览
void browseById();
void browseByName();
void browseByBirth();
void browseToMain();
/*--查询方式--*/
void inquireById();
void inquireByName();
/*-函数指针数组-*/
void (*mainPointerArr[])() = {
exitInformation, enterInformation,
browseInformation, inquireInformation,
modifyInformation, deleteInformation, saveToFile, readFromFile
void (*modifyOne[])(student *) = {
modifyToMain, modifyOneId, modifyOneName,
modifyOneAge, modifyOneGender, modifyOneBirth,
modifyOneTel, modifyOneAddress, modifyOneEmail
void (*browseArray[])() = {
browseToMain, browsePlain, browseById,
browseByName, browseByBirth
/*==========函数定义区==========*/
/*-主界面菜单函数-*/
void printMainMenu(){
printf(&\t\t\t河南理工大学学生信息管理系统\n\n&);
printf(&\t\t
======================================\n&);
printf(&\t\t
||\t\t1、学生信息录入 \t||\n&);
printf(&\t\t
||\t\t2、学生信息浏览 \t||\n&);
printf(&\t\t
||\t\t3、学生信息查询 \t||\n&);
printf(&\t\t
||\t\t4、学生信息修改 \t||\n&);
printf(&\t\t
||\t\t5、学生信息删除 \t||\n&);
printf(&\t\t
||\t\t6、学生信息存档 \t||\n&);
printf(&\t\t
||\t\t7、学生信息读档 \t||\n&);
printf(&\t\t
||\t\t0、退出管理系统 \t||\n&);
printf(&\t\t
======================================\n&);
printf(&\t\t\t\t\t\t原创作者:邱正钢\n&);
printf(&\t\t\t\t\t\t完成时间:日\n&);
printf(&\t\t\t\t\t\tEmail:\n&);
printf(&请选择功能:&);
scanf(&%d&, &num);
(*mainPointerArr[num])();
/*-信息录入-*/
void enterInformation(){ //1
system(&cls&);
printf(&输入学生信息:\n&);
printf(&请输入学号:&);
while(gets(temp.id) && !strlen(temp.id))
; //过滤缓存回车
printf(&请输入姓名:&);
while(gets(temp.name) && !strlen(temp.name))
; //过滤缓存回车
printf(&请输入年龄:&);
while(gets(temp.age) && !strlen(temp.age))
; //过滤缓存回车
printf(&请输入性别:&);
while(gets(temp.gender) && !strlen(temp.gender))
; //过滤缓存回车
printf(&请输入生日:&);
while(gets(temp.birth) && !strlen(temp.birth))
; //过滤缓存回车
printf(&请输入电话:&);
while(gets(temp.tel) && !strlen(temp.tel))
; //过滤缓存回车
printf(&请输入地址:&);
while(gets(temp.address) && !strlen(temp.address))
; //过滤缓存回车
printf(&请输入Email:&);
while(gets(temp.email) && !strlen(temp.email))
; //过滤缓存回车
myvec.push_back(temp);
system(&cls&);
printf(&OK,录入成功,该学生信息如下:\n&);
len = myvec.size() - 1;
inquireOneStudent(&myvec[len]);
void browseInformation(){
if(myvec.empty()){
printf(&没有检测到任何学生信息!请在录入后再浏览!\n系统将返回到主界面\n&);
system(&pause&);
browseToMain();
printf(&请选择功能:\n&);
printf(&1、直接浏览\n&);
printf(&2、按学号排序后浏览\n&);
printf(&3、按姓名排序后浏览\n&);
printf(&4、按生日排序后浏览\n&);
printf(&0、返回主菜单\n&);
scanf(&%d&, &num);
(*browseArray[num])();
browseInformation();
void inquireInformation(){ //3
if(myvec.empty()){
printf(&没有数据,无法查询!系统将退到主菜单\n&);
system(&pause&);
browseToMain();
printf(&请选择功能:&);
printf(&1、输入学号查询\n&);
printf(&2、输入姓名查询\n&);
printf(&0、返回主菜单\n&);
scanf(&%d&, &num);
if(num == 1) inquireById();
else if(num == 2) inquireByName();
system(&pause&);
browseToMain();
void modifyInformation(){ //4
printf(&请输入要更改的学生学号:&);
char buf[20];
while(gets(buf), !strlen(buf))
; //依然是过滤空串
vector&student&::iterator it = myvec.begin();
for( ; it != myvec.end(); ++it){
if(strcmp(buf, it-&id) == 0){
modifyOneStudent(&myvec[it - myvec.begin()]);
printf(&没有找到!\n&);
void deleteInformation(){
if(myvec.empty()){
printf(&没有数据可供删除,系统将返回到主菜单。\n&);
system(&pause&);
browseToMain();
printf(&请选择功能:\n&);
printf(&1、清空所有数据\n&);
printf(&2、删除特定学生的信息\n&);
printf(&0、返回主菜单\n&);
scanf(&%d&, &num);
if(1 == num){
myvec.clear();
printf(&成功清除所有信息\n&);
}else if(2 == num){
char buf[20];
printf(&请输入学生学号:&);
while(gets(buf), !strlen(buf))
vector&student&::iterator it = myvec.begin();
for( ; it != myvec.end(); ++it){
if(!strcmp(buf, it-&id)){
deleteOneStudent(&myvec[it - myvec.begin()]);
printf(&未找到该学生!\n&);
system(&pause&);
browseToMain();
void saveToFile(){
if(myvec.empty()){
printf(&数据为空,无法存储,请在录入信息后再存储到文件!系统将返回到主菜单!\n&);
system(&pause&);
browseToMain();
FILE *fp = fopen(&studentInformation.txt&, &w&);
vector&student&::iterator it = myvec.begin();
for( ; it & myvec.end(); ++it){
fprintf(fp, &%s\n&, it-&id);
fprintf(fp, &%s\n&, it-&name);
fprintf(fp, &%s\n&, it-&age);
fprintf(fp, &%s\n&, it-&gender);
fprintf(fp, &%s\n&, it-&birth);
fprintf(fp, &%s\n&, it-&tel);
fprintf(fp, &%s\n&, it-&address);
fprintf(fp, &%s\n&, it-&email);
fclose(fp);
printf(&OK, 存档完成!系统将返回到主界面。\n&);
system(&pause&); browseToMain();
void readFromFile(){
FILE *fp = fopen(&studentInformation.txt&, &rb&);
if(fp == NULL){
printf(&未检测到存档文件!系统将返回到主界面。\n&);
system(&pause&);
browseToMain();
myvec.clear();
while(fscanf(fp, &%s&, it.id) == 1){
fscanf(fp, &%s&, it.name);
fscanf(fp, &%s&, it.age);
fscanf(fp, &%s&, it.gender);
fscanf(fp, &%s&, it.birth);
fscanf(fp, &%s&, it.tel);
fscanf(fp, &%s&, it.address);
fscanf(fp, &%s&, it.email);
myvec.push_back(it);
fclose(fp);
if(myvec.empty()){
printf(&读取存档失败!系统将返回到主界面!\n&);
printf(&读取存档成功!系统将返回到主界面!\n&);
system(&pause&);
browseToMain();
void exitInformation(){
printf(&感谢您的使用!再见\n&);
system(&pause&);
exit(EXIT_SUCCESS);
void displayOneStudent(student *stu){
printf(&*****************************\n&);
printf(&学号:%s\n&, stu-&id);
printf(&姓名:%s\n&, stu-&name);
printf(&年龄:%s\n&, stu-&age);
printf(&性别:%s\n&, stu-&gender);
printf(&生日:%s\n&, stu-&birth);
printf(&电话:%s\n&, stu-&tel);
printf(&地址:%s\n&, stu-&address);
printf(&Email:%s\n&, stu-&email);
printf(&*****************************\n&);
void inquireOneStudent(student *stu){
displayOneStudent(stu);
printf(&请选择操作:\n&);
printf(&1、更改该学生信息\n&);
printf(&2、删除该学生信息\n&);
printf(&0、返回主菜单\n&);
label: scanf(&%d&, &num);
if(num == 1) modifyOneStudent(stu);
else if(num == 2) deleteOneStudent(stu);
else if(num == 0) modifyToMain(stu);
void modifyOneStudent(student *stu){
system(&cls&);
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、修改Email\n&);
printf(&0、返回主菜单\n&);
scanf(&%d&, &num);
(*modifyOne[num])(stu);
void modifyOneId(student *stu){
printf(&请输入新的学号:&);
while(gets(stu-&id) && !strlen(stu-&id))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneName(student *stu){
printf(&请输入新的姓名:&);
while(gets(stu-&name) && !strlen(stu-&name))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneAge(student *stu){
printf(&请输入新的年龄:&);
while(gets(stu-&age) && !strlen(stu-&age))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneGender(student *stu){
printf(&请输入新的性别:&);
while(gets(stu-&gender) && !strlen(stu-&gender))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneBirth(student *stu){
printf(&请输入新的生日:&);
while(gets(stu-&birth) && !strlen(stu-&birth))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneTel(student *stu){
printf(&请输入新的电话:&);
while(gets(stu-&tel) && !strlen(stu-&tel))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneAddress(student *stu){
printf(&请输入新的地址:&);
while(gets(stu-&address) && !strlen(stu-&address))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyOneEmail(student *stu){
printf(&请输入新的Email:&);
while(gets(stu-&email) && !strlen(stu-&email))
; //过滤缓存回车
printf(&修改成功!更改后的学生信息如下:\n&);
inquireOneStudent(stu);
void modifyToMain(student *stu){
system(&cls&);
printMainMenu();
void deleteOneStudent(student *stu){
vector&student&::
it = myvec.begin() + (stu - &myvec[0]);
myvec.erase(it);
printf(&删除成功!\n&);
/*--cmp函数定义--*/
bool cmpById(student a, student b){
if(strcmp(a.id, b.id) & 0)
bool cmpByName(student a, student b){
if(strcmp(a.name, b.name) & 0)
bool cmpByBirth(student a, student b){
if(strcmp(a.birth, b.birth) & 0)
/*--浏览方式--*/
void browsePlain(){ //直接浏览
if(myvec.empty()){
printf(&数据为空!将返回主菜单。\n&);
system(&pause&);
modifyToMain(NULL);
vector&student&::iterator stu = myvec.begin();
for( ; stu != myvec.end(); ++stu)
displayOneStudent(&myvec[stu - myvec.begin()]);
void browseById(){
if(myvec.empty()){
printf(&数据为空!将返回主菜单。\n&);
system(&pause&);
modifyToMain(NULL);
sort(myvec.begin(), myvec.end(), cmpById);
vector&student&::iterator stu = myvec.begin();
for( ; stu != myvec.end(); ++stu)
displayOneStudent(&myvec[stu - myvec.begin()]);
void browseByName(){
if(myvec.empty()){
printf(&数据为空!将返回主菜单。\n&);
system(&pause&);
modifyToMain(NULL);
sort(myvec.begin(), myvec.end(), cmpByName);
vector&student&::iterator stu = myvec.begin();
for( ; stu != myvec.end(); ++stu)
displayOneStudent(&myvec[stu - myvec.begin()]);
void browseByBirth(){
if(myvec.empty()){
printf(&数据为空!将返回主菜单。\n&);
system(&pause&);
modifyToMain(NULL);
sort(myvec.begin(), myvec.end(), cmpByBirth);
vector&student&::iterator stu = myvec.begin();
for( ; stu != myvec.end(); ++stu)
displayOneStudent(&myvec[stu - myvec.begin()]);
void browseToMain(){
system(&cls&);
printMainMenu();
/*--查询方式--*/
void inquireById(){
printf(&请输入要查询的学生学号:&);
char buf[20]; int ok = 0;
while(gets(buf), !strlen(buf))
; //依然是过滤空串
vector&student&::iterator it = myvec.begin();
for( ; it != myvec.end(); ++it){
if(strcmp(buf, it-&id) == 0){
displayOneStudent(&myvec[it - myvec.begin()]);
if(0 == ok) printf(&没有找到!\n&);
void inquireByName(){
printf(&请输入要查询的学生姓名:&);
char buf[20]; int ok = 0;
while(gets(buf), !strlen(buf))
; //依然是过滤空串
vector&student&::iterator it = myvec.begin();
for( ; it != myvec.end(); ++it){
if(strcmp(buf, it-&name) == 0){
displayOneStudent(&myvec[it - myvec.begin()]);
if(0 == ok) printf(&没有找到!\n&);
/*==========主函数==========*/
int main(){
printMainMenu();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:507476次
积分:11873
积分:11873
排名:第1242名
原创:694篇
转载:10篇
评论:54条
(3)(1)(2)(1)(6)(28)(20)(55)(65)(8)(105)(96)(35)(42)(76)(57)(104)(1)大一C语言课程设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
大一C语言课程设计
&&两道小题,一道大题,大题是,班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
大一C语言课程设计报告
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口导读:……__…__…_…__…__…__…_…__…_…号…效学)线(__…无_…_,学年度第二学期期末考试,C语言程序设计试卷试卷A,1、本试卷共6页,2、闭卷考试,所有的答案都必须写在答题纸上,判卷以答题纸上答案为准,3、本试卷适用于、3班,摇⒌ハ钛≡裉(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的,共20分)1、在C语言中,2、不属于C语言基 … …__…__…_…__…__…__…_…__…_… 号…效学) 线
__…无_… _… _ … __ __…题_… _… _ _… _ _名…答… 姓…
班封内( _ _… _ _ _ _… _…_线_… _ _… 级…
_… __…封_ _… _ _… _… _ _…院)密学密_(__…__…__…_…__…__…__…_…__…_………四川师范大学计算机科学学院 学年度第二学期期末考试
C语言程序设计试卷
答卷说明: 1、 本试卷共6页,答题纸3页,4个大题,35个小题,满分100分,120分钟完卷。 2、 闭卷考试,所有的答案都必须写在答题纸上,判卷以答题纸上答案为准。
3、 本试卷适用于、3班。
题号 一 二 三 四 总分 总分人 分数
得分 评卷人
摇 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共20分) 1、 在C语言中,下列标识符中合法的是(
2、 不属于C语言基本数据类型的是(
D). unsigned
3、 下面是对宏定义的描述。不正确的是(
A). 宏不存在类型问题,宏名无类型,它的参数也无类型 B). 宏替换不占用运行时间 C). 宏替换只是字符串的简单替代 D). 宏替换时先检查类型,类型一致时才可以替换
4、 C语言中,″\\\\xfds″在内存中占用的字节数是(
5、 设则执行printf(″%x\\n″,~x^x);的结果是(
) A). ffffffff
6、 对于while语句,错误的说法是(
) A).用条件控制循环体的执行次数 B).循环体至少要执行一次 C).循环体有可能一次也不执行
D).循环体中可以包含若干条语句
计算机科学学院
C语言程序设计 试卷A
第1页(共8页) 7、 执行下列语句后输出的结果是(
) int a=8,b=7,c=6; if(ac){a=c;c=b;} printf(\A).6,7,7
B).6,7,8
C).8,7,6
D).8,7,8 8、 设int a=9,b=20;则printf(″%d,%d\\n″,a--,--b);的输出结果是(
) A).9,19
9、 设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\\0′};那么(
) A).x数组的长度等于y数组的长度
B).x数组的长度大于y数组的长度 C).x数组的长度少于y数组的长度
D).x数组与y数组的存储区域相同
10、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是(
) for(i=0;i<3;i++) printf(″%d″,x[i][2-i]); A).147
11、执行完下列语句后,n的值是(
) for (n=0 ; n<100 ; n=2*n+1); A).125
12、有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果(
13、为了连接两个字符串s1与s2,应当使用(
) A). strcat( s1,s2 )
B). strcpy( s1, s2 )
C). strlen( s1, s2 )
D). strcmp( s1, s2 )
14、设int a,*p;则语句p=&a;中的运算符“&”的含义是(
) A).位与运算
B).逻辑与运算
C).取指针内容
D).取变量地址
15、下面输出的结果为(
) int a=13, b=64; printf(“%d\\n”, !a || (b>>3) ); A).13
16、下列定义正确的是(
) A).enum t={a,b}x;
B). enum t{1,2}x;
C). enum {′+′,′-′}x;
D). enum t{a,b}x; 17、设有定义:struct u{int a[4];float b[3]; char c[16];} 则printf(″%d\\n″,sizeof(aa));的输出是(
D).8 计算机科学学院
C语言程序设计 试卷A
第2页(共8页)
… …__…__…_…__…__…__…_…__…_… 号…效学) 线
__…无_… _… _ _… _ __…题_… _… _ _… _ _名…答… 姓…
班封内( _ _… _ _ _ _… _…_线_… _ _… 级…
_… __…封_ _… _ _… _… _ _…院)密学密_(__…__…__…_…__…__…__…_…__…_………18、数据-54.78在文本文件中占用的字节个数是(
19、在宏定义#define p(r) 3.14*r中,请问宏名是(
p(r) 3.14*r
20、要打开一个已存在的用于修改的非空二进制文件“hello.txt”,正确语句是(
A). fp=fopen( \
B). fp=fopen( \C). fp=fopen( \
D). fp=fopen( \ 得分 评卷人
二、填空题(仔细阅读每小题的说明和源代码,并将正确答案写到答题纸上对应的题号处。每小题4分,共36分) 1. 以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空. #include
int main(int argc, char* argv[]) 21:
float x,amax,
scanf(\22:
amax=x; amin=x;
if(x>amax)
printf(\%f\\namin=%f\\n\
2. 下面程序的功能是比较字符数组a和字符数组b中的两个字符串是否相等(比较对应字符,全部相同输出0,如果不同,返回第一个不相同的字符差值,并输出)。 计算机科学学院
C语言程序设计 试卷A
第3页(共8页) #include
int main(void) { char a[100]=\char b[100]=\
23 /* 完成对应字符的比较,并判定一个字符串是否结束了*/ while(
} printf(\return 0; }3. 就以下程序空缺的地方进行填空。
4.以下程序对一个3×3的矩阵进行行列互换。
int main(int argc, char* argv[])
int main(int argc, char* argv[]) {
char str[81],*
int a[3][3]={1,2,3,4,5,6,7,8,9};
for( i=0 ; i<3; i++)
for(i=0;i<80;i++)
for( j=0; (
temp=a[i][j],
str[i]=getchar(); (
if(str[i]=='\\n')
for(i=0;i<3;i++)
while(*sptr)
for(j=0;j<3;j++)
计算机科学学院
C语言程序设计 试卷A
第4页(共8页)
三、阅读下列程序,将输出结果写到答题纸上对应的题号处。(本大题共4小题,每小题5分,共20分) 评卷人
_ ___…_…__…__…__…_…__…_… 号…效学) 线
__…无_… _… _ _… _ __…题_… _… _ _… _ _名…答… 姓…
班封内( _ _ … _ _…
_ _ _…线 __……
_… __…封_ _… _ _… _… _ _…院)密学密_(__…__…__…_…__…__…__…_…__…_……… 30题:
31题: #include
int fun(int x)
int main(void) {
{ char str[100]=\
char *p= &str[7];
static int z=3;
str[i] != '\\0';
i++, p++ )
return(x+y+z);
{ if( *p>='a' && *p<'z' ) }
(*p)++; void main( )
else if( *p == 'z' ) {
int i,x=2;
for(i=0;i<2;i++)
puts( str );
return 0; }
32题: 33题: #include
int a1=300,a2=400; int gcd(int m,int n) void sub1(int x,int y) { {
else if(m>n)
return gcd(m-n,n); }
void main( )
return gcd(m,n-m); { }
int a3=100,a4=200; void main( )
sub1(a3,a4); {
sub1(a1,a2);
printf(\ printf(\} } 计算机科学学院
C语言程序设计 试卷A
第5页(共8页) 包含总结汇报、党团工作、外语学习、考试资料、人文社科、行业论文、专业文献、经管营销、办公文档、IT计算机以及大学大一C语言程序设计期末考试试卷及答案等内容。本文共2页
相关内容搜索}

我要回帖

更多关于 好大一棵树 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信